IRONSOFTWAREHOME
PDF 工具

如何从 PDF 文件中提取页面——分步指南

Curtis Chau
Curtis Chau
Updated: 2026年9月16日

在.NET应用程序中,像将HTML转换为PDF、编辑PDF文件和PDF安全性等与PDF相关的任务是常见需求,但开发人员常常面临输出不一致、功能有限或集成过程复杂等挑战。 对于那些希望简化这些任务的人来说,像IronPDF这样的.NET PDF库提供了一种超越基本HTML到PDF转换的高级解决方案。

本文对IronPDF和DinkToPdf 的渲染能力、功能范围、许可结构和定价进行了比较,并提供了区分它们的操作的代码示例。

了解PDF转换需求

对于.NET开发人员来说,将HTML转换为PDF通常是处理报告、发票和网页内容等文档所需的要求。 然而,任务的复杂性可根据转换的内容而显著不同:

***简单页面:**静态内容(如文本和图像)通常很容易渲染。 ***动态页面:**复杂的布局、媒体、脚本和交互元素需要更强大的解决方案。

除了基本的PDF生成外,现代应用程序通常需要更先进的PDF功能:

***数字签名:**确保文件的真实性和完整性。 ***加密:**使用密码保护敏感数据。 ***水印:**在 PDF 文件中添加自定义品牌标识或安全标记。 ***内容操作:**提取、编辑或向 PDF 添加内容的能力。

对于大多数开发人员来说,选择一个功能不仅仅局限于将 HTML 转换为 PDF 的 PDF 库至关重要。 一套全面的PDF管理工具可以使工作流程更加顺畅和高效。

IronPDF 提供全方位的功能,能够处理简单和复杂的 PDF 任务。DinkToPdf是进行简单 HTML 到 PDF 转换的可靠选择,但团队经常遇到的摩擦是高级 PDF 操作——数字签名、加密、水印和内容编辑超出了DinkToPdf目前的范围。 在本节中,我们将比较每个库如何应对这些挑战,以帮助您确定哪种解决方案最适合您的需求。

工具概览

IronPDF是什么?

IronPDF 是一个 .NET PDF 库,专为需要 HTML 转 PDF 以外功能的开发人员而构建。 其 API 涵盖加密、数字签名、水印、表单处理以及文本或图像提取——所有这些都在一个 NuGet 包中,可在 .NET Framework、.NET Core 和 .NET 5+ 上运行。

HTML 转 PDF 功能由嵌入式 Chromium 引擎驱动,并完全支持 HTML5、CSS3 和 JavaScript。 商业许可证包含详细的文档、100 多个操作的代码示例以及专门的支持团队。

什么是 DinkToPdf?

另一方面,DinkToPdf 是一个基于 Qt WebKit 渲染引擎的开源库,并且是 wkhtmltopdf 库的 .NET Core 封装。 它是一个轻量级解决方案,适合不需要高级功能的较简单和较小的项目。 DinkToPdf在.NET项目中的集成相对简单,可从基本的HTML和URL生成PDF,设置步骤最少。

虽然DinkToPdf库是一个免费的替代方案,但其底层 Qt WebKit 技术已不再积极维护,并且存在已知的功能和安全限制。 由于 Qt WebKit 的开发已于 2016 年停止,其渲染引擎无法完全支持现代 HTML5、CSS3 和 JavaScript 功能。 文档处理、加密和表单填写不在DinkToPdf目前的范围内。DinkToPdf专注于 HTML 渲染,因此,如果团队的需求扩展到这些领域,通常需要添加额外的库或评估替代方案。

以下是本文讨论的各项功能在各库中的对比概览:

特征IronPDFDinkToPdf
渲染引擎Chromium (当前)Qt WebKit(冻结于 2016 年)
HTML5 / CSS3 / JavaScript全面支持部分支持
Bootstrap 5 和 Flexbox支持不支持
数字签名支持不包含
加密与密码支持不包含
水印支持不包含
表格填写支持不包含
许可商业版(免费试用)LGPL
专项支持包括仅限社区

