跳至页脚内容
产品比较

IronPDF和ExpertPDF for .NET之间的比较

C# 开发人员在读取、写入、创建或在不同文件格式之间转换 PDF 文件时总是面临挑战。 然而,随着众多库的出现,这些问题得到了有效解决,这些库的轻松集成使它们在 C# 应用程序中变得更加流行和易于使用。

本文旨在比较两个最受欢迎的 .NET Framework 和 .NET Core 开发人员的 PDF 库:

  • IronPDF
  • ExpertPDF

这两个库都是 .NET C# 库,提供生成、转换和编辑 .NET 和 .NET Core 中的 PDF 的方法。 主要的问题是决定哪个 C# PDF 库最适合我们的项目。 在本文中,我们将以最全面的方式比较这两个库,突出它们的显著特性,以便您在为项目选择合适的库时做出明智的决定。

首先,让我们看看这两个库有什么可以提供的,然后我们将继续进行比较。

IronPDF 库

IronPDF 是一个全面的 .NET PDF 库解决方案,特别适合 C# 开发人员。 借助此库,您可以轻松实现创建优秀 PDF 读取器或 PDF 查看器所需的所有功能。

IronPDF 拥有一个 .NET Chromium 引擎,可以将 HTML 内容渲染到 PDF 文档中,使设计或定位 PDF 更加容易,无需复杂的 API。它的 HTML 到 PDF 转换器可以使用 HTML5、CSS、JavaScript 和图像创建 .NET PDF 库。 此外,它允许您轻松编辑 PDF、添加页眉和页脚以及从 PDF 中提取图像。 此外,它使读取 PDF 文本成为一个简单的过程。

特点

创建 PDF 文件(HTML 到 PDF)

  • 从 HTML、CSS 和 JavaScript 创建 PDF 文件
  • 从网站 URL 生成 PDF 文档
  • 使用自定义登录凭据加载网页 URL

无需 Adobe Acrobat Reader 的 PDF 编辑器

  • 填写和读取 PDF 完全可编辑的表单数据字段
  • 从 PDF 中提取文本和图像
  • 在任何现有页面上盖上 HTML 内容
  • 添加 HTML 页眉和页脚
  • 添加注释并数字签名 PDF 文档

处理 PDF 文档

  • 加载和解析现有文档
  • 合并和拆分文档中的内容
  • 添加水印、文本和资源

从多种文件格式转换

  • 仅需三行代码即可转换 ASPX WebForms
  • 将 HTML 转换为 PDF 文件
  • 将图像(PNG、JPG、GIF、TIFF)转换为 PDF

保存和打印

  • 保存文件为二进制数据或 MemoryStreams
  • 打印 CSS 媒体类型
  • 将 PDF 文件转换为打印文档对象并无需 Adobe 打印

ExpertPDF

访问 ExpertPDF 官方网站了解详细信息,了解更多关于其 .NET 库的信息,该库可让开发人员实时从 HTML 转换为 PDF。 如果您需要生成 PDF 报告或制作 PDF 阅读器,则不再需要使用复杂的报告生成软件。

ExpertPDF 易于使用,但仍然是一个强大的 PDF 编辑器。 它包含一个高端 HTML 转 PDF 转换器,可以在几分钟内实现到任何 .NET 应用程序中。 它可以与 .NET Framework、.NET Core、.NET 5 和 .NET 6 一起使用。

它是一个强大的 .NET 库,可帮助您创建 PDF 查看器和文档,来自任何网页 URL 或原始 HTML 标记、字符串或文件在 .NET Framework 或 .NET Core 应用程序中。

突出特点

以下是一些重要的特点:

  • 将 URL 网页转换为 PDF
  • 将 HTML 字符串转换为 PDF
  • 多种输出文件选项
  • 设置页面边距和大小
  • 设置页眉和页脚
  • 添加自动和自定义分页符
  • 仅转换网页的特定部分为 PDF
  • 转换时隐藏网页中的特定元素为 PDF
  • 将多个网页合并为单个 PDF
  • 转换需要身份验证的网页为 PDF
  • 选择 CSS 媒体(屏幕或打印)类型进行渲染
  • 书签支持
  • 数字签名支持
  • 检索 PDF 中的 HTML 元素位置
  • 支持最新的 HTML5/CSS3
  • 支持如开放类型和真实类型的网页字体
  • 文件类型转换:
    • PDF 到文本转换器
    • HTML 到 PDF 转换器
    • HTML 到图像转换器
    • PDF 到图像转换器
    • RTF 到 PDF 转换器

