IRONSOFTWAREHOME
使用IRONPDF

如何从PDF文档中解析数据

Curtis Chau
Curtis Chau
Updated: 2026年1月18日

将HTML转换为PDF是许多软件应用中的常见需求,例如生成报告、发票或将网页保存为PDF。 在本文中,我们将探讨三种流行的开源库用于在C#中进行HTML到PDF的转换,审查它们的优缺点,并讨论为什么IronPDF在许多情况下是更好的选择。

HTML到PDF转换器C#开源

1. PuppeteerSharp

HTML转PDF转换器C#开源(.NET库比较):图1

PuppeteerSharp是一个Puppeteer的.NET包装器,这是一个无头的Chromium浏览器。 它使开发人员能够通过利用Chromium渲染引擎将HTML文档转换为PDF。

PuppeteerSharp提供了对渲染过程的精确控制。 下面是一个例子:

using PuppeteerSharp;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // Download Chromium to ensure compatibility with PuppeteerSharp
        await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultChromiumRevision);

        // Launch a headless instance of Chromium browser
        using (var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true }))
        {
            // Open a new browser page
            var page = await browser.NewPageAsync();

            // Set the HTML content for the page
            await page.SetContentAsync("<html><body><h1>Hello, PuppeteerSharp!</h1></body></html>");

            // Generate a PDF from the rendered HTML content
            await page.PdfAsync("output.pdf");
            Console.WriteLine("PDF Generated Successfully!");
        }
    }
}

代码解释

  1. 下载Chromium: PuppeteerSharp会自动下载所需的Chromium版本以确保兼容性。

  2. **启动浏览器:**使用Puppeteer.LaunchAsync()启动无头的Chromium实例。

  3. **设置HTML内容:**使用page.SetContentAsync()将所需HTML加载到浏览器页面中。

  4. **生成PDF:**使用page.PdfAsync()方法生成渲染内容的PDF。

结果是高质量的PDF(output.pdf),精确复制HTML结构和设计。

优点

  • 高保真度渲染: 支持现代Web技术,包括高级CSS和JavaScript。
  • 自动化功能: 除了PDF之外,PuppeteerSharp还可以自动化Web浏览、测试和数据提取。
  • 活跃开发: PuppeteerSharp维护积极并定期更新。

缺点

  • 大文件大小: 需要下载并捆绑Chromium浏览器,增加了部署大小。
  • 资源密集型: 运行浏览器实例可能对系统资源要求较高,特别是对于大型应用。
  • 有限的PDF特定功能: PuppeteerSharp专注于渲染而非增强PDF(例如,添加页眉或页脚)。

2. PDFSharp

HTML转PDF转换器C#开源(.NET库比较):图2

PDFSharp 是一个强大的开源库,用于在C#中创建和操作PDF文件。 虽然它不直接支持HTML渲染,但它在为开发人员提供工具以编程方式生成和编辑PDF文档方面表现出色。

PDFSharp的关键特性

  1. PDF创建: PDFSharp允许开发者从零开始生成新的PDF文件,通过定义页面大小、添加文本、形状、图像等。

  2. 现有PDF的操作: 您可以修改现有的PDF文档,例如合并、拆分或提取内容。

  3. 绘图功能: PDFSharp提供强大的图形功能,使用XGraphics类为PDF文件添加自定义设计。

  4. 轻量级: 它是一个轻量级库,非常适合优先考虑简洁和速度的项目。

using PdfSharp.Pdf;
using PdfSharp.Drawing;
using HtmlAgilityPack;

class Program
{
    static void Main(string[] args)
    {
        // Example HTML content
        string htmlContent = "<html><body><h1>Hello, PdfSharp!</h1><p>This is an example of HTML to PDF.</p></body></html>";

        // Parse HTML using HtmlAgilityPack (You need to add HtmlAgilityPack via NuGet)
        var htmlDoc = new HtmlDocument();
        htmlDoc.LoadHtml(htmlContent);

        // Create a new PDF document
        PdfDocument pdfDocument = new PdfDocument
        {
            Info = { Title = "HTML to PDF Example" }
        };

        // Add a new page to the document
        PdfPage page = pdfDocument.AddPage();

        XGraphics gfx = XGraphics.FromPdfPage(page);
        XFont titleFont = new XFont("Arial", 20, XFontStyle.Bold);
        XFont textFont = new XFont("Arial", 12, XFontStyle.Regular);

        // Draw the parsed HTML content
        int yPosition = 50; // Starting Y position
        foreach (var node in htmlDoc.DocumentNode.SelectNodes("//h1 | //p"))
        {
            if (node.Name == "h1")
            {
                gfx.DrawString(node.InnerText, titleFont, XBrushes.Black, new XRect(50, yPosition, page.Width - 100, page.Height - 100), XStringFormats.TopLeft);
                yPosition += 30; // Adjust spacing
            }
            else if (node.Name == "p")
            {
                gfx.DrawString(node.InnerText, textFont, XBrushes.Black, new XRect(50, yPosition, page.Width - 100, page.Height - 100), XStringFormats.TopLeft);
                yPosition += 20; // Adjust spacing
            }
        }

        // Save the PDF document
        string outputFilePath = "HtmlToPdf.pdf";
        pdfDocument.Save(outputFilePath);
        System.Console.WriteLine($"PDF file created: {outputFilePath}");
    }
}