团队在评估IronPDF与DinkToPdf时,可以使用 免费 30 天试用版 测试此比较中的每个功能。

功能深入探讨

IronPDF关键功能(附代码示例)

IronPDF 以单个 NuGet 包的形式提供,可处理 HTML 到 PDF 的转换、数字签名、加密、水印、表单填写和内容提取——无需额外的渲染库。 它适用于 .NET Framework、.NET Core 和 .NET 5+ 项目。 下面的代码示例演示了其中几个功能在实践中的工作原理。

HTML到PDF转换

IronPDF的HTML到PDF转换由其现代Chromium渲染引擎(Blink)提供支持,完全支持HTML5、CSS3和JavaScript。 它可以转换 HTML 页面,同时确保保留原始的 CSS 样式、媒体和 JavaScript 交互性。 这使得它成为需要转换动态内容并确保像素完美结果的开发人员的理想选择。

using IronPdf;

public class Program
{
    public static void Main()
    {
        // Create a ChromePdfRenderer for rendering
        ChromePdfRenderer renderer = new ChromePdfRenderer();

        // Render an HTML file as a PDF
        PdfDocument pdf = renderer.RenderHtmlFileAsPdf("example.html");
        
        // Save the output PDF
        pdf.SaveAs("example.pdf");
    }
}

输出: 本例展示如何使用 ChromePdfRenderer 将一个 HTML 文件(example.html)转换成高质量的 PDF,保留所有样式和脚本。 PDF文件保存为"example.pdf"。

IronPDF 的 HTML 到 PDF 转换输出

URL到PDF转换

IronPDF允许将URL无缝转换为PDF,保留网页的原始布局和样式。 这非常适合需要将整个网页内容捕获为PDF的开发人员。

using IronPdf;

public class Program
{
    public static void Main()
    {
        // Create a ChromePdfRenderer for rendering
        ChromePdfRenderer renderer = new ChromePdfRenderer();

        // Render a URL as a PDF
        PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
        
        // Save the output PDF
        pdf.SaveAs("UrlToPdf.pdf");
    }
}

输出: 本例说明如何通过RenderUrlAsPdf() 方法将网页转换为 PDF 文档。 此方法捕捉整个网页,并将其转换为高质量的PDF文件。

IronPDF URL 到 PDF 示例

PDF签名

IronPDF允许开发人员对PDF应用数字签名。 此功能对于确保文件的真实性和完整性至关重要。 开发人员可以使用证书对PDF进行数字签名,或添加诸如手写签名图像这样的视觉签名。

using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
using IronSoftware.Drawing;

public class Program
{
    public static void Main(string[] args)
    {
        // Load the certificate for signing
        X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "your-password", X509KeyStorageFlags.Exportable);

        // Create a PdfSignature object using the certificate
        var sig = new PdfSignature(cert);

        // Specify a signature image
        sig.SignatureImage = new PdfSignatureImage("IronPdf.png", 0, new Rectangle(150, 100, 350, 250));

        // Sign and save the PDF document
        sig.SignPdfFile("product_report.pdf");
    }
}

**输出:**在本例中,使用经过认证的数字证书对 PDF 应用了不可见的数字签名,以确保其真实性,这对于处理重要或机密文件至关重要。

我们 PDF 上的认证数字签名

自定义水印

IronPDF 的功能远不止于高级 PDF 处理。 除了将 HTML 转换为 PDF 之外,它还允许开发人员操作、提取和编辑 PDF 内容——添加水印、注释以及编辑 PDF 文档中的文本或图像。 在这里,我们演示了如何轻松将自定义水印应用到您的PDF文档中。

using IronPdf;

