跳至页脚内容
产品比较

ActivePDF与IronPDF:HTML到PDF教程及全面对比

IronPDF 和 ActivePDF 在 .NET 中生成 PDF 方面有何不同?

IronPDF提供一体化 PDF 解决方案,采用基于 Chrome 的渲染和直观的 API 设计,而 ActivePDF 提供模块化Enterprise组件,需要单独的许可证。 IronPDF在现代 Web 标准支持、跨平台部署以及大多数.NET开发场景的成本效益方面表现出色。

当开发人员需要在其.NET应用程序中提供可靠的PDF 生成功能时,通常会出现两种突出的解决方案: IronPDF和 ActivePDF。 这两个库都提供了创建转换操作 PDF 文档的有效功能,但它们在方法、定价和实现复杂性方面存在显著差异。

IronPDF以其直观的API 设计和使用Chrome 渲染引擎的完整HTML 到 PDF 转换脱颖而出,而 ActivePDF 通过多个专用组件(如用于HTML 转换的WebGrabber 和用于文档转换的DocConverter)提供以企业为中心的解决方案。 本文提供了深入的比较,以帮助开发人员根据其PDF 处理需求做出明智的决定。

产品比较概述
用于 .NET 开发的 IronPDF 和 ActivePDF 比较
类别 特点/方面 IronPDF ActivePDF 主要优势
**核心架构** 设计理念 一体化库,方便开发人员使用 模块化组件,面向企业 IronPDF:更简单的集成
API 复杂性 Intuitive methods like ``RenderHtmlAsPdf`()` 特定组件的应用程序接口 IronPDF:减少代码行数
学习曲线 一般需要 1-2 天 一般为 1-2 周 IronPDF:更快采用
**平台支持** 跨平台 Windows、Linux、macOS、Docker 主要是 Windows 服务器 IronPDF:真正的跨平台
.NET版本 .NET 10、9、8、7、6、5、Core、Framework 4.6.2+。 .NET Framework 4.5+、Core 1.0、Standard 1.0 IronPDF:现代 .NET 支持
云平台 Azure、AWS、Google 云优化 有限的云支持 IronPDF:云原生就绪
**HTML 转 PDF** 渲染引擎 Chrome V8 引擎 本地和 IE 引擎 IronPDF:现代渲染
支持 CSS3/HTML5 全面支持 部分支持 IronPDF:现代网络标准
JavaScript 执行 完全支持 JavaScript 对 JavaScript 的支持有限 IronPDF:动态内容
网络字体 谷歌字体、系统字体 仅限系统字体 IronPDF:排版灵活性
**文档转换** 支持格式 HTML、DOCX、图像、RTF、MD 300+ formats (`DocConverter`) ActivePDF:更多格式
DOCX 转换为 PDF Built-in ``DocxToPdfRenderer`` 本地 Office 转换 ActivePDF:更好的保真度
批量处理 程序化方法 查看文件夹支持 ActivePDF:企业自动化
**性能** HTML 渲染速度 典型值 125 毫秒,复杂值 835 毫秒 引擎变量 IronPDF:性能稳定
内存使用 一般在 10MB 以下 基于服务的开销 IronPDF:占用空间更小
线程支持 本地Async/Await优化 多线程服务 IronPDF:更好地集成 .NET
**PDF功能** 表单处理 创建、填充、扁平化表单 高级表单功能(工具包) ActivePDF:复杂表格
PDF/A 合规 支持 PDF/A-3B 多个 PDF/A 级别 ActivePDF:更多合规选项
OCR 功能 通过 IronOCR 集成 专用 OCR 组件 两种:可用的解决方案
数字签名 集成的可视化签名 高级签名选项 ActivePDF:企业签名
**开发人员经验** 文档 完整的教程和示例 传统的 API 文档 IronPDF:更好的学习资源
代码示例 100 多个可直接运行的示例 GitHub 上的基本示例 IronPDF:丰富的资源
错误信息 描述性、可操作性 服务级信息 IronPDF:更好的调试
**Licensing & Pricing** 入门级 Lite: $999 (1 dev, 1 project) `WebGrabber`: $2,499+ per component IronPDF:入门门槛降低 70
Team License Professional: $2,999 (10 devs) 需要多个组件 IronPDF:包罗万象
套件选项 Iron Suite: $1,498 (9 products) 无套件选项 IronPDF:卓越价值
**支持** 支持包括 是,24/5 工程支持 支持门户访问 IronPDF:直接工程支持
响应时间 一般需要 24-48 小时 因问题而异 IronPDF:可预测的 SLA
**最适合** 使用案例 现代网络应用程序、快速开发 企业自动化、遗留系统 与上下文相关
项目类型 SaaS、网络应用、微服务 文档管理、批处理 根据要求
*注意:*比较基于截至 2025 年的当前版本。ActivePDF 针对特定企业需求提供模块化组件,而 IronPDF 则提供集成解决方案。根据 ActivePDF 组件选择的不同,定价也大不相同。
## 比较 IronPDF 和 ActivePDF 的组件
  • 获取 IronPDF C# PDF 库
  • IronPDF 和 ActivePDF 功能比较
  • 比较 URL 到 PDF 的代码
  • 比较 HTML 字符串到 PDF 的代码
  • 比较许可、免费软件选项等

概述

IronPDF C# 库是什么?

Iron Software是一家市场领先的组件提供商,提供IronPDF ,用于完整的PDF 操作。 IronPDF提供了一个全面的解决方案,可以从各种格式生成 PDF 文件,同时提供对文档属性的完全程序化控制。 开发者们喜欢IronPDF,因为它具有一致、可靠的输出和直观的 API,只需要极少的代码,尤其是在使用现代 Web 标准JavaScript框架时。

IronPDF支持C#VB .NETASP.NET 、MVC、.NET Core 、 .NET 9 和.NET 10。它可以在WindowsLinuxmacOSDockerAzureAWS和其他云平台上无缝运行。

什么是ActivePDF组件?

ActivePDF(现为 Apryse 的一部分)通过多个专业组件提供以企业为中心的 PDF 解决方案。 与 IronPDF 的统一方法不同,ActivePDF 为不同的PDF 任务提供单独的产品,因此需要仔细考虑许可选项Enterprise部署策略。

ActivePDF WebGrabber 是什么?它用于 HTML 到 PDF 的转换

ActivePDF WebGrabber专门用于将HTML 源(URL、HTML 文件或HTML 字符串)转换为PDF 格式。 它提供了页面属性的配置选项,包括页眉页脚边距水印书签WebGrabber 同时支持 Native 和 Internet Explorer渲染引擎

ActivePDF DocConverter 文档转换是什么?

ActivePDF DocConverter可将 300 多种文件格式转换为 PDF,包括Microsoft Office 文档图像、CAD 文件等。 它具有受监控文件夹自动化、批量处理功能和企业级文档管理功能。

像Bootstrap这样的现代CSS框架在PDF中是如何渲染的?

现代 Web 应用程序越来越依赖 Bootstrap、Foundation 和 Tailwind CSS 等CSS 框架来实现一致、响应式的 UI 开发。 PDF 生成库必须准确地渲染这些框架,以保持Professional的文档质量和设计保真度。 了解每个库如何处理响应式 CSS和现代Web 字体对于选择正确的解决方案至关重要。

IronPDF如何处理 Bootstrap 和现代框架的支持?

IronPDF 的Chromium 渲染引擎确保完全支持所有现代 CSS 框架和规范,提供像素级完美的渲染效果

Bootstrap 5:完全支持 Flexbox 和 CSS Grid 渲染,并提供响应式实用工具

  • Bootstrap 4:完整的卡片系统、导航组件和表单布局
  • Tailwind CSS:所有实用优先类和响应式变体都能正确渲染。 -基础:完整的网格和组件系统支持 现代CSS3: Flexbox、CSS Grid、自定义属性、动画、过渡和变换
  • JavaScript执行:完全支持动态内容和框架交互

已通过生产示例验证:使用IronPDF 的渲染选项Bootstrap 主页官方模板可以以浏览器精确的保真度进行转换。

代码示例:使用 Bootstrap 的服务定价表

using IronPdf;