文章的其余部分将涵盖以下主题:

  1. 创建控制台项目
  2. IronPDF 安装
  3. ExpertPDF 安装
  4. 从 URL 创建 PDF
  5. 从 HTML 输入字符串创建 PDF
  6. 合并多个 PDF 为单个 PDF
  7. 将图像转换为 PDF
  8. 许可和定价
  9. 结论

1. 创建控制台项目

按照以下步骤使用 Visual Studio 2022 在 C# 中创建控制台应用程序:

  • 打开 Visual Studio 2022 并点击创建新项目

Visual Studio 2022

  • 选择 C# 控制台应用并单击下一步

新项目对话框

  • 从下一个屏幕中输入项目名称并单击下一步

Web 表单

  • 为您的应用程序选择 .NET 框架。 我们将使用最新版本 6.0。

附加信息

现在我们的控制台项目已创建,我们已准备好测试我们的库。 但是,我们仍然需要在项目中设置它们。 让我们先安装 IronPDF。

2. IronPDF 安装

有多种方法可以下载和安装 IronPDF 库。 具体如下

  1. 使用 Visual Studio
  2. 直接下载 NuGet 包
  3. 下载 IronPDF .DLL 库

2.1. 使用 Visual Studio

Visual Studio 本身提供了 NuGet 包管理器来安装 C# 项目中的所有 NuGet 包。 您可以通过以下方式访问它:

  • 项目菜单工具,或
  • 在解决方案资源管理器中右键单击项目

解决方案资源管理器

![Project Menu > Manage NuGet Packages](/static-assets/pdf/blog/expert-pdf-net-library-alternatives/expert-pdf-net-library-alternatives-6.webp)

选择后,浏览 IronPDF NuGet 包并安装它:

2.2. 直接下载 NuGet 包

另一种方法是从 NuGet 网站下载 IronPDF。直接访问IronPDF NuGet 页面并下载包。 按步骤操作:

  • 转到NuGet IronPDF 包
  • 选择“下载包”
  • 双击下载的包
  • 然后将安装包
  • 重新加载 Visual Studio 并开始使用

2.4. 安装 IronPDF:下载库

您还可以直接从IronPDF 网站下载 IronPDF .DLL 文件。 点击下载 IronPDF DLL进行安装。

接下来,通过以下步骤在项目中引用 IronPDF:

  • 在解决方案资源管理器中右键单击解决方案
  • 选择“添加引用”
  • 浏览 IronPDF.dll 库
  • 点击确定就完成了!

全部完成了! IronPDF 现已安装完毕并可以使用。 不过,在此之前,我们将安装 ExpertPDF 进行比较。

3. ExpertPDF 安装

下载和安装 ExpertPDF 库有两种方法:

  • 使用 Visual Studio NuGet 包管理器用于 .NET Framework、.NET Core、.NET 5、.NET 6
  • 下载程序集(旧的 .NET Framework 版本)

我们将使用新的 .NET Framework,因此我们将使用 NuGet 包管理器安装 ExpertPDF。

3.1. 使用 Visual Studio NuGet Package Manager

与 IronPDF 一样,您可以通过以下方式访问 NuGet 包管理器:

  • 项目菜单工具
  • 在解决方案资源管理器中右键单击项目

解决方案资源管理器

![Project Menu > Manage NuGet Packages](/static-assets/pdf/blog/expert-pdf-net-library-alternatives/expert-pdf-net-library-alternatives-8.webp)

选择后,浏览 ExpertPDF NuGet 包并安装它:

注意: ExpertPDF 仅支持 Windows 操作系统。

4. 从 URL 创建 PDF

这两个库都具备将 HTML 标记转换为 PDF 的能力。 现在,让我们看看每个库的 C# 代码,一一介绍。

4.1. URL 到 PDF 使用 IronPDF

IronPDF 在将现有 URL 从 HTML 渲染为 PDF 时非常简单直接。 它对 CSS、JavaScript、图像和表单提供非常高的支持。

以下代码示例直接从网站 URL 创建 PDF。

// Import the IronPdf library
using IronPdf;

// Initialize a new renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the specified URL as a PDF
var pdf = renderer.RenderUrlAsPdf("https://ironpdf.com/");
// Save the rendered PDF to a file
pdf.SaveAs("url.pdf");
// Import the IronPdf library
using IronPdf;