public class Program
{
    public static void Main()
    {
        // Define the watermark HTML content
        string watermarkHtml = @"
        <img src='https://ironsoftware.com/img/products/ironpdf-logo-text-dotnet.svg'>
        <h1 style='Color: red'>CONFIDENTIAL</h1>";

        // Load an existing PDF document
        var pdf = PdfDocument.FromFile("ConfidentialDocument.pdf");

        // Apply the watermark with specific settings
        pdf.ApplyWatermark(watermarkHtml, opacity: 75, rotation: 45);

        // Save the resultant PDF
        pdf.SaveAs("ConfidentialDocumentWithWatermark.pdf");
    }
}

**输出:**该示例展示了如何使用 HTML 和 CSS 应用自定义水印。 ApplyWatermark 方法允许自定义旋转、位置和不透明度。

有水印的 PDF 示例

如果您想探索IronPDF提供的更多功能,请确保查看其信息丰富的功能页面或包含各项功能深入代码示例的操作指南。

DinkToPdf关键功能(附代码示例)

DinkToPdf 是一个轻量级库,它使用旧版 Qt WebKit 渲染引擎实现 HTML 到 PDF 的转换。请注意,Qt WebKit 已停止维护,其渲染引擎不再完全支持现代 Web 标准。 它是一个简单的开源解决方案,用于从基本HTML和URL生成PDF。 高级 PDF 编辑功能和现代网络标准支持不在其范围内,但它可以有效地渲染简单的结构化文档、发票和报告。 让我们通过实际示例探索其一些关键功能。

HTML 至 PDF 转换

DinkToPdf允许开发人员轻松将HTML内容转换为PDF,这使得它适用于生成发票、报告和网页的可打印版本。

using DinkToPdf;
using DinkToPdf.Contracts;

public class Program
{
    public static void Main()
    {
        // Create a converter with the basic PDF tools
        var converter = new BasicConverter(new PdfTools());

        // Define the document's global and object settings
        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = new GlobalSettings()
            {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Portrait,
                PaperSize = PaperKind.A4,
                Out = "HtmlToPdf.pdf"
            },
            Objects =
            {
                new ObjectSettings()
                {
                    PagesCount = true,
                    HtmlContent = "<h1>Hello, World!</h1><p>This is a PDF generated using DinkToPdf.</p>",
                    WebSettings = { DefaultEncoding = "utf-8" }
                }
            }
        };

        // Perform the conversion
        converter.Convert(doc);
    }
}

输出: 在这个例子中,创建一个BasicConverter实例来处理 PDF 转换。 HtmlToPdfDocument 对象定义了 PDF 的设置,如纸张大小和输出文件。HTML 内容在 ObjectSettings 中指定。

DinkToPdf HTML 到 PDF 示例

URL到PDF转换

DinkToPdf还可以将动态网页转换为PDF格式,非常适合捕获网络报告、仪表板或任何动态内容。

// Similar to HTML-to-PDF with the Page property set to a URL
// (Example code is unavailable in the original content and left as a description)

**输出:**此示例采用与 HTML 到 PDF 转换类似的方法,但将 Page 属性设置为 URL。 Qt WebKit引擎捕捉网页并将其转换为PDF,尽管在现代CSS3功能和JavaScript上可能有限制。

 URL 到 PDF 转换示例

自定义页面设置(边距、页眉和页脚)

DinkToPdf提供对页面设置的精细控制,允许开发人员设置自定义边距、页眉和页脚,实现专业文档布局。

using DinkToPdf;
using DinkToPdf.Contracts;

public class Program
{
    public static void Main()
    {
        // Create a converter with the basic PDF tools
        var converter = new BasicConverter(new PdfTools());

        // Define the document's global and object settings
        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = new GlobalSettings()
            {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Portrait,
                PaperSize = PaperKind.A4,
                Out = "FormattedPdf.pdf",
                Margins = new MarginSettings() { Top = 10, Bottom = 10, Left = 15, Right = 15 }
            },
            Objects =
            {
                new ObjectSettings()
                {
                    HtmlContent = "<h1>Formatted PDF</h1><p>With custom margins and headers.</p>",
                    WebSettings = { DefaultEncoding = "utf-8" },
                    HeaderSettings = { Center = "Custom Header", FontSize = 10 },
                    FooterSettings = { Right = "Page [page] of [toPage]", FontSize = 10 }
                }
            }
        };