var renderer = new ChromePdfRenderer();

string bootstrapPricing = @"
<!DOCTYPE html>
<html>
<head>
    <link href='___PROTECTED_URL_198___ rel='stylesheet'>
</head>
<body>
    <div class='container my-5'>
        <h1 class='text-center mb-5'>Service Plans</h1>

        <div class='row g-4'>
            <div class='col-md-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-light text-center py-3'>
                        <h3>Starter</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$29</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 100 PDF conversions/month</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Basic templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Email support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 5 GB storage</li>
                            <li class='mb-2 text-muted'><i class='bi bi-x-circle'></i> Priority processing</li>
                        </ul>
                        <button class='btn btn-outline-primary w-100 mt-auto'>Get Started</button>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card h-100 shadow border-primary'>
                    <div class='position-absolute top-0 start-50 translate-middle'>
                        <span class='badge bg-primary'>Most Popular</span>
                    </div>
                    <div class='card-header bg-primary text-white text-center py-3'>
                        <h3>Professional</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$99</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 1,000 PDF conversions/month</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Premium templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Priority support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 50 GB storage</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Priority processing</li>
                        </ul>
                        <button class='btn btn-primary w-100 mt-auto'>Get Started</button>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-dark text-white text-center py-3'>
                        <h3>Enterprise</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$299</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Unlimited conversions</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Custom templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Dedicated support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Unlimited storage</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> SLA guarantee</li>
                        </ul>
                        <button class='btn btn-dark w-100 mt-auto'>Contact Sales</button>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapPricing);
pdf.SaveAs("pricing-table.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

string bootstrapPricing = @"
<!DOCTYPE html>
<html>
<head>
    <link href='___PROTECTED_URL_198___ rel='stylesheet'>
</head>
<body>
    <div class='container my-5'>
        <h1 class='text-center mb-5'>Service Plans</h1>

        <div class='row g-4'>
            <div class='col-md-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-light text-center py-3'>
                        <h3>Starter</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$29</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 100 PDF conversions/month</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Basic templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Email support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 5 GB storage</li>
                            <li class='mb-2 text-muted'><i class='bi bi-x-circle'></i> Priority processing</li>
                        </ul>
                        <button class='btn btn-outline-primary w-100 mt-auto'>Get Started</button>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card h-100 shadow border-primary'>
                    <div class='position-absolute top-0 start-50 translate-middle'>
                        <span class='badge bg-primary'>Most Popular</span>
                    </div>
                    <div class='card-header bg-primary text-white text-center py-3'>
                        <h3>Professional</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$99</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 1,000 PDF conversions/month</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Premium templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Priority support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 50 GB storage</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Priority processing</li>
                        </ul>
                        <button class='btn btn-primary w-100 mt-auto'>Get Started</button>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-dark text-white text-center py-3'>
                        <h3>Enterprise</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$299</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Unlimited conversions</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Custom templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Dedicated support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Unlimited storage</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> SLA guarantee</li>
                        </ul>
                        <button class='btn btn-dark w-100 mt-auto'>Contact Sales</button>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapPricing);