// Initialize a new renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the specified URL as a PDF
var pdf = renderer.RenderUrlAsPdf("https://ironpdf.com/");
// Save the rendered PDF to a file
pdf.SaveAs("url.pdf");
' Import the IronPdf library
Imports IronPdf

' Initialize a new renderer
Private renderer As New ChromePdfRenderer()
' Render the specified URL as a PDF
Private pdf = renderer.RenderUrlAsPdf("https://ironpdf.com/")
' Save the rendered PDF to a file
pdf.SaveAs("url.pdf")
$vbLabelText   $csharpLabel

4.2. URL 到 PDF 使用 ExpertPDF

ExpertPDF 使用savePdfFromUrlToFile方法将 URL 转换为 PDF,该方法快速、安全且有效。 页面格式与实际网页浏览器上保存的一样。

// Import the ExpertPdf.HtmlToPdf namespace
using ExpertPdf.HtmlToPdf;

// Initialize a new PdfConverter
PdfConverter pdfConverter = new PdfConverter();
// Use PdfConverter to save a webpage URL directly to a PDF file
pdfConverter.SavePdfFromUrlToFile("https://www.html-to-pdf.net/", "output.pdf");
// Import the ExpertPdf.HtmlToPdf namespace
using ExpertPdf.HtmlToPdf;

// Initialize a new PdfConverter
PdfConverter pdfConverter = new PdfConverter();
// Use PdfConverter to save a webpage URL directly to a PDF file
pdfConverter.SavePdfFromUrlToFile("https://www.html-to-pdf.net/", "output.pdf");
' Import the ExpertPdf.HtmlToPdf namespace
Imports ExpertPdf.HtmlToPdf

' Initialize a new PdfConverter
Private pdfConverter As New PdfConverter()
' Use PdfConverter to save a webpage URL directly to a PDF file
pdfConverter.SavePdfFromUrlToFile("https://www.html-to-pdf.net/", "output.pdf")
$vbLabelText   $csharpLabel

5. 从 HTML 输入字符串创建 PDF

IronPDF 和 Expert PDF 都提供了从包含 HTML 的标记字符串创建 PDF 的能力。

5.1. HTML 输入字符串使用 IronPDF

以下代码片段演示了如何使用 HTML 输入字符串渲染 PDF 文档图像。

// Import the IronPdf library
using IronPdf;

// Initialize a new renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render a PDF from HTML string and save it
var pdfDoc1 = renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");
pdfDoc1.SaveAs("pixel-perfect.pdf");

// Render HTML with external assets and save it
var pdfDoc2 = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
pdfDoc2.SaveAs("html-with-assets.pdf");
// Import the IronPdf library
using IronPdf;

// Initialize a new renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render a PDF from HTML string and save it
var pdfDoc1 = renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");
pdfDoc1.SaveAs("pixel-perfect.pdf");

// Render HTML with external assets and save it
var pdfDoc2 = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
pdfDoc2.SaveAs("html-with-assets.pdf");
' Import the IronPdf library
Imports IronPdf

' Initialize a new renderer
Private renderer As New ChromePdfRenderer()
' Render a PDF from HTML string and save it
Private pdfDoc1 = renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>")
pdfDoc1.SaveAs("pixel-perfect.pdf")

' Render HTML with external assets and save it
Dim pdfDoc2 = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", "C:\site\assets\")
pdfDoc2.SaveAs("html-with-assets.pdf")
$vbLabelText   $csharpLabel

5.2. HTML 输入字符串使用 Expert PDF

ExpertPDF HTML 到 PDF 转换器支持从 HTML 字符串到 PDF 的转换。 代码如 URL 到 PDF 简单且不言自明:

// Import the ExpertPdf.HtmlToPdf namespace
using ExpertPdf.HtmlToPdf;

// Initialize a new PdfConverter
PdfConverter pdfConverter = new PdfConverter();
// Use PdfConverter to save an HTML string to a PDF file
pdfConverter.SavePdfFromHtmlStringToFile("<h1>PDF using Expert PDF</h1>", "html-to-pdf.pdf");
// Import the ExpertPdf.HtmlToPdf namespace
using ExpertPdf.HtmlToPdf;