        // Perform the conversion
        converter.Convert(doc);
    }
}

**输出:**此示例为 PDF 添加自定义格式。 MarginSettings 指定边距,而 HeaderSettings 和 FooterSettings 定义显示页码的自定义页眉和页脚,用于专业版式。

自定义页面设置示例

定价和许可

在为.NET项目选择PDF库时,许可和成本方面的考虑是至关重要的。 IronPDF和DinkToPdf采用不同的许可模式,正确的选择取决于您项目的预算、需求和对支持的需要。

DinkToPdf许可和费用

DinkToPdf是一个开源库,按照**GNU宽通用公共许可证(LGPL)**提供。 虽然这使得它可以免费使用,但将其部署到商业应用程序中的团队应仔细审查LGPL的合规性要求。

DinkToPdf许可

  • LGPL许可 – 免费用于开源和个人项目。
  • LGPL 合规性要求– 在专有应用程序中使用该许可证的企业可能需要遵守额外的许可义务。
  • 无正式支持 – 社区驱动,没有专属客户服务。 *额外的开发时间– 团队可能需要花费额外的时间进行调试和定制,而没有专门的支持。

**底线:**尽管DinkToPdf没有前期费用,企业在使用其进行商业项目时可能面临授权限制和额外的维护开销。

IronPDF许可和费用

IronPDF遵循商业许可模式,专为专业和企业应用而设计。 它提供了一个免费试用版供开发和评估使用,但完整的生产使用需要付费许可。

IronPDF许可

  • 商业许可没有开源限制。
  • 基于开发者或团队许可的简化定价。
  • 包括所有主要功能——无需额外费用添加HTML到PDF、PDF安全性或其他核心工具。
  • 提供专属客户支持和定期更新。

底线:IronPDF提供了一个具有成本效益的、一体化的PDF解决方案,具有专业的支持,适合团队和企业需要一个可靠且可扩展的PDF库。

对于寻求长期解决方案且维护成本可预测的企业而言, IronPDF值得评估。 与DinkToPdf专注的功能范围可能需要的集成和兼容性工作相比,其结构化的许可、完整的功能集和持续的支持提供了更高的投资回报。

除了许可费用之外,项目总成本还包括开发人员花费在解决 Qt WebKit 缺乏现代 CSS 支持、添加单独的库进行加密或数字签名以及在专有代码库中遵守LGPL规范上的时间。 对于评估多年项目生命周期成本的团队来说,这些集成和维护成本往往会超过开源许可和商业许可之间的差异。

支持现代 CSS 框架

IronPDF和DinkToPdf在支持现代CSS框架如Bootstrap、Tailwind CSS和Foundation方面有显著区别。

IronPDF:完全 Bootstrap 支持

IronPDF 的Chromium 渲染引擎为现代 CSS 框架提供全面支持:

  • **Bootstrap 5:**全面支持 flexbox 和 CSS Grid,实现响应式布局 -**复杂布局:**以像素级精度渲染Bootstrap 首页和Bootstrap 模板。 -现代特性: CSS3 动画、变换、过渡和媒体查询
  • CSS框架: Bootstrap、Tailwind CSS、Foundation、Bulma 都能无缝协作

代码示例:呈现Bootstrap发票布局

using IronPdf;

// Render a Bootstrap 5 invoice layout
var renderer = new ChromePdfRenderer();