代码解释

  1. HTML解析:该示例使用HtmlAgilityPack(一个用于解析和操作HTML的开源库)来从<p>标签中提取文本内容。

  2. 绘制内容: PDFSharp的XGraphics类用于将解析的HTML内容作为文本渲染在PDF页面上。

  3. 限制: 这种方法适用于简单的HTML结构,但无法处理复杂的布局、样式或JavaScript。

PDFSharp的优缺点

优点

  • 轻量且易于使用: PDFSharp直观且简单,使其非常适合刚开始进行PDF生成的开发者。
  • 开源和免费: 无需许可费用,并且源代码可用于自定义。
  • 自绘制: 提供出色的能力,从头开始创建带有自定义设计的PDF。

缺点

  • 无HTML到PDF转换: PDFSharp本身不支持将HTML渲染为PDF,需要其他库来解析HTML。
  • 对现代功能的有限支持: 不提供高级功能,如交互式PDF、数字签名或注释。
  • 性能限制: 对于大规模或企业应用,可能不如专业库优化。

3. Pdfium.NET SDK

HTML转PDF转换器C#开源(.NET库比较):图3

Pdfium.NET是基于开源Pdfium项目的综合库,专为.NET应用中的PDF查看、编辑和操作而设计。 它为开发人员提供强大的工具来创建、编辑和提取PDF内容,使其适用于各种用例。 基本上,它是一个免费的HTML到PDF转换库。

Pdfium.NET SDK的关键功能

  1. PDF创建和编辑:

    • 从头生成PDF或从扫描图像生成PDF。
    • 通过添加文本、图像或注释编辑现有PDF。
  2. 文本和图像提取:

    • 从PDF文件格式文档中提取文本和图像以进行进一步处理。
    • 在PDF文档中搜索特定文本。
  3. PDF查看器控件:

    • 在WinForms或WPF应用中嵌入独立的PDF查看器。
    • 支持缩放、滚动、书签和文本搜索。
  4. 兼容性:

    • 可与.NET Framework, .NET Core, .NET Standard, 以及.NET 6+一起使用。
    • 兼容Windows和macOS平台。
  5. 高级功能:

    • 合并和拆分PDF文件。
    • 将PDF渲染为图像用于显示或打印。
using Pdfium.Net.SDK;
using System;

class Program
{
    static void Main(string[] args)
    {
        // Initialize Pdfium.NET SDK functionalities
        PdfCommon.Initialize();

        // Create a new PDF document
        PdfDocument pdfDocument = PdfDocument.CreateNew();

        // Add a page to the document (A4 size in points: 8.27 x 11.69 inches)
        var page = pdfDocument.Pages.InsertPageAt(pdfDocument.Pages.Count, 595, 842);

        // Sample HTML content to be parsed and rendered manually
        var htmlContent = "<h1>Hello, Pdfium.NET SDK!</h1><p>This is an example of HTML to PDF.</p>";

        // Example: Manually render text since Pdfium.NET doesn't render HTML directly
        var font = PdfFont.CreateFont(pdfDocument, "Arial");
        page.AddText(72, 750, font, 20, "Hello, Pdfium.NET SDK!");
        page.AddText(72, 700, font, 14, "This is an example of HTML to PDF.");

        // Save the document to a file
        string outputFilePath = "HtmlToPdfExample.pdf";
        pdfDocument.Save(outputFilePath, SaveFlags.Default);
        Console.WriteLine($"PDF created successfully: {outputFilePath}");
    }
}

代码解释

  1. SDK初始化:PdfCommon.Initialize()方法初始化Pdfium.NET功能。

  2. **创建PDF:**使用PdfDocument.CreateNew()创建一个新的PDF文档。

  3. 添加页面: 按指定尺寸(例如A4大小)将页面插入到PDF中。

  4. 渲染HTML内容: 由于Pdfium.NET SDK本身不支持HTML渲染,您需要手动解析和渲染HTML元素为文本、形状或图像。

  5. **保存PDF:**使用Save()方法将文档保存到文件路径。

优点

  • 允许对PDF创建和编辑进行全面控制。
  • 在绘图和添加文本、图像和形状方面具有灵活性。
  • 在桌面应用程序中查看和操作PDF方面功能强大。

缺点

  • 不直接将HTML转换为PDF。
  • 手动解析和渲染HTML可能很复杂且耗时。
  • 最适合关注PDF编辑和操作而非HTML转换的应用。

IronPDF 简介

HTML转PDF转换器C#开源(.NET库比较):图4

IronPDF是为.NET开发人员设计的专业级库,能够轻松将HTML内容转换为高质量的PDF。 以其可靠性、高级功能和易用性著称,IronPDF简化了开发过程,同时提供精确的渲染和强大的功能。 以下是IronPDF脱颖而出的原因:

主要功能

  1. 直接HTML到PDF转换: 使用IronPDF直接创建包含CSS和JavaScript的HTML内容的PDF文档,转换为格式化的PDF。 仅需几行代码,开发人员就可以从网页、原始HTML字符串或本地HTML文件生成PDF。

  2. 现代渲染能力: 支持最新的Web标准,IronPDF确保复杂布局、样式和交互元素的准确渲染,以将HTML页面转换为PDF。

  3. 高级PDF功能: IronPDF提供广泛的自定义选项,例如添加页眉、页脚、水印、注释和书签。 它还支持合并、拆分和编辑现有PDF。

  4. 性能和可扩展性: 针对小规模应用和企业环境进行了优化,IronPDF为项目的任何规模提供快速、可靠的性能。

  5. 集成简便: 设计用于.NET Framework和.NET Core,IronPDF可顺利集成到C#应用中,为开发人员提供简单直观的安装过程和全面的文档。

为何选择IronPDF?

IronPDF凭借其功能组合、开发者支持和性能从其它解决方案中脱颖而出。 与通常需要大量配置或外部依赖项的开源替代方案不同,IronPDF是一个自包容的解决方案,在不牺牲功能的情况下简化开发。 无论是用于生成发票、报告还是归档网页内容,IronPDF都为开发人员提供所需工具,以快速高效地实现专业级结果。

IronPDF是那些重视可靠性、可扩展性和易用性的HTML到PDF工作流程开发人员的实际选择。

如何使用IronPDF将HTML转换为PDF

using IronPdf;

class Program
{
    static void Main()
    {
        // Specify license key
        IronPdf.License.LicenseKey = "Your Key";

        // Create a new HtmlToPdf object using ChromePdfRenderer
        var Renderer = new ChromePdfRenderer();

        // Define the HTML string to be converted
        string htmlContent = "<html><body><h1>IronPDF: Better than Open source</h1></body></html>";

        // Convert the HTML string to a PDF document
        var document = Renderer.RenderHtmlAsPdf(htmlContent);

        // Save the PDF document to a file
        document.SaveAs("html2Pdf.pdf");

        Console.WriteLine("PDF generated and saved successfully!");
    }
}

代码片段说明

  1. **许可证密钥设置:**程序启动时需设置 IronPDF 许可证密钥,此密钥是解锁该库全部功能所必需的。

  2. 创建渲染器:初始化ChromePdfRenderer的一个实例。 这个组件负责将HTML内容转换为PDF文档,作为原始HTML和最终输出之间的桥梁。

  3. 定义HTML内容:创建一个字符串变量htmlContent来存储将转换为PDF的HTML结构。 在这个例子中,它包含一个简单的标题。

  4. 将HTML转换为PDF:在RenderHtmlAsPdf()方法,传入HTML字符串作为输入。 该函数处理内容并将其转换为PDF文档。

  5. **保存PDF:**最后,使用SaveAs()方法将生成的PDF保存为名为"html2Pdf.pdf"的文件,存储在磁盘上以便日后访问。

输出PDF

HTML转PDF转换器C#开源(.NET库比较):图5

许可证信息(可试用)

IronPDF要求提供有效的许可证密钥以实现全部功能。 您可以从官方网站获得试用许可证。 使用IronPDF库前,按如下所示设置许可证密钥:

IronPdf.License.LicenseKey = "your key";

这确保了库没有限制地运行。

结论

PuppeteerSharp是需要准确渲染HTML到PDF的开发人员的优秀选择,尤其是在处理复杂网页时。 然而,对于需要高级PDF特定功能、性能优化和易集成的应用,专业工具如IronPDF通常是更好的选择。

PDFSharp是轻量级、可编程PDF创建和操作的极佳选择,特别适合需求简单的项目。 但是,如果您的应用需要将HTML转换为PDF或高级PDF功能,IronPDF提供了更高效和功能丰富的解决方案。

虽然Pdfium.NET SDK是一个用于PDF操作的强大工具,但IronPDF在其中提供了对直接HTML到PDF转换的原生支持,包括渲染现代HTML、CSS和JavaScript。 IronPDF通过内置方法如HtmlToPdf.RenderHtmlAsPdf()简化了工作流程,使其对开发者来说更快、更高效。

无论是用于生成发票、报告还是归档网页内容,IronPDF都为开发人员提供所需工具,以快速高效地实现专业级结果。

IronPDF是那些重视可靠性、可扩展性和易用性的HTML到PDF工作流程开发人员的实际选择。

Curtis Chau
技术作家

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

...
阅读更多

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥。

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

OR
bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥。
无需信用卡或创建账户
C# 用于 PDF 的 NuGet 库
通过 NuGet 安装

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解决方案资源管理器中,右键点击引用,管理 NuGet 包
  2. 选择浏览并搜索 “IronPDF”
  3. 选择包并安装
C# PDF DLL
下载 DLL

版本: 2026.9

或在此处下载 Windows 安装程序。

  1. 下载并解压 IronPDF 到您的解决方案目录中的 ~/Libs 之类的位置
  2. 在 Visual Studio 解决方案资源管理器中,右键点击引用。选择浏览,“IronPDF.dll”

$999 起