// Initialize a new PdfConverter
PdfConverter pdfConverter = new PdfConverter();
// Use PdfConverter to save an HTML string to a PDF file
pdfConverter.SavePdfFromHtmlStringToFile("<h1>PDF using Expert PDF</h1>", "html-to-pdf.pdf");
' Import the ExpertPdf.HtmlToPdf namespace
Imports ExpertPdf.HtmlToPdf

' Initialize a new PdfConverter
Private pdfConverter As New PdfConverter()
' Use PdfConverter to save an HTML string to a PDF file
pdfConverter.SavePdfFromHtmlStringToFile("<h1>PDF using Expert PDF</h1>", "html-to-pdf.pdf")
$vbLabelText   $csharpLabel

第一个参数是实际的 HTML 字符串,第二个参数是将扫描文档保存到的文件名。

Bootstrap 文档示例

清晰的文档和代码示例对技术库很有帮助。 这个 Bootstrap 5 演示展示了 IronPDF 在语法高亮、警告和结构化布局方面渲染技术文档的能力。

using IronPdf;

var renderer = new ChromePdfRenderer();

string technicalDocs = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    <style>
        .code-block { background: #f8f9fa; border-left: 3px solid #0d6efd; padding: 15px; border-radius: 4px; }
        .api-method { font-family: 'Courier New', monospace; color: #0d6efd; }
        @media print { .card, .alert { page-break-inside: avoid; } }
    </style>
</head>
<body class='bg-light'>
    <div class='container py-4'>
        <div class='card shadow-sm mb-4'>
            <div class='card-header bg-dark text-white'>
                <h2 class='mb-0'>API Reference - HTML to PDF Conversion</h2>
            </div>
            <div class='card-body'>
                <h4>RenderHtmlAsPdf() Method</h4>
                <p class='lead'>Converts HTML content to PDF with full CSS3 and JavaScript support.</p>

                <div class='code-block mb-3'>
                    <code class='api-method'>PdfDocument RenderHtmlAsPdf(string htmlContent)</code>
                </div>

                <div class='row mt-4'>
                    <div class='col-md-6'>
                        <h5 class='text-primary'>Parameters</h5>
                        <table class='table table-sm table-bordered'>
                            <tr>
                                <td><code>htmlContent</code></td>
                                <td>String containing HTML to convert</td>
                            </tr>
                        </table>
                    </div>
                    <div class='col-md-6'>
                        <h5 class='text-success'>Returns</h5>
                        <table class='table table-sm table-bordered'>
                            <tr>
                                <td><code>PdfDocument</code></td>
                                <td>Generated PDF document object</td>
                            </tr>
                        </table>
                    </div>
                </div>
            </div>
        </div>

        <div class='row g-3 mb-4'>
            <div class='col-md-4'>
                <div class='alert alert-success mb-0'>
                    <h6 class='alert-heading'>✓ Supported Features</h6>
                    <ul class='mb-0 small'>
                        <li>HTML5 semantic tags</li>
                        <li>CSS3 with Flexbox/Grid</li>
                        <li>JavaScript execution</li>
                        <li>External stylesheets</li>
                    </ul>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='alert alert-info mb-0'>
                    <h6 class='alert-heading'>ⓘ Rendering Engine</h6>
                    <ul class='mb-0 small'>
                        <li>Chrome V8 Engine</li>
                        <li>98% browser fidelity</li>
                        <li>Sub-second rendering</li>
                        <li>Async/await support</li>
                    </ul>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='alert alert-warning mb-0'>
                    <h6 class='alert-heading'>⚠ ExpertPDF Notes</h6>
                    <ul class='mb-0 small'>
                        <li>Complex API structure</li>
                        <li>Limited CSS3 support</li>
                        <li>No native JavaScript</li>
                        <li>Requires configuration</li>
                    </ul>
                </div>
            </div>
        </div>

        <div class='card shadow-sm'>
            <div class='card-header bg-primary text-white'>
                <h5 class='mb-0'>Code Example Comparison</h5>
            </div>
            <div class='card-body'>
                <div class='row'>
                    <div class='col-md-6'>
                        <h6 class='text-primary'>IronPDF (Simple)</h6>
                        <div class='code-block'>
                            <pre class='mb-0'><code>var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");</code></pre>
                        </div>
                        <div class='badge bg-success mt-2'>3 Lines</div>
                    </div>
                    <div class='col-md-6'>
                        <h6 class='text-warning'>ExpertPDF (Complex)</h6>
                        <div class='code-block'>
                            <pre class='mb-0'><code>var converter = new HtmlToPdfConverter();
converter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
converter.NavigationTimeout = 60;
byte[] result = converter.GetPdfBytesFromHtmlString(html);
File.WriteAllBytes("output.pdf", result);</code></pre>
                        </div>
                        <div class='badge bg-warning text-dark mt-2'>5+ Lines</div>
                    </div>
                </div>
            </div>
            <div class='card-footer text-muted'>
                <small><strong>Comparison:</strong> IronPDF provides a more intuitive API with less configuration overhead for common use cases.</small>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(technicalDocs);
pdf.SaveAs("technical-documentation.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

string technicalDocs = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    <style>
        .code-block { background: #f8f9fa; border-left: 3px solid #0d6efd; padding: 15px; border-radius: 4px; }
        .api-method { font-family: 'Courier New', monospace; color: #0d6efd; }
        @media print { .card, .alert { page-break-inside: avoid; } }
    </style>
</head>
<body class='bg-light'>
    <div class='container py-4'>
        <div class='card shadow-sm mb-4'>
            <div class='card-header bg-dark text-white'>
                <h2 class='mb-0'>API Reference - HTML to PDF Conversion</h2>
            </div>
            <div class='card-body'>
                <h4>RenderHtmlAsPdf() Method</h4>
                <p class='lead'>Converts HTML content to PDF with full CSS3 and JavaScript support.</p>

                <div class='code-block mb-3'>
                    <code class='api-method'>PdfDocument RenderHtmlAsPdf(string htmlContent)</code>
                </div>

                <div class='row mt-4'>
                    <div class='col-md-6'>
                        <h5 class='text-primary'>Parameters</h5>
                        <table class='table table-sm table-bordered'>
                            <tr>
                                <td><code>htmlContent</code></td>
                                <td>String containing HTML to convert</td>
                            </tr>
                        </table>
                    </div>
                    <div class='col-md-6'>
                        <h5 class='text-success'>Returns</h5>
                        <table class='table table-sm table-bordered'>
                            <tr>
                                <td><code>PdfDocument</code></td>
                                <td>Generated PDF document object</td>
                            </tr>
                        </table>
                    </div>
                </div>
            </div>
        </div>

        <div class='row g-3 mb-4'>
            <div class='col-md-4'>
                <div class='alert alert-success mb-0'>
                    <h6 class='alert-heading'>✓ Supported Features</h6>
                    <ul class='mb-0 small'>
                        <li>HTML5 semantic tags</li>
                        <li>CSS3 with Flexbox/Grid</li>
                        <li>JavaScript execution</li>
                        <li>External stylesheets</li>
                    </ul>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='alert alert-info mb-0'>
                    <h6 class='alert-heading'>ⓘ Rendering Engine</h6>
                    <ul class='mb-0 small'>
                        <li>Chrome V8 Engine</li>
                        <li>98% browser fidelity</li>
                        <li>Sub-second rendering</li>
                        <li>Async/await support</li>
                    </ul>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='alert alert-warning mb-0'>
                    <h6 class='alert-heading'>⚠ ExpertPDF Notes</h6>
                    <ul class='mb-0 small'>
                        <li>Complex API structure</li>
                        <li>Limited CSS3 support</li>
                        <li>No native JavaScript</li>
                        <li>Requires configuration</li>
                    </ul>
                </div>
            </div>
        </div>

        <div class='card shadow-sm'>
            <div class='card-header bg-primary text-white'>
                <h5 class='mb-0'>Code Example Comparison</h5>
            </div>
            <div class='card-body'>
                <div class='row'>
                    <div class='col-md-6'>
                        <h6 class='text-primary'>IronPDF (Simple)</h6>
                        <div class='code-block'>
                            <pre class='mb-0'><code>var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");</code></pre>
                        </div>
                        <div class='badge bg-success mt-2'>3 Lines</div>
                    </div>
                    <div class='col-md-6'>
                        <h6 class='text-warning'>ExpertPDF (Complex)</h6>
                        <div class='code-block'>
                            <pre class='mb-0'><code>var converter = new HtmlToPdfConverter();
converter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
converter.NavigationTimeout = 60;
byte[] result = converter.GetPdfBytesFromHtmlString(html);
File.WriteAllBytes("output.pdf", result);</code></pre>
                        </div>
                        <div class='badge bg-warning text-dark mt-2'>5+ Lines</div>
                    </div>
                </div>
            </div>
            <div class='card-footer text-muted'>
                <small><strong>Comparison:</strong> IronPDF provides a more intuitive API with less configuration overhead for common use cases.</small>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(technicalDocs);
pdf.SaveAs("technical-documentation.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

输出:带有 Bootstrap 5 卡片、警告、表格和代码块的专业技术文档 PDF。 IronPDF 准确渲染所有的排版、间距实用程序和网格布局,展示了优越的文档生成能力。

有关综合 CSS 框架支持的详细信息,请参阅Bootstrap 和 Flexbox CSS 指南

6. 将多个 PDF 文件合并为一个 PDF

IronPDF 和 ExpertPDF 都提供将多个 PDF 文件合并到一个 PDF 文件中的功能。此功能对于整合分散的数据并更高效地通过互联网发送非常有用。

6.1. 使用 IronPDF 合并

以下代码渲染两个由不同 HTML 字符串创建的 PDF,然后使用Merge方法合并它们。 此方法是一个单行语句且易于使用。 在渲染时可以向 PDF 设置中添加更多选项。

// Import the IronPdf library
using IronPdf;

// Define HTML strings to convert to PDF
var htmlA = @"<p> [PDF_A] </p>
        <p> [PDF_A] 1st Page </p>
        <div style='page-break-after: always;'></div>
        <p> [PDF_A] 2nd Page</p>";

var htmlB = @"<p> [PDF_B] </p>
        <p> [PDF_B] 1st Page </p>
        <div style='page-break-after: always;'></div>
        <p> [PDF_B] 2nd Page</p>";

// Initialize a new renderer
var renderer = new ChromePdfRenderer();

// Render HTML strings as PDFs
var pdfDocA = renderer.RenderHtmlAsPdf(htmlA);
var pdfDocB = renderer.RenderHtmlAsPdf(htmlB);

// Merge the PDF documents
var mergedPdf = PdfDocument.Merge(pdfDocA, pdfDocB);

// Save the merged PDF
mergedPdf.SaveAs("Merged.pdf");
// Import the IronPdf library
using IronPdf;

// Define HTML strings to convert to PDF
var htmlA = @"<p> [PDF_A] </p>
        <p> [PDF_A] 1st Page </p>
        <div style='page-break-after: always;'></div>
        <p> [PDF_A] 2nd Page</p>";

var htmlB = @"<p> [PDF_B] </p>
        <p> [PDF_B] 1st Page </p>
        <div style='page-break-after: always;'></div>
        <p> [PDF_B] 2nd Page</p>";

// Initialize a new renderer
var renderer = new ChromePdfRenderer();

// Render HTML strings as PDFs
var pdfDocA = renderer.RenderHtmlAsPdf(htmlA);
var pdfDocB = renderer.RenderHtmlAsPdf(htmlB);

// Merge the PDF documents
var mergedPdf = PdfDocument.Merge(pdfDocA, pdfDocB);

// Save the merged PDF
mergedPdf.SaveAs("Merged.pdf");
' Import the IronPdf library
Imports IronPdf

' Define HTML strings to convert to PDF
Private htmlA = "<p> [PDF_A] </p>
        <p> [PDF_A] 1st Page </p>
        <div style='page-break-after: always;'></div>
        <p> [PDF_A] 2nd Page</p>"

Private htmlB = "<p> [PDF_B] </p>
        <p> [PDF_B] 1st Page </p>
        <div style='page-break-after: always;'></div>
        <p> [PDF_B] 2nd Page</p>"

' Initialize a new renderer
Private renderer = New ChromePdfRenderer()

' Render HTML strings as PDFs
Private pdfDocA = renderer.RenderHtmlAsPdf(htmlA)
Private pdfDocB = renderer.RenderHtmlAsPdf(htmlB)

' Merge the PDF documents
Private mergedPdf = PdfDocument.Merge(pdfDocA, pdfDocB)

' Save the merged PDF
mergedPdf.SaveAs("Merged.pdf")
$vbLabelText   $csharpLabel

Merge方法还有一个重载,接受以列举对象形式的多个文档。 您可以在此< a href="/examples/merge-pdfs/">IronPDF 合并 PDF 的代码示例中看到它的用法示例。

请注意,如果正在合并的 PDF 文件包含可编辑表单,合并后的 PDF 的表单字段名称将附加上索引编号。

6.2. 使用 ExpertPDF 合并

ExpertPDF 使用合并 PDF 组件完成此任务。 必须从 NuGet 包管理器中安装此组件才能使用它。 有一个AppendPDFFile方法,它将 PDF 文件附加到 PDFMerge 类对象。 以下是使用 ExpertPDF 创建的两个 PDF 的合并代码:

// Import the ExpertPdf.MergePdf namespace
using ExpertPdf.MergePdf;

// Initialize a new PDFMerge object
PDFMerge pdfMerge = new PDFMerge();
// Append PDF files to the merge object
pdfMerge.AppendPDFFile("output.pdf");
pdfMerge.AppendPDFFile("html-to-pdf.pdf");
// Save the merged PDF to a file
pdfMerge.SaveMergedPDFToFile("merged.pdf");
// Import the ExpertPdf.MergePdf namespace
using ExpertPdf.MergePdf;

// Initialize a new PDFMerge object
PDFMerge pdfMerge = new PDFMerge();
// Append PDF files to the merge object
pdfMerge.AppendPDFFile("output.pdf");
pdfMerge.AppendPDFFile("html-to-pdf.pdf");
// Save the merged PDF to a file
pdfMerge.SaveMergedPDFToFile("merged.pdf");
' Import the ExpertPdf.MergePdf namespace
Imports ExpertPdf.MergePdf

' Initialize a new PDFMerge object
Private pdfMerge As New PDFMerge()
' Append PDF files to the merge object
pdfMerge.AppendPDFFile("output.pdf")
pdfMerge.AppendPDFFile("html-to-pdf.pdf")
' Save the merged PDF to a file
pdfMerge.SaveMergedPDFToFile("merged.pdf")
$vbLabelText   $csharpLabel

7. 将图像转换为 PDF

IronPDF 拥有将各种图像转换为 PDF 文件的能力,而 ExpertPDF 不提供此功能。 然而,ExpertPDF 可以从 PDF 文件中提取图像,也可以将 PDF 文件转换为图像,这是 IronPDF 也提供的功能。

7.1. 将图像转换为 PDF 使用 IronPDF

在 IronPDF 中,可以使用ImageToPdfConverter类轻松地从一个或多个图像中创建 PDF 文档。 您可以从应用程序中的任意文件夹中加载图像。

// Import the IronPdf namespace
using IronPdf;

// Specify the folder containing the image files
var imageFiles = System.IO.Directory.EnumerateFiles(@"C:\project\assets")
                  .Where(file => file.EndsWith(".jpg") || file.EndsWith(".jpeg"));

// Convert the images to a PDF document
var pdfDocument = ImageToPdfConverter.ImageToPdf(imageFiles);
// Save the PDF document
pdfDocument.SaveAs(@"C:\project\composite.pdf");
// Import the IronPdf namespace
using IronPdf;

// Specify the folder containing the image files
var imageFiles = System.IO.Directory.EnumerateFiles(@"C:\project\assets")
                  .Where(file => file.EndsWith(".jpg") || file.EndsWith(".jpeg"));

// Convert the images to a PDF document
var pdfDocument = ImageToPdfConverter.ImageToPdf(imageFiles);
// Save the PDF document
pdfDocument.SaveAs(@"C:\project\composite.pdf");
' Import the IronPdf namespace
Imports IronPdf

' Specify the folder containing the image files
Private imageFiles = System.IO.Directory.EnumerateFiles("C:\project\assets").Where(Function(file) file.EndsWith(".jpg") OrElse file.EndsWith(".jpeg"))

' Convert the images to a PDF document
Private pdfDocument = ImageToPdfConverter.ImageToPdf(imageFiles)
' Save the PDF document
pdfDocument.SaveAs("C:\project\composite.pdf")
$vbLabelText   $csharpLabel

除了将各种图像转换为 PDF 文件之外,IronPDF 还可以将扫描文档、纸质文档和商业文档转换为单独的图像。 它还可以从这些类型的文件中提取图像。

8. 许可和定价

IronPDF 是一个全开放的商业 C# PDF 库,可在 IronPDF 网站上获取。它可用于私人开发并且可以随时用于商业用途进行许可。 为单个项目、单个或多个开发人员、代理机构和全球公司提供多种许可选项。 它还支持 SaaS 和 OEM 再分发。

IronPDF 许可选项

所有许可证均提供 30 天退款保证,附带一年支持和产品更新。 许可证为永久许可证,表示一次性购买,无需额外费用。 单个开发人员和单个项目的轻量包从$799起。

ExpertPDF 提供按开发人员或公司购买许可。 您可以免费试用 ExpertPDF。 您可以在下图中查看许可证功能列表。

ExpertPDF 许可选项

ExpertComponents Toolkit Total 开发者许可证起价 $850,ExpertPDF Toolkit 起价 $750。您还可以单独购买组件。 完整的 ExpertPDF 定价表 可以在网站上找到。

9. 结论

IronPDF 在本地呈现 HTML 到 PDF,因此不需要互联网连接。 实际上,它隐式启动了一个符合标准的真实 Web 浏览器对象。 HTML 渲染完全准确,且为矢量格式,非常适合商业印刷的最高标准。 输出干净,高质量的 PDF 已生成。 它可以用于商业用途,并且所有定价都在其网站上列出,没有任何隐藏费用。

ExpertPDF 的 HTML 到 PDF 转换器库是一种多功能工具,可以将网页和 HTML 代码转换为 PDF 文档,从 ASP.NET 网页生成 PDF 报告,甚至通过电子签名签署合同。 它免费使用,但也可以通过许可获得额外功能。

虽然这两个库都能够处理 PDF 文件,并从流行格式转换,但 IronPDF 相比 ExpertPDF 有一些优势。 IronPDF 提供从更广泛的格式转换,包括 XML、图像和 AngularJS,以及更强大的功能用于生成、格式化和编辑 PDF。 IronPDF 是一个省时的解决方案,推荐给注重效率的务实开发人员。

ExpertPDF 以单独的组件形式提供,必须分别安装,而 IronPDF 是一个完整的软件,所有功能都在一个地方。 对于仅需要单一组件(例如 HTML 到 PDF 转换)的项目,ExpertPDF 可能是一个不错的选择。 IronPDF 的软件包提供终身许可证,无需持续费用,而 ExpertPDF 需要续订。

[{i:(ExpertPDF 是其各自所有者的注册商标。 此网站与 ExpertPDF 无关,不受其赞助或认可。 所有产品名称、徽标和品牌均为其各自所有者的财产。 比较仅供参考,反映的是撰写时的公开信息。]

常见问题解答

如何在C#中将HTML转换为PDF?

你可以使用IronPDF的RenderHtmlAsPdf方法将HTML字符串转换为PDF。你还可以使用RenderHtmlFileAsPdf将HTML文件转换为PDF。

IronPDF和ExpertPDF之间的主要区别是什么?

IronPDF提供更广泛的格式支持和集成功能,包括从HTML创建PDF、编辑和格式转换。ExpertPDF提供简单的HTML到PDF转换,并具有输出文件配置和数字签名选项。

我可以使用这些库从PDF中提取文本和图像吗?

是的,IronPDF允许您从PDF文档中提取文本和图像,使在.NET应用程序中处理和分析PDF内容变得轻松。

这些PDF库有哪些安装选项?

IronPDF和ExpertPDF都可以使用Visual Studio的NuGet包管理器安装。此外,IronPDF的.DLL库可以直接从IronPDF网站下载。

是否可以将多个PDF文件合并成一个文档?

是的,IronPDF提供一个合并方法来将多个PDF合成一个文档。ExpertPDF也提供了一个PDFMerge组件来合并PDF。

IronPDF需要通过互联网连接才能进行HTML到PDF转换吗?

不,IronPDF不需要通过互联网连接进行HTML到PDF转换,这使其成为离线应用程序的可靠选项。

IronPDF有哪些许可选项?

IronPDF提供多种许可选项,包括单个项目、开发者、代理商和企业许可。所有许可都是永久的,并包括30天退款保证和一年的支持和更新。

ExpertPDF可以处理PDF文档的数字签名吗?

是的,ExpertPDF支持PDF文档的数字签名,允许生成安全和经过认证的PDF文件。

C#开发者在处理PDF时面临哪些挑战,这些库如何帮助解决?

C#开发者在读取、写入、创建和转换PDF时经常面临挑战。像IronPDF和ExpertPDF这样的库通过提供强大的HTML到PDF转换、PDF编辑等工具简化了这些任务,便于轻松集成到C#应用程序中。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。