ActivePDF vs IronPDF:HTML到PDF教程和全面對比
IronPDF 和 ActivePDF 在 .NET 中生成 PDF 方面有何優勢?
IronPDF 提供一體化 PDF 解決方案,採用基於 Chrome 的渲染和直覺的 API 設計,而 ActivePDF 提供模組化企業元件,需要單獨的授權。 IronPDF 在現代 Web 標準支援、跨平台部署以及大多數 .NET 開發場景的成本效益方面表現出色。
當開發人員需要在其.NET 應用程式中提供可靠的PDF 生成功能時,通常會出現兩種突出的解決方案:IronPDF 和 ActivePDF。 這兩個庫都提供了創建、轉換和操作 PDF 文件的有效功能,但它們在方法、定價和實施複雜性方面存在顯著差異。
IronPDF 以其直覺的API 設計和使用Chrome 渲染引擎的完整HTML 到 PDF 轉換脫穎而出,而 ActivePDF 透過多個專用元件(如用於HTML 轉換的WebGrabber 和用於文件轉換的DocConverter)提供以企業為中心的解決方案。 本文提供了深入的比較,以幫助開發人員根據其PDF 處理需求做出明智的決定。
| 類別 | 功能/外觀 | IronPDF | ActivePDF | 主要優勢 |
|---|---|---|---|---|
| 核心架構 | 設計理念 | 多合一函式庫,開發人員友善 | 模組化元件,以企業為重心 | IronPDF:更簡單的整合 |
| API 的複雜性 | Intuitive methods like `RenderHtmlAsPdf`() |
特定元件的 API | 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 Cloud 最佳化 | 有限的雲端支援 | IronPDF:雲端原生就緒 | |
| HTML至PDF | 渲染引擎 | Chrome V8 引擎 | 原生與 IE 引擎 | IronPDF:現代渲染 |
| 支援 CSS3/HTML5 | 全面支援 | 部分支援 | IronPDF:現代網路標準 | |
| JavaScript 執行 | 完整的 JavaScript 支援 | 有限的 JavaScript 支援 | IronPDF:動態內容 | |
| 網路字體 | Google 字體、系統字體 | 僅限系統字型 | 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、Web 應用程式、微服務 | 文件管理、批次處理 | 根據需求 |
概述
IronPDF C# 庫是什麼?
Iron Software是一家市場領先的組件提供商,提供IronPDF ,用於完整的PDF 操作。 IronPDF 提供了一個全面的解決方案,可以從各種格式產生 PDF 文件,同時提供對文件屬性的完全程序化控制。 開發者喜歡 IronPDF,因為它具有一致、可靠的輸出和直覺的 API,只需要極少的程式碼,尤其是在使用現代 Web 標準和JavaScript 框架時。
IronPDF 支援C# 、 VB.NET 、 ASP.NET 、MVC、 .NET Core 、.NET 9 和 .NET 10。它可以在Windows 、 Linux 、 macOS 、 Docker 、 Azure 、 AWS和其他雲端平台上無縫運作。
什麼是ActivePDF組件?
ActivePDF(現為 Apryse 的一部分)透過多種專業元件提供以企業為重點的 PDF 解決方案。 與 IronPDF 的統一方法不同,ActivePDF 為不同的PDF 任務提供單獨的產品,因此需要仔細考慮許可選項和企業部署策略。
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 生成庫必須準確地渲染這些框架,以保持專業的文件品質和設計保真度。 了解每個庫如何處理響應式 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")
輸出:一個專業的定價表,採用 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.維護平行簡化的 CSS 以產生 PDF(雙重維護負擔) 2.限制網頁 UI 使用 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 在需要以下功能的企業環境中表現出色:
- 帶有監控資料夾的自動化批次處理
- 支援 300 多種檔案格式轉換(透過
DocConverter) - Windows Server 上的舊系統整合
- 高級表單欄位操作和 XFA 表單支援
- 滿足歸檔要求的多種PDF/A 合規級別
儘管與IronPDF 的功能相比,ActivePDF 的成本和複雜性更高,但對於已經擁有 ActivePDF 基礎架構或特定企業工作流程需求的組織來說,ActivePDF 的模組化方法可能是有益的。
比較
ActivePDF 和 IronPDF 的功能有何不同?
哪個函式庫提供更好的 HTML 至 PDF 轉換功能?
IronPDF 使用完整的Chrome V8 渲染引擎,提供 98% 以上的瀏覽器保真度,並完全支援HTML5 、 CSS3 、 JavaScript和Web 字體。 ActivePDF WebGrabber 同時提供 Native 引擎和 Internet Explorer 引擎,但JavaScript 執行和CSS3 支援有限。 Native Engine 不支援 CSS 樣式表,而 IE Engine 依賴已棄用的 Internet Explorer 11,它缺少CSS Grid和flexbox 佈局等現代 Web 標準。
這些函式庫的文件格式支援比較如何?
IronPDF 主要支援常見格式( HTML 、 DOCX 、圖像、 RTF 、 Markdown ),而 ActivePDF 支援 300 多種文件格式,包括 CAD 文件、舊版文件格式和專業企業格式。 這使得 ActivePDF 更適合處理各種文件類型的組織,儘管IronPDF 的轉換功能涵蓋了現代應用程式中最常用的格式。
PDF 操作功能如何?
這兩個庫都提供完整的PDF處理功能:
IronPDF 提供:
ActivePDF提供:
- 進階表單欄位操作 (透過 Toolkit)
- 對 PDF 內部進行更仔細的控制
- Enterprise級的資料遮蔽功能
- 多種 PDF/A 合規等級
- 針對特定工作的專業元件
步驟 1:安裝
如何安裝 IronPDF?
IronPDF 應該使用哪種安裝方法?
開發人員可透過多種方式安裝 IronPDF,其中 NuGet 套件管理員是最便捷的方式:
NuGet 套件管理員
在 Visual Studio 中開啟 NuGet 套件管理員,並搜尋 IronPDF:
:InstallCmd
:InstallCmd
手動下載 IronPDF.dll
或者,您可以下載 IronPDF.dll,並透過手動安裝方式將其引用加入專案中。
安裝完成後,請新增驗證存取權限:
using IronPdf;
using IronPdf;
Imports IronPdf
IronPDF 支援 .NET 9 和 10,以及所有現代 .NET 版本,包括 Core、Standard 及 Framework 4.6.2 以上版本。 有關特定平台的安裝說明,請參閱 Linux、macOS、Docker、Azure 及 AWS 的指南。
如何安裝 ActivePDF 元件?
如何安裝 ActivePDF WebGrabber?
ActivePDF WebGrabber 需要更複雜的安裝流程:
1.從 ActivePDF 網站下載安裝程式。 2.向 ActivePDF 銷售人員索取授權金鑰 (可提供評估金鑰) 3.以管理員權限執行安裝程式
- 安裝過程中設定
WebGrabber服務 5.針對 Windows Server 2012+,為服務建立專用使用者帳戶
安裝完成後,新增以下引用:WebGrabber
C:\Program Files\ActivePDF\WebGrabber\bin\APWebGrabber.Net45.dll
如何安裝 ActivePDF DocConverter?
DocConverter 的安裝模式類似:
- 下載
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
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
這兩套函式庫是如何處理帶有 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")
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
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
請注意,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
如何使用 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
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
若需處理更複雜的 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
使用 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)
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
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
若涉及使用 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
}
IronPDF 中可用的預定義合併欄位包括:
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
注意: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")
進一步了解如何使用 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")
如何確保符合 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)
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")
如何在 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")
有關進階簽署情境,請參閱 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
請參閱 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
效能與資源如何比較?
這些函式庫的效能比較如何?
以基準測試和實際使用為基礎:
IronPDF 的效能指標有哪些?
- HTML 渲染:~簡單內容約 125 毫秒
- 複雜網站: 835ms (在靜態網站測試)
- 記憶體使用量:一般在 10MB 以下
- 初始啟動:2-3 秒 (Chrome 引擎初始化)
- 減少 75% 的 headers/footers 記憶體使用量
- 大型文件的載入時間減少 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)
如需更多記憶體優化策略,請參閱 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 文件中的敏感資訊。 |
授權與定價如何比較?
IronPDF 和 ActivePDF 的授權成本如何比較?
IronPDF 的許可選項和定價(截至 2025 年)是什麼?
- Lite 許可證: $999(1 位開發者,1 個地點,1 個項目)
- Plus 授權: $1,499(3 位開發者,3 個地點,3 個專案) -專業許可證: $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%
企業團隊(10位開發人員)-成本比較?
- IronPDF Professional:2,999 美元(所有功能)
- ActivePDF 套件(多個元件):10,000 美元以上
- 使用 IronPDF 節省成本:70%+
有關與其他競爭對手的詳細價格比較,請參閱IronPDF 與 Aspose 、 IronPDF 與 iText以及IronPDF 與 Syncfusion 的比較。
哪個函式庫提供更好的開發者支援?
哪個函式庫能提供更好的開發人員支援?
IronPDF提供哪些支援?
所有許可證均包含每週 5 天、每天 24 小時的工程支援。
有關支援最佳實踐,請參閱如何提出工程支援請求以及如何獲得最佳支援。
ActivePDF提供哪些支援?
- 支援入口網站存取
- 知識庫文章
- 社群論壇
- 提供高級支援,費用另計
- 舊版本的遺留文件
結論:您應該選擇哪一種 PDF 函式庫?
何時選擇 IronPDF:
-現代 .NET 開發:全面支援 .NET 9/10 和跨平台部署 -快速開發:直覺的 API 只需極少的程式碼
- Web 應用程式:使用 Chrome 引擎實現卓越的 HTML/CSS/JavaScript 渲染效果 -雲端部署:針對 Azure、AWS 和容器化環境進行了最佳化 -預算有限:入門價格低,但包含所有功能 -學習曲線:提供豐富的文件和範例,方便快速上手。
何時選擇 ActivePDF:
-傳統系統:現有的 ActivePDF 基礎架構或 Windows Server 環境 -文件格式多樣:需要將 300 多種文件類型轉換為 PDF -企業工作流程:監控資料夾和自動化批次處理 -進階表格:複雜的 XFA 表格或特殊表格要求 -合規性要求:針對特定產業制定多個 PDF/A 級別
最終建議
對於大多數現代 .NET 開發場景而言,IronPDF 提供了功能、效能和價值的最佳組合。 它直觀的 API、完整的文件和透明的定價使其成為希望快速且有效率地實現PDF 功能的團隊的理想選擇。
對於在檔案格式支援、舊系統整合或現有 ActivePDF 基礎架構方面有特定需求的企業而言,ActivePDF 仍然是一個可行的選擇。 然而,模組化的定價模式和複雜的安裝程序可能會對小型團隊或新專案帶來挑戰。
準備好開始了嗎?
!{--01001100010010010100001001010010010000010101001001011001010111110101001101010100010001010101010 10100010111110101010001010010010010010100000101001100010111110100001001001100010011111010000100100110001001111010101
常見問題解答
IronPDF 和 ActivePDF 在 .NET 中的 PDF 生成比較如何?
IronPDF 提供了一種精簡的 PDF 生成方法,使用基於 Chrome 的渲染引擎和直觀的 API,支持現代 .NET 版本,包括 .NET 9 和 10。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 模式支持批量處理,允許您使用如 RenderHtmlFileAsPdfAsync 等方法同時處理多個 PDF 轉換。
IronPDF 如何在 PDF 中處理數字簽名?
IronPDF 提供了一個 PdfSignature 類,用於在 PDF 文檔中添加數字簽名。它支持基於證書的簽名,並允許自定義簽名的外觀和元數據。
在 .NET 開發中使用 IronPDF 的成本考量是什麼?
IronPDF 許可證從 $749 起,面向單個開發人員,包括所有功能。相比之下,ActivePDF 組件單獨定價,導致類似功能的總成本更高。
IronPDF 如何確保跨平台兼容性?
IronPDF 支持跨平台部署,包括 Windows、Linux、macOS 和 Docker 環境,適合多樣化的開發需求和基於雲的應用程序。
如何使用 IronPDF 向 PDF 添加標題和頁腳?
IronPDF 提供 TextHeaderFooter 和 HtmlHeaderFooter 類,允許您使用簡單文本和複雜的 HTML/CSS 佈局添加標題和頁腳。
IronPDF 與現代 .NET 版本的集成效果如何?
IronPDF 完全支持現代 .NET 版本,包括 .NET 9 和 10,以及 .NET Core、.NET Standard 和 .NET Framework 4.6.2+,確保廣泛的兼容性和未來的開發。
在 PDF 轉換過程中是否支持 JavaScript 執行?
是的,IronPDF 在渲染 PDF 之前完全執行 JavaScript,並有選項通過 WaitFor.JavaScript() 和 RenderDelay() 控制時機,確保完整和準確的轉換。