// Example: Bootstrap invoice with table and flexbox
string bootstrapInvoice = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container my-5'>
        <div class='d-flex justify-content-between align-items-start mb-4'>
            <div>
                <h1>Invoice</h1>
                <p class='text-muted'>#INV-2025-001</p>
            </div>
            <div class='text-end'>
                <h4>Your Company</h4>
                <p class='mb-0'>123 Business St</p>
                <p>City, State 12345</p>
            </div>
        </div>

        <table class='table table-bordered'>
            <thead class='table-light'>
                <tr>
                    <th>Description</th>
                    <th class='text-end'>Quantity</th>
                    <th class='text-end'>Price</th>
                    <th class='text-end'>Total</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>Professional Services</td>
                    <td class='text-end'>10</td>
                    <td class='text-end'>$150.00</td>
                    <td class='text-end'>$1,500.00</td>
                </tr>
                <tr>
                    <td>Software License</td>
                    <td class='text-end'>1</td>
                    <td class='text-end'>$500.00</td>
                    <td class='text-end'>$500.00</td>
                </tr>
            </tbody>
            <tfoot class='table-light fw-bold'>
                <tr>
                    <td colspan='3' class='text-end'>Total:</td>
                    <td class='text-end'>$2,000.00</td>
                </tr>
            </tfoot>
        </table>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapInvoice);
pdf.SaveAs("bootstrap-invoice.pdf");

上述代码使用IronPDF渲染效果完美,保留了所有 Bootstrap 样式,包括 flexbox 布局、表格样式和实用类。

DinkToPdf:Bootstrap 兼容性限制

DinkToPdf 依赖于使用旧版 Qt WebKit 引擎的 wkhtmltopdf,其渲染管线早于几个现代 CSS 规范:

-不支持 Flexbox: Bootstrap 4+ 严重依赖 Flexbox,而 Qt WebKit 引擎并不完全支持 Flexbox。 -**未包含 CSS Grid:**现代网格布局将无法正确渲染。 -引擎版本停留在 2016 年: Qt WebKit 的最后一次更新早于许多当前的 CSS3 功能。 安全隐患: Qt WebKit 存在已知的安全漏洞,且已停止维护。 -**需要采取的变通方法:**开发人员通常需要使用较旧的 Bootstrap 版本(Bootstrap 3 或更早版本)或实现基于表格的回退方案。

有关CSS框架支持和排除flexbox/Bootstrap渲染问题的更多详细信息,请参阅Bootstrap和Flexbox CSS指南。

你应该选择哪个库?

为您的.NET项目选择合适的库取决于易用性、功能和许可等因素。 IronPDF和DinkToPdf都提供HTML到PDF功能,但它们服务于不同的需求。DinkToPdf是免费开源的,这使得它成为一个易于上手的起点,但团队可能会遇到许可限制、缺乏官方支持以及 Qt WebKit 引擎对现代 Web 标准的适用范围较窄等问题。IronPDF提供更全面、更专业的解决方案,采用最新的 Chromium 渲染引擎、商业许可和专属支持。

IronPDFvs. DinkToPdf:主要结论

为何选择IronPDF?

  • 易用性 – 简单的API,最大限度地减少开发时间。
  • 出色的定制化 - 生成完全定制化以符合您需求的PDF文件。
  • 全面的功能集 – 包括HTML到PDF、URL到PDF、水印、加密和数字签名。 *当前渲染引擎– 使用嵌入式 Chromium 引擎,完全支持 HTML5、CSS3 和 JavaScript,可实现高保真输出。
  • 商业许可和支持 – 拥有持续性许可和专属的客户协助。

DinkToPdf 的权衡取舍

  • 无正式支持 – 依赖社区帮助,可能不一致。
  • 更新有限 – 依赖志愿者贡献进行维护。
  • LGPL 合规义务–LGPL许可引入的要求可能与每个商业部署模型不符。

最终思考

对于需要配备现代渲染引擎、且具备可靠全面支持的 PDF 解决方案的团队而言,IronPDF 值得认真考虑。 其开发者友好的 API、全面的功能集以及简明的商业许可,使其非常适合任何规模的 .NET 项目。

立即体验 IronPDF —— 下载免费试用版,亲自测试本对比中展示的每一项功能。

请注意: DinkToPdf是其相应所有者的注册商标。 本网站与DinkToPdf没有任何从属关系、认可或赞助。 所有产品名称、徽标和品牌均为各自所有者的财产。 比较仅供参考,反映撰写时公开可用的信息。
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 起