pdf.SaveAs("pricing-table.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

Dim bootstrapPricing As String = "
<!DOCTYPE html>
<html>
<head>
    <link href='___PROTECTED_URL_198___ rel='stylesheet'>
</head>
<body>
    <div class='container my-5'>
        <h1 class='text-center mb-5'>Service Plans</h1>

        <div class='row g-4'>
            <div class='col-md-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-light text-center py-3'>
                        <h3>Starter</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$29</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 100 PDF conversions/month</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Basic templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Email support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 5 GB storage</li>
                            <li class='mb-2 text-muted'><i class='bi bi-x-circle'></i> Priority processing</li>
                        </ul>
                        <button class='btn btn-outline-primary w-100 mt-auto'>Get Started</button>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card h-100 shadow border-primary'>
                    <div class='position-absolute top-0 start-50 translate-middle'>
                        <span class='badge bg-primary'>Most Popular</span>
                    </div>
                    <div class='card-header bg-primary text-white text-center py-3'>
                        <h3>Professional</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$99</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 1,000 PDF conversions/month</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Premium templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Priority support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 50 GB storage</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Priority processing</li>
                        </ul>
                        <button class='btn btn-primary w-100 mt-auto'>Get Started</button>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-dark text-white text-center py-3'>
                        <h3>Enterprise</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$299</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Unlimited conversions</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Custom templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Dedicated support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Unlimited storage</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> SLA guarantee</li>
                        </ul>
                        <button class='btn btn-dark w-100 mt-auto'>Contact Sales</button>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>"

Dim pdf = renderer.RenderHtmlAsPdf(bootstrapPricing)
pdf.SaveAs("pricing-table.pdf")
$vbLabelText   $csharpLabel

输出:一个Professional的定价表,采用 Bootstrap 的卡片网格、flexbox 布局、徽章定位和响应式实用程序——所有内容都准确地保留在 PDF 中。

ActivePDF WebGrabber 在支持现代框架方面有哪些局限性?

ActivePDF WebGrabber 提供 HTML 到 PDF 的转换功能,但使用较旧的渲染引擎,对现代 CSS 框架存在诸多限制:

-原生引擎:自定义渲染,CSS3 支持有限

  • Internet Explorer 引擎:采用传统 IE 渲染方式,不支持现代 CSS 功能 -不支持 Bootstrap 4/5:不支持 Flexbox 和 CSS Grid 功能。 Bootstrap 3 的局限性:只有基于表格的布局才能可靠运行。
  • JavaScript 的局限性:与现代浏览器相比, JavaScript执行功能有限。 -需要采取变通方法:复杂的 Bootstrap 组件需要对 CSS 进行大量修改。

开发人员报告的常见问题: Bootstrap导航栏渲染布局问题

  • 使用 flexbox 的卡片组件无法正确显示 -响应式网格系统在 PDF 输出中出现故障
  • 需要简化或重写 Bootstrap 组件以实现兼容性

开发影响:使用现代 Bootstrap 版本(4+)构建的应用程序需要对 ActivePDF WebGrabber 进行大量额外工作。 团队必须 1.维护用于生成 PDF 的并行简化 CSS(双重维护负担) 2.限制网页用户界面使用 Bootstrap 3 或更早版本(牺牲现代响应式功能) 3.手动测试和修复每个 Bootstrap 组件(耗时且容易出错)

对于大量使用 Bootstrap 或现代 CSS 框架的项目而言,ActivePDF 的渲染限制可能会显著增加开发成本并降低设计灵活性。 建议使用IronPDF 的 Chrome 渲染器以获得精确的 Bootstrap 渲染效果。

有关 Bootstrap 框架兼容性的完整指南,请参阅Bootstrap 和 Flexbox CSS 指南

为什么开发人员选择 IronPDF 而不是 ActivePDF?

IronPDF 的渲染速度极快,静态网站的 HTML 转 PDF 仅需 835 毫秒,并且在不同类型的内容上都能保持稳定的性能。该库的内存使用量经过优化,通常低于 10MB,渲染页眉和页脚时内存使用量更是减少了 75%。

开发者们欣赏 IronPDF 简洁明了的API 设计,只需三行代码即可生成 PDF ,而 ActivePDF 则需要更复杂的多步骤流程。 完整的文档包含 100 多个代码示例和详细教程,使团队能够更轻松地快速上手异步 PDF 生成批量处理等功能。

什么情况下 ActivePDF 可能是更好的选择?

ActivePDF 在企业环境中表现出色,要求:

尽管与IronPDF 的功能相比,ActivePDF 的成本和复杂性更高,但对于已经拥有 ActivePDF 基础架构或特定Enterprise工作流程需求的组织来说,ActivePDF 的模块化方法可能是有益的。


比较

ActivePDF 和IronPDF 的功能有何区别?

哪个库提供更好的 HTML 至 PDF 转换功能?

IronPDF使用完整的Chrome V8 渲染引擎,提供 98% 以上的浏览器保真度,并完全支持HTML5CSS3JavaScriptWeb 字体。 ActivePDF WebGrabber 同时提供 Native 引擎和 Internet Explorer 引擎,但JavaScript执行CSS3 支持有限。 Native Engine 不支持 CSS 样式表,而 IE Engine 依赖于已弃用的 Internet Explorer 11,它缺少CSS Gridflexbox 布局等现代 Web 标准。

这些库在文档格式支持方面如何比较?

IronPDF专注于常见格式( HTMLDOCX图像RTFMarkdown ),而 ActivePDF DocConverter 支持 300 多种文件格式,包括 CAD 文件、旧版文档格式和专用Enterprise格式。 这使得 ActivePDF 更适合处理各种文档类型的组织,尽管IronPDF 的转换功能涵盖了现代应用程序中最常用的格式。

PDF 操作功能如何?

这两个库都提供完整的PDF处理功能

IronPDF提供:

ActivePDF提供:

  • 高级表单字段操作(通过工具包)
  • 对 PDF 内部进行更细粒度的控制
  • 企业级编辑功能
  • 多种PDF/A 合规级别
  • 用于特定任务的专业组件

第 1 步:安装

如何安装 IronPDF?

IronPDF 应采用哪种安装方法?

开发者可以通过多种方式安装IronPDF ,其中NuGet包管理器是最便捷的方式:

NuGet 软件包管理器

在 Visual Studio 中打开NuGet包管理器,搜索IronPDF:

:InstallCmd
:InstallCmd
SHELL

手动下载 IronPDF.dll.

或者,下载IronPDF并使用手动安装方法将其引用添加到项目中。

安装后,通过添加验证访问:

using IronPdf;
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

IronPDF支持.NET 9 和 10 ,以及所有现代.NET版本,包括CoreStandardFramework 4.6.2+ 。 有关特定平台的安装,请参阅LinuxmacOSDockerAzureAWS的指南。


如何安装ActivePDF组件?

如何安装 ActivePDF WebGrabber

ActivePDF WebGrabber 需要更复杂的安装过程:

1.从 ActivePDF 网站下载安装程序</a 2.向 ActivePDF 销售人员索取许可证密钥(提供评估密钥) 3.以管理员权限运行安装程序

  1. 安装过程中配置 WebGrabber 服务 5.对于 Windows Server 2012+,请为该服务创建一个专用用户账户

安装完成后,添加以下 WebGrabber 引用: C:\Program Files\ActivePDF\WebGrabber\bin\APWebGrabber.Net45.dll

如何安装 ActivePDF DocConverter

DocConverter 的安装模式类似:

  1. 下载 DocConverter 安装程序 2.使用管理员权限安装 3.如果使用拖放转换,请配置观察文件夹 4.为批处理设置配置管理器

注意:ActivePDF 组件需要 Windows Server,并且不支持像IronPDF那样的跨平台部署。 对于现代部署场景,请考虑IronPDF 的容器化选项云原生支持


如何使用教程

如何将HTML字符串转换为PDF文件?

让我们比较一下这两个库是如何处理一个常见任务的:将HTML 字符串转换为 PDF 文件

IronPDF如何将 HTML 字符串转换为 PDF?

/**
 * HTML String to PDF
 * anchor-html-string-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // HTML Source
    string html = "<h1>Hello World!</h1> <h2>Welcome to IronPDF</h2> ";

    // Convert HTML string to PDF file
    var pdf = renderer.RenderHtmlAsPdf(html);

    // Save the file
    pdf.SaveAs("E:/sample.pdf");
}
/**
 * HTML String to PDF
 * anchor-html-string-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // HTML Source
    string html = "<h1>Hello World!</h1> <h2>Welcome to IronPDF</h2> ";

    // Convert HTML string to PDF file
    var pdf = renderer.RenderHtmlAsPdf(html);

    // Save the file
    pdf.SaveAs("E:/sample.pdf");
}
'''
''' * HTML String to PDF
''' * anchor-html-string-with-ironpdf
''' *
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	' Create rendering converter
	Dim renderer = New ChromePdfRenderer()

	' HTML Source
	Dim html As String = "<h1>Hello World!</h1> <h2>Welcome to IronPDF</h2> "

	' Convert HTML string to PDF file
	Dim pdf = renderer.RenderHtmlAsPdf(html)

	' Save the file
	pdf.SaveAs("E:/sample.pdf")
End Sub
$vbLabelText   $csharpLabel

IronPDF 方法的主要优势:

  • 只需转换 3 行代码
  • 自动处理编码和渲染
  • 内置Chrome 引擎确保准确渲染
  • 无需单独配置文件路径和名称

ActivePDF 如何将 HTML 字符串转换为 PDF?

using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // HTML Source
    string html = "<h1>Hello World!</h1> <h2>Welcome to ActivePDF WebGrabber</h2>";

    // Assign source HTML to WebGrabber
    wg.CreateFromHTMLText = html;

    // Specify file directory
    wg.OutputDirectory = "E:/";

    // File name
    wg.NewDocumentName = "sample.pdf";

    // Convert source HTML to PDF file
    wg.ConvertToPDF();
}
using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // HTML Source
    string html = "<h1>Hello World!</h1> <h2>Welcome to ActivePDF WebGrabber</h2>";

    // Assign source HTML to WebGrabber
    wg.CreateFromHTMLText = html;

    // Specify file directory
    wg.OutputDirectory = "E:/";

    // File name
    wg.NewDocumentName = "sample.pdf";

    // Convert source HTML to PDF file
    wg.ConvertToPDF();
}
Imports APWebGrabber

Shared Sub Main(ByVal args() As String)
	' Instantiate Object
	Dim wg As New WebGrabber()

	' HTML Source
	Dim html As String = "<h1>Hello World!</h1> <h2>Welcome to ActivePDF WebGrabber</h2>"

	' Assign source HTML to WebGrabber
	wg.CreateFromHTMLText = html

	' Specify file directory
	wg.OutputDirectory = "E:/"

	' File name
	wg.NewDocumentName = "sample.pdf"

	' Convert source HTML to PDF file
	wg.ConvertToPDF()
End Sub
$vbLabelText   $csharpLabel

这两个库是如何处理带有 CSS 样式的复杂 HTML 的?

该示例展示了这两个库如何处理带有CSS 样式的更复杂的 HTML:

IronPDF 高级示例:

using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure rendering options
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

string advancedHtml = @"
    <html>
    <head>
        <style>
            body { font-family: Arial, sans-serif; }
            .invoice { border: 1px solid #ccc; padding: 20px; }
            .header { background-color: #f0f0f0; padding: 10px; }
        </style>
    </head>
    <body>
        <div class='invoice'>
            <div class='header'>
                <h1>Invoice #12345</h1>
            </div>
            <form>
                <input type='text' name='customer' placeholder='Customer Name'>
            </form>
        </div>
    </body>
    </html>";

var pdf = renderer.RenderHtmlAsPdf(advancedHtml);
pdf.SaveAs("advanced-invoice.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure rendering options
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

string advancedHtml = @"
    <html>
    <head>
        <style>
            body { font-family: Arial, sans-serif; }
            .invoice { border: 1px solid #ccc; padding: 20px; }
            .header { background-color: #f0f0f0; padding: 10px; }
        </style>
    </head>
    <body>
        <div class='invoice'>
            <div class='header'>
                <h1>Invoice #12345</h1>
            </div>
            <form>
                <input type='text' name='customer' placeholder='Customer Name'>
            </form>
        </div>
    </body>
    </html>";

var pdf = renderer.RenderHtmlAsPdf(advancedHtml);
pdf.SaveAs("advanced-invoice.pdf");
Imports IronPdf

Private renderer = New ChromePdfRenderer()

' Configure rendering options
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
renderer.RenderingOptions.PrintHtmlBackgrounds = True
renderer.RenderingOptions.CreatePdfFormsFromHtml = True

Dim advancedHtml As String = "
    <html>
    <head>
        <style>
            body { font-family: Arial, sans-serif; }
            .invoice { border: 1px solid #ccc; padding: 20px; }
            .header { background-color: #f0f0f0; padding: 10px; }
        </style>
    </head>
    <body>
        <div class='invoice'>
            <div class='header'>
                <h1>Invoice #12345</h1>
            </div>
            <form>
                <input type='text' name='customer' placeholder='Customer Name'>
            </form>
        </div>
    </body>
    </html>"

Dim pdf = renderer.RenderHtmlAsPdf(advancedHtml)
pdf.SaveAs("advanced-invoice.pdf")
$vbLabelText   $csharpLabel

ChromePdfRenderer 类提供了对渲染过程的广泛控制,包括CSS 媒体类型选择、背景渲染以及从 HTML 输入元素自动创建表单字段


如何将HTML文件转换为PDF文件?

IronPDF如何将 HTML 文件转换为 PDF?

/**
 * HTML File to PDF
 * anchor-html-file-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // Render HTML file to PDF
    var pdf = renderer.RenderHtmlFileAsPdf("E:/myHtmlFile.html");

    // Save to target location
    pdf.SaveAs("E:/Sample.pdf");
}
/**
 * HTML File to PDF
 * anchor-html-file-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // Render HTML file to PDF
    var pdf = renderer.RenderHtmlFileAsPdf("E:/myHtmlFile.html");

    // Save to target location
    pdf.SaveAs("E:/Sample.pdf");
}
'''
''' * HTML File to PDF
''' * anchor-html-file-with-ironpdf
''' *
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	' Create rendering converter
	Dim renderer = New ChromePdfRenderer()

	' Render HTML file to PDF
	Dim pdf = renderer.RenderHtmlFileAsPdf("E:/myHtmlFile.html")

	' Save to target location
	pdf.SaveAs("E:/Sample.pdf")
End Sub
$vbLabelText   $csharpLabel

IronPDF 自动处理:

ActivePDF 如何将 HTML 文件转换为 PDF?

using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // Specify file path to be converted
    wg.URL = "E:/myHtmlFile.html";

    // Specify the directory for newly generated file
    wg.OutputDirectory = "E:/";

    // Newly generated file name
    wg.NewDocumentName = "Sample.pdf";

    // Convert HTML file to PDF
    wg.ConvertToPDF();
}
using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // Specify file path to be converted
    wg.URL = "E:/myHtmlFile.html";

    // Specify the directory for newly generated file
    wg.OutputDirectory = "E:/";

    // Newly generated file name
    wg.NewDocumentName = "Sample.pdf";

    // Convert HTML file to PDF
    wg.ConvertToPDF();
}
Imports APWebGrabber

Shared Sub Main(ByVal args() As String)
	' Instantiate Object
	Dim wg As New WebGrabber()

	' Specify file path to be converted
	wg.URL = "E:/myHtmlFile.html"

	' Specify the directory for newly generated file
	wg.OutputDirectory = "E:/"

	' Newly generated file name
	wg.NewDocumentName = "Sample.pdf"

	' Convert HTML file to PDF
	wg.ConvertToPDF()
End Sub
$vbLabelText   $csharpLabel

请注意,ActivePDF WebGrabber 对本地文件使用 URL 属性,这可能会让期望使用特定于文件的方法的开发人员感到困惑。 如需更直观的文件处理,请参阅IronPDF 的 HTML 文件转换指南


如何将URL转换为PDF文件?

IronPDF如何将 URL 转换为 PDF?

/**
 * URL to PDF
 * anchor-url-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // Specify URL
    var pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_199___");

    // Save the file
    pdf.SaveAs("E:/Sample.pdf");
}
/**
 * URL to PDF
 * anchor-url-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // Specify URL
    var pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_199___");

    // Save the file
    pdf.SaveAs("E:/Sample.pdf");
}
Imports IronPdf

Module Program
    Sub Main(args As String())
        ' Create rendering converter
        Dim renderer As New ChromePdfRenderer()

        ' Specify URL
        Dim pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_199___")

        ' Save the file
        pdf.SaveAs("E:/Sample.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

如何使用IronPDF处理异步 URL 转换?

IronPDF提供出色的异步支持,从而实现更佳的性能:

using IronPdf;
using System.Threading.Tasks;

static async Task Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Configure for complex pages
    renderer.RenderingOptions.WaitFor.RenderDelay(2000); // Wait 2 seconds
    renderer.RenderingOptions.WaitFor.JavaScript(1500); // Wait for JS

    // Async conversion
    var pdf = await renderer.RenderUrlAsPdfAsync("___PROTECTED_URL_200___");
    await pdf.SaveAsAsync("E:/async-sample.pdf");
}
using IronPdf;
using System.Threading.Tasks;

static async Task Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Configure for complex pages
    renderer.RenderingOptions.WaitFor.RenderDelay(2000); // Wait 2 seconds
    renderer.RenderingOptions.WaitFor.JavaScript(1500); // Wait for JS

    // Async conversion
    var pdf = await renderer.RenderUrlAsPdfAsync("___PROTECTED_URL_200___");
    await pdf.SaveAsAsync("E:/async-sample.pdf");
}
Imports IronPdf
Imports System.Threading.Tasks

Module Program
    Async Function Main(args As String()) As Task
        Dim renderer = New ChromePdfRenderer()

        ' Configure for complex pages
        renderer.RenderingOptions.WaitFor.RenderDelay(2000) ' Wait 2 seconds
        renderer.RenderingOptions.WaitFor.JavaScript(1500) ' Wait for JS

        ' Async conversion
        Dim pdf = Await renderer.RenderUrlAsPdfAsync("___PROTECTED_URL_200___")
        Await pdf.SaveAsAsync("E:/async-sample.pdf")
    End Function
End Module
$vbLabelText   $csharpLabel

WaitFor 类可以精确控制渲染时间,这对于JavaScript 密集型应用程序至关重要。 开发者可以使用JavaScript消息监听器等待特定元素、网络空闲状态或自定义JavaScript事件。

ActivePDF 如何将 URL 转换为 PDF?

using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // Specify URL 
    wg.URL = "___PROTECTED_URL_201___";

    // Specify the directory for newly generated file
    wg.OutputDirectory = "E:/";

    // Specify file name
    wg.NewDocumentName = "Sample.pdf";

    // Set timeout for conversion
    wg.TimeoutSpan = new TimeSpan(0, 0, 30);

    // Convert specified URL webpage to PDF
    wg.ConvertToPDF();
}
using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // Specify URL 
    wg.URL = "___PROTECTED_URL_201___";

    // Specify the directory for newly generated file
    wg.OutputDirectory = "E:/";

    // Specify file name
    wg.NewDocumentName = "Sample.pdf";

    // Set timeout for conversion
    wg.TimeoutSpan = new TimeSpan(0, 0, 30);

    // Convert specified URL webpage to PDF
    wg.ConvertToPDF();
}
Imports APWebGrabber

Module Program
    Sub Main(args As String())
        ' Instantiate Object
        Dim wg As New WebGrabber()

        ' Specify URL 
        wg.URL = "___PROTECTED_URL_201___"

        ' Specify the directory for newly generated file
        wg.OutputDirectory = "E:/"

        ' Specify file name
        wg.NewDocumentName = "Sample.pdf"

        ' Set timeout for conversion
        wg.TimeoutSpan = New TimeSpan(0, 0, 30)

        ' Convert specified URL webpage to PDF
        wg.ConvertToPDF()
    End Sub
End Module
$vbLabelText   $csharpLabel

对于更高级的 URL 转换方案,包括身份验证自定义标头,请参阅IronPDF 的 URL 转 PDF 指南


如何在PDF上添加水印?

IronPDF如何处理水印?

IronPDF提供通过 HTML/CSS 实现的灵活水印功能

/**
 * Watermark PDF
 * anchor-watermark-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Source HTML string
    string html = "<h1 style='text-align:center'>WaterMark Example</h1>";

    // Create PDF
    var pdf = renderer.RenderHtmlAsPdf(html);

    // Apply watermark with HTML/CSS
    pdf.ApplyWatermark("<h2 style='color:red; opacity:0.5'>CONFIDENTIAL</h2>", 
        rotation: 30, 
        opacity: 50);

    // Save the document
    pdf.SaveAs("E:/Sample.pdf");
}
/**
 * Watermark PDF
 * anchor-watermark-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Source HTML string
    string html = "<h1 style='text-align:center'>WaterMark Example</h1>";

    // Create PDF
    var pdf = renderer.RenderHtmlAsPdf(html);

    // Apply watermark with HTML/CSS
    pdf.ApplyWatermark("<h2 style='color:red; opacity:0.5'>CONFIDENTIAL</h2>", 
        rotation: 30, 
        opacity: 50);

    // Save the document
    pdf.SaveAs("E:/Sample.pdf");
}
'''
''' * Watermark PDF
''' * anchor-watermark-with-ironpdf
''' *
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	Dim renderer = New ChromePdfRenderer()

	' Source HTML string
	Dim html As String = "<h1 style='text-align:center'>WaterMark Example</h1>"

	' Create PDF
	Dim pdf = renderer.RenderHtmlAsPdf(html)

	' Apply watermark with HTML/CSS
	pdf.ApplyWatermark("<h2 style='color:red; opacity:0.5'>CONFIDENTIAL</h2>", rotation:= 30, opacity:= 50)

	' Save the document
	pdf.SaveAs("E:/Sample.pdf")
End Sub
$vbLabelText   $csharpLabel

使用 IronPDF 制作高级水印:

// Image watermark
pdf.ApplyWatermark($@"<img src='logo.png' style='width:200px'>", 
    rotation: 0, 
    opacity: 30, 
    verticalAlignment: VerticalAlignment.Middle);

// Complex HTML watermark with positioning
string complexWatermark = @"
    <div style='text-align:center; font-family:Arial'>
        <h1 style='color:#ff0000'>DRAFT</h1>
        <p>Generated: " + DateTime.Now.ToString() + @"</p>
    </div>";

pdf.ApplyWatermark(complexWatermark, rotation: 45, opacity: 25);
// Image watermark
pdf.ApplyWatermark($@"<img src='logo.png' style='width:200px'>", 
    rotation: 0, 
    opacity: 30, 
    verticalAlignment: VerticalAlignment.Middle);

// Complex HTML watermark with positioning
string complexWatermark = @"
    <div style='text-align:center; font-family:Arial'>
        <h1 style='color:#ff0000'>DRAFT</h1>
        <p>Generated: " + DateTime.Now.ToString() + @"</p>
    </div>";

pdf.ApplyWatermark(complexWatermark, rotation: 45, opacity: 25);
' Image watermark
pdf.ApplyWatermark($"<img src='logo.png' style='width:200px'>", rotation:= 0, opacity:= 30, verticalAlignment:= VerticalAlignment.Middle)

' Complex HTML watermark with positioning
Dim complexWatermark As String = "
    <div style='text-align:center; font-family:Arial'>
        <h1 style='color:#ff0000'>DRAFT</h1>
        <p>Generated: " & DateTime.Now.ToString() & "</p>
    </div>"

pdf.ApplyWatermark(complexWatermark, rotation:= 45, opacity:= 25)
$vbLabelText   $csharpLabel

ActivePDF是如何创建水印的?

ActivePDF 需要使用文本印章作为变通方法:

using APWebGrabber;

static void Main(string[] args)
{
    WebGrabber wg = new WebGrabber();

    string html = "<h1 style='text-align:center'>WaterMark Example</h1>";
    wg.CreateFromHTMLText = html;

    // Add text stamp as watermark
    wg.AddStampText(270.0f, 350.0f, "WaterMark");

    // Configure stamp appearance
    wg.StampFontSize = 20;
    wg.StampFont = "Times New Roman";
    wg.StampFontTransparency = 1f;
    wg.StampRotation = 45.0f;
    wg.StampColorNET = new ADK.PDF.Color() 
    { 
        Red = 255, 
        Green = 0, 
        Blue = 0, 
        Gray = 0 
    };

    wg.OutputDirectory = "E:/";
    wg.NewDocumentName = "Sample.pdf";
    wg.ConvertToPDF();
}
using APWebGrabber;

static void Main(string[] args)
{
    WebGrabber wg = new WebGrabber();

    string html = "<h1 style='text-align:center'>WaterMark Example</h1>";
    wg.CreateFromHTMLText = html;

    // Add text stamp as watermark
    wg.AddStampText(270.0f, 350.0f, "WaterMark");

    // Configure stamp appearance
    wg.StampFontSize = 20;
    wg.StampFont = "Times New Roman";
    wg.StampFontTransparency = 1f;
    wg.StampRotation = 45.0f;
    wg.StampColorNET = new ADK.PDF.Color() 
    { 
        Red = 255, 
        Green = 0, 
        Blue = 0, 
        Gray = 0 
    };

    wg.OutputDirectory = "E:/";
    wg.NewDocumentName = "Sample.pdf";
    wg.ConvertToPDF();
}
Imports APWebGrabber

Shared Sub Main(ByVal args() As String)
	Dim wg As New WebGrabber()

	Dim html As String = "<h1 style='text-align:center'>WaterMark Example</h1>"
	wg.CreateFromHTMLText = html

	' Add text stamp as watermark
	wg.AddStampText(270.0F, 350.0F, "WaterMark")

	' Configure stamp appearance
	wg.StampFontSize = 20
	wg.StampFont = "Times New Roman"
	wg.StampFontTransparency = 1F
	wg.StampRotation = 45.0F
	wg.StampColorNET = New ADK.PDF.Color() With {
		.Red = 255,
		.Green = 0,
		.Blue = 0,
		.Gray = 0
	}

	wg.OutputDirectory = "E:/"
	wg.NewDocumentName = "Sample.pdf"
	wg.ConvertToPDF()
End Sub
$vbLabelText   $csharpLabel

ActivePDF 方法仅限于纯文本水印,并且需要进行手动定位计算。 如需更高级的水印功能,请参阅IronPDF 的水印示例


如何设置PDF文件的页眉和页脚?

IronPDF如何添加页眉和页脚?

IronPDF提供简单的文本和复杂的HTML 页眉/页脚

/**
 * Set Header Footers
 * anchor-headers-and-footers-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Configure text header/footer
    renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
    {
        LeftText = "Company Name",
        CenterText = "{page} of {total-pages}",
        RightText = "{date} {time}",
        DrawDividerLine = true,
        FontSize = 12,
        FontFamily = "Arial"
    };

    renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
    {
        CenterText = "Copyright © 2025",
        RightText = "Page {page}",
        FontSize = 10
    };

    // HTML content
    string html = "<h1>Document Content</h1><p>Lorem ipsum...</p>";
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("E:/document.pdf");
}
/**
 * Set Header Footers
 * anchor-headers-and-footers-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Configure text header/footer
    renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
    {
        LeftText = "Company Name",
        CenterText = "{page} of {total-pages}",
        RightText = "{date} {time}",
        DrawDividerLine = true,
        FontSize = 12,
        FontFamily = "Arial"
    };

    renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
    {
        CenterText = "Copyright © 2025",
        RightText = "Page {page}",
        FontSize = 10
    };

    // HTML content
    string html = "<h1>Document Content</h1><p>Lorem ipsum...</p>";
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("E:/document.pdf");
}
'''
''' * Set Header Footers
''' * anchor-headers-and-footers-with-ironpdf
''' *
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	Dim renderer = New ChromePdfRenderer()

	' Configure text header/footer
	renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
		.LeftText = "Company Name",
		.CenterText = "{page} of {total-pages}",
		.RightText = "{date} {time}",
		.DrawDividerLine = True,
		.FontSize = 12,
		.FontFamily = "Arial"
	}

	renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
		.CenterText = "Copyright © 2025",
		.RightText = "Page {page}",
		.FontSize = 10
	}

	' HTML content
	Dim html As String = "<h1>Document Content</h1><p>Lorem ipsum...</p>"
	Dim pdf = renderer.RenderHtmlAsPdf(html)
	pdf.SaveAs("E:/document.pdf")
End Sub
$vbLabelText   $csharpLabel

对于使用HTML实现更复杂的页眉/页脚:

// HTML headers with dynamic content
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = @"
        <div style='display: flex; justify-content: space-between; padding: 10px;'>
            <img src='logo.png' style='height: 30px;'>
            <div>{page} / {total-pages}</div>
        </div>",
    Height = 50
};
// HTML headers with dynamic content
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = @"
        <div style='display: flex; justify-content: space-between; padding: 10px;'>
            <img src='logo.png' style='height: 30px;'>
            <div>{page} / {total-pages}</div>
        </div>",
    Height = 50
};
' HTML headers with dynamic content
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
	.HtmlFragment = "
        <div style='display: flex; justify-content: space-between; padding: 10px;'>
            <img src='logo.png' style='height: 30px;'>
            <div>{page} / {total-pages}</div>
        </div>",
	.Height = 50
}
$vbLabelText   $csharpLabel

7.2.使用 ActivePDF WebGrabber 的页眉和页脚

  • {page} - 当前页码
  • {total-pages} - 总页数
  • {url} - 源 URL(如有)
  • {date} - 当前日期
  • {time} - 当前时间
  • {html-title} - 来自 HTML 文档的标题
  • {pdf-title} - PDF 元数据标题

ActivePDF 如何设置页眉和页脚?

using APWebGrabber;

static void Main(string[] args)
{
    WebGrabber wg = new WebGrabber();

    string html = @"<h1 style='text-align:center;'>Page Content</h1>";
    wg.CreateFromHTMLText = html;

    // Configure header
    wg.HeaderHeight = 0.5f;
    wg.HeaderHTML = "<div style='float: left;'>Header Text</div>";
    wg.HeaderHTML += $"<div style='float: right;'>{DateTime.Now.ToShortDateString()}</div>";

    // Configure footer
    wg.FooterHeight = 0.5f;
    wg.FooterHTML = "<div style='text-align: right;'>%cp% of %tp%</div>";

    wg.OutputDirectory = "E:/";
    wg.NewDocumentName = "Sample.pdf";
    wg.ConvertToPDF();
}
using APWebGrabber;

static void Main(string[] args)
{
    WebGrabber wg = new WebGrabber();

    string html = @"<h1 style='text-align:center;'>Page Content</h1>";
    wg.CreateFromHTMLText = html;

    // Configure header
    wg.HeaderHeight = 0.5f;
    wg.HeaderHTML = "<div style='float: left;'>Header Text</div>";
    wg.HeaderHTML += $"<div style='float: right;'>{DateTime.Now.ToShortDateString()}</div>";

    // Configure footer
    wg.FooterHeight = 0.5f;
    wg.FooterHTML = "<div style='text-align: right;'>%cp% of %tp%</div>";

    wg.OutputDirectory = "E:/";
    wg.NewDocumentName = "Sample.pdf";
    wg.ConvertToPDF();
}
Imports APWebGrabber

Shared Sub Main(ByVal args() As String)
	Dim wg As New WebGrabber()

	Dim html As String = "<h1 style='text-align:center;'>Page Content</h1>"
	wg.CreateFromHTMLText = html

	' Configure header
	wg.HeaderHeight = 0.5F
	wg.HeaderHTML = "<div style='float: left;'>Header Text</div>"
	wg.HeaderHTML += $"<div style='float: right;'>{DateTime.Now.ToShortDateString()}</div>"

	' Configure footer
	wg.FooterHeight = 0.5F
	wg.FooterHTML = "<div style='text-align: right;'>%cp% of %tp%</div>"

	wg.OutputDirectory = "E:/"
	wg.NewDocumentName = "Sample.pdf"
	wg.ConvertToPDF()
End Sub
$vbLabelText   $csharpLabel

注意:ActivePDF 使用专有占位符(%cp% 表示当前页,%tp% 表示总页数),需要手动构建 HTML。 如需更灵活的页眉/页脚选项,请参阅IronPDF 的页眉和页脚指南


高级PDF功能有何区别?

如何创建和编辑PDF表单?

IronPDF如何处理表单创建?

using IronPdf;

// Create a PDF with form fields
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

string formHtml = @"
    <form>
        <label>Name: <input type='text' name='fullname'></label><br>
        <label>Email: <input type='email' name='email'></label><br>
        <label>Subscribe: <input type='checkbox' name='subscribe'></label><br>
        <label>
            Plan:
            <select name='plan'>
                <option>Basic</option>
                <option>Premium</option>
            </select>
        </label>
    </form>";

var pdf = renderer.RenderHtmlAsPdf(formHtml);

// Fill form fields programmatically
pdf.Form.FindFormField("fullname").Value = "John Doe";
pdf.Form.FindFormField("email").Value = "john@example.com";
pdf.Form.FindFormField("subscribe").Value = "Yes";

pdf.SaveAs("filled-form.pdf");
using IronPdf;

// Create a PDF with form fields
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

string formHtml = @"
    <form>
        <label>Name: <input type='text' name='fullname'></label><br>
        <label>Email: <input type='email' name='email'></label><br>
        <label>Subscribe: <input type='checkbox' name='subscribe'></label><br>
        <label>
            Plan:
            <select name='plan'>
                <option>Basic</option>
                <option>Premium</option>
            </select>
        </label>
    </form>";

var pdf = renderer.RenderHtmlAsPdf(formHtml);

// Fill form fields programmatically
pdf.Form.FindFormField("fullname").Value = "John Doe";
pdf.Form.FindFormField("email").Value = "john@example.com";
pdf.Form.FindFormField("subscribe").Value = "Yes";

pdf.SaveAs("filled-form.pdf");
Imports IronPdf

' Create a PDF with form fields
Private renderer = New ChromePdfRenderer()
renderer.RenderingOptions.CreatePdfFormsFromHtml = True

Dim formHtml As String = "
    <form>
        <label>Name: <input type='text' name='fullname'></label><br>
        <label>Email: <input type='email' name='email'></label><br>
        <label>Subscribe: <input type='checkbox' name='subscribe'></label><br>
        <label>
            Plan:
            <select name='plan'>
                <option>Basic</option>
                <option>Premium</option>
            </select>
        </label>
    </form>"

Dim pdf = renderer.RenderHtmlAsPdf(formHtml)

' Fill form fields programmatically
pdf.Form.FindFormField("fullname").Value = "John Doe"
pdf.Form.FindFormField("email").Value = "john@example.com"
pdf.Form.FindFormField("subscribe").Value = "Yes"

pdf.SaveAs("filled-form.pdf")
$vbLabelText   $csharpLabel

了解更多关于使用IronPDF创建 PDF 表单编辑表单数据的信息

ActivePDF 工具包 如何处理表单?

// ActivePDF requires separate Toolkit component for forms
APToolkitNET.Toolkit toolkit = new APToolkitNET.Toolkit();

// Open existing PDF
toolkit.OpenInputFile("form-template.pdf");

// Set form field values
toolkit.SetFormFieldData("fullname", "John Doe", -997);
toolkit.SetFormFieldData("email", "john@example.com", -997);

// Save filled form
toolkit.CopyForm(0, 0);
toolkit.SaveAs("filled-form.pdf");
// ActivePDF requires separate Toolkit component for forms
APToolkitNET.Toolkit toolkit = new APToolkitNET.Toolkit();

// Open existing PDF
toolkit.OpenInputFile("form-template.pdf");

// Set form field values
toolkit.SetFormFieldData("fullname", "John Doe", -997);
toolkit.SetFormFieldData("email", "john@example.com", -997);

// Save filled form
toolkit.CopyForm(0, 0);
toolkit.SaveAs("filled-form.pdf");
' ActivePDF requires separate Toolkit component for forms
Dim toolkit As New APToolkitNET.Toolkit()

' Open existing PDF
toolkit.OpenInputFile("form-template.pdf")

' Set form field values
toolkit.SetFormFieldData("fullname", "John Doe", -997)
toolkit.SetFormFieldData("email", "john@example.com", -997)

' Save filled form
toolkit.CopyForm(0, 0)
toolkit.SaveAs("filled-form.pdf")
$vbLabelText   $csharpLabel

如何确保符合 PDF/A 标准?

这两个库都支持PDF/A ,但采用的方法不同:

如何使用IronPDF创建 PDF/A 文件?

using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Archival Document</h1>");

// Convert to PDF/A-3B
pdf.SaveAsPdfA("archive.pdf", PdfAVersions.PdfA3B);
using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Archival Document</h1>");

// Convert to PDF/A-3B
pdf.SaveAsPdfA("archive.pdf", PdfAVersions.PdfA3B);
Imports IronPdf

Private renderer = New ChromePdfRenderer()
Private pdf = renderer.RenderHtmlAsPdf("<h1>Archival Document</h1>")

' Convert to PDF/A-3B
pdf.SaveAsPdfA("archive.pdf", PdfAVersions.PdfA3B)
$vbLabelText   $csharpLabel

IronPDF还支持使用 ZUGFeRD 进行电子发票的 PDF/A-3 格式。 更多详情请参阅PDF/A 里程碑更新

如何使用 ActivePDF 创建 PDF/A 文件?

// Requires DocConverter component
DocConverter dc = new DocConverter();
dc.SetPDFACompliance(PDFACompliance.PDFA2B);
dc.ConvertToPDF("input.html", "output.pdf");
// Requires DocConverter component
DocConverter dc = new DocConverter();
dc.SetPDFACompliance(PDFACompliance.PDFA2B);
dc.ConvertToPDF("input.html", "output.pdf");
' Requires DocConverter component
Dim dc As New DocConverter()
dc.SetPDFACompliance(PDFACompliance.PDFA2B)
dc.ConvertToPDF("input.html", "output.pdf")
$vbLabelText   $csharpLabel

如何向PDF文件添加数字签名?

IronPDF如何处理数字签名?

using IronPdf;
using IronPdf.Signing;

// Load or create PDF
var pdf = PdfDocument.FromFile("document.pdf");

// Create signature with certificate
var signature = new PdfSignature("certificate.pfx", "password");

// Configure signature appearance
signature.SignatureImage = new PdfSignatureImage("signature.png");
signature.SigningContact = "john@company.com";
signature.SigningReason = "Document Approval";

// Apply signature
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");
using IronPdf;
using IronPdf.Signing;

// Load or create PDF
var pdf = PdfDocument.FromFile("document.pdf");

// Create signature with certificate
var signature = new PdfSignature("certificate.pfx", "password");

// Configure signature appearance
signature.SignatureImage = new PdfSignatureImage("signature.png");
signature.SigningContact = "john@company.com";
signature.SigningReason = "Document Approval";

// Apply signature
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");
Imports IronPdf
Imports IronPdf.Signing

' Load or create PDF
Private pdf = PdfDocument.FromFile("document.pdf")

' Create signature with certificate
Private signature = New PdfSignature("certificate.pfx", "password")

' Configure signature appearance
signature.SignatureImage = New PdfSignatureImage("signature.png")
signature.SigningContact = "john@company.com"
signature.SigningReason = "Document Approval"

' Apply signature
pdf.Sign(signature)
pdf.SaveAs("signed.pdf")
$vbLabelText   $csharpLabel

有关高级签名场景,请参阅IronPDF 的签名指南使用 HSM 进行签名

如何处理批量处理?

IronPDF如何处理批量转换?

using IronPdf;
using System.Threading.Tasks;
using System.IO;

static async Task BatchConvertAsync()
{
    var renderer = new ChromePdfRenderer();
    var tasks = new List<Task>();

    foreach (var file in Directory.GetFiles("input", "*.html"))
    {
        tasks.Add(Task.Run(async () =>
        {
            var pdf = await renderer.RenderHtmlFileAsPdfAsync(file);
            var outputPath = Path.Combine("output", 
                Path.GetFileNameWithoutExtension(file) + ".pdf");
            await pdf.SaveAsAsync(outputPath);
        }));
    }

    await Task.WhenAll(tasks);
}
using IronPdf;
using System.Threading.Tasks;
using System.IO;

static async Task BatchConvertAsync()
{
    var renderer = new ChromePdfRenderer();
    var tasks = new List<Task>();

    foreach (var file in Directory.GetFiles("input", "*.html"))
    {
        tasks.Add(Task.Run(async () =>
        {
            var pdf = await renderer.RenderHtmlFileAsPdfAsync(file);
            var outputPath = Path.Combine("output", 
                Path.GetFileNameWithoutExtension(file) + ".pdf");
            await pdf.SaveAsAsync(outputPath);
        }));
    }

    await Task.WhenAll(tasks);
}
Imports IronPdf
Imports System.Threading.Tasks
Imports System.IO

Shared Async Function BatchConvertAsync() As Task
	Dim renderer = New ChromePdfRenderer()
	Dim tasks = New List(Of Task)()

	For Each file In Directory.GetFiles("input", "*.html")
		tasks.Add(Task.Run(Async Function()
			Dim pdf = Await renderer.RenderHtmlFileAsPdfAsync(file)
			Dim outputPath = Path.Combine("output", Path.GetFileNameWithoutExtension(file) & ".pdf")
			Await pdf.SaveAsAsync(outputPath)
		End Function))
	Next file

	Await Task.WhenAll(tasks)
End Function
$vbLabelText   $csharpLabel

有关更多批处理技术,请参阅IronPDF 的异步指南并行处理示例

ActivePDF 如何处理批量处理?

// DocConverter supports watched folders for automatic conversion
DocConverter dc = new DocConverter();

// Configure watched folder
dc.AddWatchedFolder(@"C:\Input", @"C:\Output", "*.html");
dc.StartWatching();

// Files dropped in the input folder are automatically converted
// DocConverter supports watched folders for automatic conversion
DocConverter dc = new DocConverter();

// Configure watched folder
dc.AddWatchedFolder(@"C:\Input", @"C:\Output", "*.html");
dc.StartWatching();

// Files dropped in the input folder are automatically converted
' DocConverter supports watched folders for automatic conversion
Dim dc As New DocConverter()

' Configure watched folder
dc.AddWatchedFolder("C:\Input", "C:\Output", "*.html")
dc.StartWatching()

' Files dropped in the input folder are automatically converted
$vbLabelText   $csharpLabel

性能和资源对比如何?

这些库在性能方面如何比较?

基于基准测试和实际使用情况:

IronPDF的性能指标有哪些?

  • HTML 渲染:~简单内容约 125ms
  • 复杂网站:835ms(在静态网站上测试)
  • 内存使用量:一般在 10MB 以下
  • 初始启动:2-3 秒(Chrome 引擎初始化)
  • 将页眉/页脚的内存使用量减少 75
  • 大型文档的加载时间缩短 80

有关详细性能优化技巧,请参阅IronPDF 的性能指南

ActivePDF的性能特点是什么?

  • 根据所选渲染引擎而变化
  • 本地引擎:更快地处理简单的 HTML
  • IE 引擎:速度较慢,但与传统内容的兼容性更好
  • 基于服务的架构增加了开销
  • 更适合批处理场景

内存管理最佳实践有哪些?

如何使用IronPDF优化内存?

// Dispose of resources properly
using (var renderer = new ChromePdfRenderer())
{
    using (var pdf = renderer.RenderHtmlAsPdf(html))
    {
        pdf.SaveAs("output.pdf");
    }
}

// For large documents, use streaming
await pdf.Stream.CopyToAsync(fileStream);
// Dispose of resources properly
using (var renderer = new ChromePdfRenderer())
{
    using (var pdf = renderer.RenderHtmlAsPdf(html))
    {
        pdf.SaveAs("output.pdf");
    }
}

// For large documents, use streaming
await pdf.Stream.CopyToAsync(fileStream);
' Dispose of resources properly
Using renderer = New ChromePdfRenderer()
	Using pdf = renderer.RenderHtmlAsPdf(html)
		pdf.SaveAs("output.pdf")
	End Using
End Using

' For large documents, use streaming
Await pdf.Stream.CopyToAsync(fileStream)
$vbLabelText   $csharpLabel

有关更多内存优化策略,请参阅IronPDF 的内存管理指南PDF 内存流示例

ActivePDF 的内存使用注意事项有哪些?

  • 基于服务的架构可隔离内存使用
  • 转换之间的自动清理
  • 在 Windows 中配置服务内存限制

ActivePDF 有哪些组件可用?

还有哪些其他 ActivePDF 组件可用?

组件 目的和特点
ActivePDF `DocConverter` 可将 300 多种文件类型转换为 PDF。具有监视文件夹、批处理和企业自动化功能。
ActivePDF `WebGrabber` HTML 转换为 PDF,支持 URL、文件和 HTML 字符串。包括本地和 IE 渲染引擎。
ActivePDF 工具包 高级 PDF 操作,包括表单、注释、安全性和低级 PDF 操作。
ActivePDF 服务器 适用于网络环境的基于服务器的 PDF 打印解决方案。
ActivePDF Meridian 网络 PDF 打印机,用于将文档打印成 PDF 格式,无需按用户付费。
ActivePDF OCR 光学字符识别,用于搜索扫描的 PDF 文件。
ActivePDF Xtractor 从 PDF 文件中提取文本和图像进行数据处理。
ActivePDF 编辑器 永久删除 PDF 文档中的敏感信息。

这些组件中有很多需要单独的许可证,这会增加完整 PDF 功能的总成本。


许可和定价有何异同?

IronPDF 和 ActivePDF 的许可成本如何比较?

IronPDF 的许可选项和定价(截至 2025 年)是什么?

  • Lite许可证: $999(1 位开发者,1 个地点,1 个项目)
  • Plus许可证: $1,499(3 位开发者,3 个地点,3 个项目) -Professional许可证: $2,999(10 位开发人员,10 个地点,10 个项目) -无限制许可:定制定价(开发者/项目数量不限)
  • Iron Suite: $1,498( Iron Software 的全部 10 款产品)

所有许可证均包含24/5 工程支持终身许可证有效期以及扩展升级选项。

  • WebGrabber:起价 2,499 美元(一次性付款)
  • DocConverter:起价 2,999 美元(一次性付款) 工具包:起价 1500 美元以上(价格因功能而异) -支持:高级支持需额外付费 -多部件:成本迅速累积

总成本比较是多少?

小型开发团队(3名开发人员)——成本比较?

  • IronPDF Plus License:1,499 美元(包含所有功能)
  • ActivePDF WebGrabber + DocConverter: 最低 5,498 美元
  • 使用 IronPDF 节省费用:73%

Enterprise团队(10名开发人员)——成本比较?

  • IronPDF Professional:2,999 美元(所有功能)
  • ActivePDF 套件(多个组件):10,000 美元以上
  • 使用 IronPDF 节省费用:70%+

有关与其他竞争对手的详细价格比较,请参阅IronPDF与 AsposeIronPDF与 iText以及IronPDF与Syncfusion 的比较。


哪个库提供更好的开发者支持?

哪个库能提供更好的开发人员支持?

IronPDF提供哪些支持?

所有许可证均包含每周 5 天、每天 24 小时的工程支持

  • 直接接触开发团队
  • 包含 100 多个示例的完整文档
  • 活跃的社区和论坛
  • 定期更新和改进
  • 响应时间:一般为 24-48 小时

有关支持最佳实践,请参阅如何提出工程支持请求以及如何获得最佳支持

ActivePDF提供哪些支持?

  • 支持门户访问
  • 知识库文章
  • 社区论坛
  • 高级支持需额外付费
  • 旧版本的遗留文档

结论:您应该选择哪个 PDF 库?

何时选择 IronPDF:?

-现代.NET开发:全面支持.NET 9/10 和跨平台部署 -快速开发:直观的 API 只需极少的代码

  • Web 应用程序:借助 Chrome 引擎实现卓越的 HTML/CSS/ JavaScript渲染效果 -云部署:针对 Azure、AWS 和容器化环境进行了优化 -预算有限:入门价格低,但包含所有功能 -学习曲线:提供丰富的文档和示例,便于快速上手。

何时选择 ActivePDF:

-传统系统:现有的 ActivePDF 基础架构或 Windows Server 环境 -文件格式多样:需要将 300 多种文件类型转换为 PDF -Enterprise工作流:监控文件夹和自动化批量处理 -高级表格:复杂的 XFA 表格或特殊表格要求 -合规性要求:针对特定行业制定多个 PDF/A 级别

最终建议

对于大多数现代.NET开发场景而言, IronPDF提供了功能性能和价值的最佳组合。 它直观的 API、完整的文档和透明的定价使其成为希望快速高效地实现PDF 功能的团队的理想选择。

对于在文件格式支持、遗留系统集成或现有 ActivePDF 基础设施方面有特殊要求的企业来说,ActivePDF 仍然是一个可行的选择。 然而,模块化定价模式和复杂的安装过程可能会给小型团队或新项目带来挑战。

准备好开始了吗?

今天在您的项目中使用 IronPDF,免费试用。

第一步:
green arrow pointer

请注意ActivePDF 是其各自所有者的注册商标。 本网站与 ActivePDF 无关,也未得到 ActivePDF 的支持或赞助。 所有产品名称、徽标和品牌均为各自所有者的财产。 比较仅供参考,反映撰写时公开可用的信息。

常见问题解答

IronPDF 和 ActivePDF 在 .NET 中的 PDF 生成方面如何比较?

IronPDF 提供了一种简化的 PDF 生成方法,具有基于 Chrome 的渲染引擎和直观的 API,支持包括 .NET 9 和 10 在内的现代 .NET 版本。ActivePDF 提供模块化组件,如 WebGrabber 和 DocConverter 用于企业场景,但需要更多配置。

如何使用 C# 将 HTML 转换为 PDF?

您可以使用 IronPDF 的 RenderHtmlAsPdf 方法快速将 HTML 字符串转换为 PDF。对于基于文件的转换,可以使用 RenderHtmlFileAsPdf 方法,两者都提供高保真的 CSS3 和 JavaScript 支持。

IronPDF 的性能基准是什么?

IronPDF 展示了快速的 HTML 到 PDF 渲染,任务完成时间约为 125-835 毫秒,内存使用低于 10MB。它在页眉和页脚方面还提供显著的内存和处理改进。

我可以使用 IronPDF 自动化批量 PDF 处理吗?

是的,IronPDF 支持通过 async/await 模式进行批量处理,允许您同时处理多个 PDF 转换,使用诸如 RenderHtmlFileAsPdfAsync 的方法。

IronPDF 如何处理 PDF 中的数字签名?

IronPDF 提供 PdfSignature 类以为 PDF 文档添加数字签名。它支持基于证书的签名,并允许自定义签名的外观和元数据。

在 .NET 开发中使用 IronPDF 的成本考量是什么?

IronPDF 许可证价格从 $749 起,包括所有功能。相比之下,ActivePDF 组件单独定价,导致类似功能的总成本更高。

IronPDF 如何确保跨平台兼容性?

IronPDF 支持跨平台部署,包括 Windows、Linux、macOS 和 Docker 环境,使其适合多样化的开发需求和基于云的应用。

如何使用 IronPDF 为 PDF 添加页眉和页脚?

IronPDF 提供 TextHeaderFooterHtmlHeaderFooter 类,允许您使用简单文本和复杂的 HTML/CSS 布局添加页眉和页脚。

IronPDF 与现代 .NET 版本的集成情况如何?

IronPDF 完全支持现代 .NET 版本,包括 .NET 9 和 10,以及 .NET Core、.NET Standard 和 .NET Framework 4.6.2+,确保广泛的兼容性和面向未来的开发。

在 PDF 转换过程中是否支持 JavaScript 执行?

是的,IronPDF 在渲染 PDFs 之前完全执行 JavaScript,并通过 WaitFor.JavaScript()RenderDelay() 控制时间,确保完整和准确的转换。

Jacob Mellor,Team Iron 的首席技术官
首席技术官

Jacob Mellor 是 Iron Software 的首席技术官,也是一位开创 C# PDF 技术的有远见的工程师。作为 Iron Software 核心代码库的原始开发者,他从公司成立之初就开始塑造公司的产品架构,与首席执行官 Cameron Rimington 一起将公司转变为一家拥有 50 多名员工的公司,为 NASA、特斯拉和全球政府机构提供服务。

Jacob 拥有曼彻斯特大学土木工程一级荣誉工程学士学位(BEng)(1998-2001 年)。他的旗舰产品 IronPDF 和 Iron Suite for .NET 库在全球的 NuGet 安装量已超过 3000 万次,其基础代码继续为全球使用的开发人员工具提供动力。Jacob 拥有 25 年的商业经验和 41 年的编码专业知识,他一直专注于推动企业级 C#、Java 和 Python PDF 技术的创新,同时指导下一代技术领导者。

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我