ActivePDF vs IronPDF:HTML到PDF教程和全面對比
IronPDF和ActivePDF在.NET中的PDF生成比較如何?
IronPDF提供一個整合的PDF解決方案,具有基於Chrome的渲染和直觀的API設計,而ActivePDF提供模組化的企業組件,需要單獨的許可。 IronPDF在現代網頁標準支持、跨平台部署和成本效益上在大多數.NET開發情境中表現優異。
當開發者需要在.NET應用程式中提供可靠的PDF生成功能時,兩個突出的解決方案通常出現:IronPDF和ActivePDF。 這兩個程式庫提供建立、轉換和操作PDF文件的有效功能,但在方法、定價和實施複雜性上存在顯著差異。
IronPDF以其直觀的API設計和完整的HTML到PDF轉換,利用Chrome渲染引擎脫穎而出,而ActivePDF則通過多個專門的組件,像是用於HTML轉換的WebGrabber 和用於文件轉換的DocConverter,為企業提供解決方案。 本文提供深入的比較,幫助開發者為他們的PDF處理需求做出知情決策。
| 類別 | 功能/方面 | IronPDF | ActivePDF | 關鍵優勢 |
|---|---|---|---|---|
| 核心架構 | 設計理念 | 整合的程式庫,對開發者友好 | 模組化組件,專注於企業 | IronPDF:更簡單的整合 |
| API複雜性 | Intuitive methods like `product__comprehensive`-comparison-table() |
特定組件的 API | IronPDF:更少的程式碼行數 | |
| 學習曲線 | 1-2天的典型時間 | 1-2周的典型時間 | IronPDF:更快的採用 | |
| 平台支持 | 跨平台 | Windows、Linux、macOS、Docker | 主要為Windows Server | 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:動態內容 | |
| Web字體 | Google字體、系統字體 | 僅限系統字體 | IronPDF:字體的靈活性 | |
| 文件轉換 | 支持格式 | HTML, DOCX, 圖片, RTF, MD | 300多種格式 (`DocConverter`) | ActivePDF:更多的格式 |
| DOCX到PDF | 內建的table-number |
本機Office轉換 | ActivePDF:更好的保真的轉換 | |
| 批量處理 | 程式化方法 | 支持監控資料夾 | ActivePDF:企業自動化 | |
| 性能 | HTML渲染速度 | 在不同內容型別中快且一致 | 因引擎而異 | IronPDF:一致的性能 |
| 記憶體使用 | 典型情況下小於10MB | 基於服務的開銷 | IronPDF:較低的資源佔用 | |
| 多執行緒支持 | 本機async/await優化 | 多執行緒服務 | IronPDF:更好的.NET整合 | |
| PDF功能 | 表單處理 | 建立、填充、攤平成表單 | 先進的表單功能(Toolkit) | ActivePDF:複雜的表單 |
| PDF/A合規 | 支持PDF/A-3B | 多個PDF/A級別 | ActivePDF:更多的合規選項 | |
| OCR功能 | 通過 IronOCR 整合 | 專用的OCR組件 | 兩者:可用的解決方案 | |
| 數位簽名 | 整合的,可視簽名 | 先進的簽名選項 | ActivePDF:企業級簽名 | |
| 開發者體驗 | 文件 | 完整的教程,範例 | 傳統的 API 文件 | IronPDF:更好的學習資源 |
| 程式碼範例 | 100多個即用範例 | 在GitHub上的基礎範例 | IronPDF:豐富的資源 | |
| 錯誤資訊 | 描述性,具可操作性 | 服務級別訊息 | IronPDF:更好的除錯 | |
| Licensing & Pricing | 入門級 | Lite:$999(1位開發者,1個專案) | `WebGrabber`:聯絡ActivePDF/Apryse獲取價格 | IronPDF:透明,較低的入門價格 |
| 團隊授權 | 專業版:$2,399 (10位開發者) | 需要多個組件 | IronPDF:一價全包 | |
| 套件選項 | Iron Suite:$2,998 (10 款產品) | 無套件選項 | IronPDF:卓越的價值 | |
| 支援 | 是否包含支援 | 是,24/5工程支援 | 支持門戶存取 | IronPDF:直接的工程支持 |
| 回應時間 | 24-48小時典型 | 根據問題而異 | IronPDF:可預測的SLA | |
| 最佳用途 | 用例 | 現代網頁應用,快速開發 | 企業自動化,遺留系統 | 依具體情況而定 |
| 項目型別 | SaaS,網頁應用,微服務 | 文件管理,批處理 | 根據需求 |
概覽
什麼是IronPDF C#程式庫?
Iron Software是一家市場領先的組件提供商,提供IronPDF來進行完整的PDF操作。 IronPDF提供一個全包的解決方案,從各種格式生成PDF文件,同時提供對文件屬性的完整程式化控制。 開發者喜歡IronPDF,因為它的輸出一致可靠,API直觀,需要的程式碼很少,尤其是在處理現代網頁標準和JavaScript框架時。
IronPDF supports C#, VB.NET, ASP.NET, MVC, .NET Core, .NET 9, and .NET 10. It runs seamlessly on Windows, Linux, macOS, Docker, Azure, AWS, and other cloud platforms.
ActivePDF組件是什麼?
ActivePDF(現屬於Apryse)通過多個專用組件提供企業專注的PDF解決方案。 與IronPDF的統一方法不同,ActivePDF為不同的PDF任務提供單獨的產品,需要仔細考慮授權選項和企業部署策略。
ActivePDF WebGrabber 為HTML到PDF轉換而設計的是什麼?
ActivePDF WebGrabber專門設計用於將HTML來源(URL、HTML文件或HTML字串)轉換為PDF格式。 它為頁面屬性提供配置選項,包括頁頭、頁腳、邊距、水印和書籤。 WebGrabber 支持本機和Internet Explorer渲染引擎。
ActivePDF DocConverter 用於文件轉換的組件是什麼?
ActivePDF DocConverter處理超過300個文件格式的轉換為PDF,包括Microsoft Office文件、圖像、CAD文件等。 它具有監控文件夾自動化、批處理能力和企業級文件管理功能。
現代CSS框架如Bootstrap如何在PDF中渲染?
當代網頁應用越來越依賴CSS框架,如Bootstrap、Foundation和Tailwind CSS,以達到一致的、響應式的UI開發。 PDF生成程式庫必須準確渲染這些框架,以維持專業的文件質量和設計保真度。 了解每個程式庫如何處理響應式CSS和現代網頁字體對於選擇合適的解決方案至關重要。
IronPDF如何處理Bootstrap和現代框架支持?
IronPDF的Chromium渲染引擎確保對所有現代CSS框架和規範的完整支持,提供像素完美的渲染:
- Bootstrap 5:完整的flexbox和CSS Grid渲染,帶有響應式工具
- Bootstrap 4:完整的卡片系統、導航組件和表單佈局
- Tailwind CSS:所有的工具優先類和響應變體正確渲染
- Foundation:完整的網格和組件系統支持
- 現代CSS3:Flexbox,CSS Grid,自訂屬性,動畫,過渡和變換
- JavaScript執行:完全支持動態內容和框架交互
已通過生產範例驗證:Bootstrap主頁和官方模板使用IronPDF的渲染選項進行轉換,保有瀏覽器準確性。
程式碼範例:使用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版本(4+)構建的應用程式需要與ActivePDF WebGrabber一起進行大量額外工作。 團隊必須:
- 為PDF生成維護並行的簡化CSS(雙重維護負擔)
- 將網頁UI限制為Bootstrap 3或更舊版本(犧牲現代響應功能)
- 手動測試和修正每個Bootstrap組件(耗時且易出錯)
对于深度投資於Bootstrap或現代CSS框架的專案,ActivePDF WebGrabber的渲染限制會顯著增加開發成本並減少設計的靈活性。 請考慮使用IronPDF的Chrome渲染器以獲得準確的Bootstrap渲染。
完整的Bootstrap框架相容性指導,請參見Bootstrap與Flexbox CSS指南。
為什麼開發者選擇IronPDF而非ActivePDF?
IronPDF的渲染速度提供了不同內容型別間一致的HTML到PDF轉換性能。該程式庫的記憶體使用已針對頁眉頁腳進行了優化,提高了渲染效率。
開發者欣賞IronPDF簡單API設計,它使得PDF生成通常只需編寫三行了程式碼,相比ActivePDF的更複雜的多步驟過程。 完整的文件包含100多個程式碼範例和詳細教程,使團隊能夠快速入門,具備異步PDF生成和批處理等功能。
什麼時候ActivePDF可能是更好的選擇?
ActivePDF在要求以下功能的企業環境中表現優異:
- 使用監控資料夾的自動批處理
- 支持300多種文件格式轉換(通過
DocConverter) - 在Windows Server上的遺留系統整合
- 先進表單欄位操作和XFA表單支持
- 用於歸檔需求的多個PDF/A合規級別
擁有現有ActivePDF基礎設施或特定企業流程需求的組織可能會覺得ActivePDF的模組化方法益於其他系統,但與IronPDF的功能相比,成本更高,複雜性更大。
比較
ActivePDF與IronPDF功能如何比較?
哪個程式庫提供更好的HTML到PDF轉換能力?
IronPDF使用完整的Chrome V8渲染引擎,提供高保真瀏覽器渲染,完全支持HTML5、CSS3、JavaScript和網頁字體。 ActivePDF WebGrabber 提供本機和Internet Explorer引擎,但JavaScript執行和CSS3支持有限。 本機引擎不支持CSS樣式表,而IE引擎依賴於已淘汰的Internet Explorer 11,缺乏現代網頁標準,如CSS Grid和flexbox佈局。
這些程式庫在文件格式支持上如何比較?
雖然IronPDF專注於常見格式(HTML、DOCX、圖像、RTF、Markdown),ActivePDF DocConverter 支持超過300種文件格式,包括CAD文件、遺留文件格式和專用企業格式。 這使得ActivePDF更適合處理各種文件型別的組織,雖然IronPDF的轉換功能涵蓋了現代應用中最常用的格式。
那麼PDF操作功能呢?
這兩個程式庫都提供完整的PDF操作能力:
IronPDF提供:
ActivePDF提供:
步驟 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 需要一個更複雜的安裝過程:
- 從ActivePDF網站下載安裝程式
- 由ActivePDF銷售部門申請許可證碼(可用評估碼)
- 以管理員身份執行安裝程式
- 在安裝過程中配置
WebGrabber服務 - 對於Windows Server 2012+,為服務建立一個專用的使用者帳戶
安裝後,新增對於的WebGrabber引用:
C:\Program Files\ActivePDF\WebGrabber\bin\APWebGrabber.Net45.dll
如何安裝ActivePDF DocConverter?
DocConverter 遵循類似的安裝模式:
- 下載
DocConverter安裝程式 - 以管理員權限安裝
- 如果使用拖放轉換,請配置監控文件夾
- 設定Configuration Manager進行批處理
注意: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方法的主要優勢:
ActivePDF WebGrabber 如何將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?
該範例顯示兩個程式庫如何處理更複雜的HTML帶有CSS樣式:
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 WebGrabber 如何將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 WebGrabber 如何將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 WebGrabber如何設置頁眉和頁腳?
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使用專有佔位符(%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 Toolkit如何處理表單?
// 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還支持PDF/A-3與ZUGFeRD進行電子發票。 了解更多細節,請參閱PDF/A的里程碑更新。
如何使用ActivePDF DocConverter建立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如何處理批次處理?
// 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渲染:在簡單和複雜內容中快速且一致
- 記憶體使用:在典型渲染情況中優化為低佔用
- 頭次啟動:Chrome引擎初始化增加了一次性啟動成本
- 隨後的渲染受益於引擎預熱
欲獲取詳細的性能優化提示,請參閱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` | 支持URL、文件和HTML字串的HTML到PDF轉換。包括原生和IE渲染引擎。 |
| ActivePDF Toolkit | 高級PDF操作,包括表單、註釋、安全性和低層次的PDF操作。 |
| ActivePDF Server | 面向網路環境的基於伺服器的PDF列印解決方案。 |
| ActivePDF Meridian | 網路PDF列印機,用於將文件列印至PDF,不收取每使用者費用。 |
| ActivePDF OCR | 光學字元識別,用於使掃描的PDF可被搜尋。 |
| ActivePDF Xtractor | 從PDF文件中提取文字和圖片以進行資料處理。 |
| ActivePDF Redactor | 永久刪除PDF文件中的敏感資訊。 |
授權和定價如何比較?
IronPDF和ActivePDF的授權成本如何比較?
IronPDF的授權選擇和定價(截至2026年4月)是什麼?
- Lite License: $999(1位開發者、1個地點、1個專案)
- Plus License: $1,499(3位開發者、3個地點、3個專案)
- Professional License: $2,399(10位開發者、10個地點、10個專案)
- Unlimited License: 自定價格(無限開發者/專案)
- Iron Suite: $2,998(所有10個Iron Software產品)
所有授權都包括24/5工程支援,終身授權有效性,並提供擴展和升級選項。
- WebGrabber: 定價需要直接聯系ActivePDF/Apryse銷售
- DocConverter: 定價需要直接聯系ActivePDF/Apryse銷售
- Toolkit: 定價需要直接聯系ActivePDF/Apryse銷售
- 支援: 高級支援需另外付費
- 多個元件: 當需要多個元件時,成本累積很快
總成本比較是什麼?
小型開發團隊(3名開發者)- 成本比較是什麼?
- IronPDF Plus License: $1,499(包括所有功能)
- ActivePDF
WebGrabber+DocConverter: 需要直接聯系ActivePDF/Apryse銷售以獲取價格 - IronPDF通常在多元件ActivePDF部署中代表顯著節約
企業團隊(10名開發者) - 成本比較是什麼?
- IronPDF Professional: $2,399(所有功能)
- ActivePDF Suite(多個元件):需要聯系ActivePDF/Apryse銷售以獲取價格
- IronPDF的全包定價避免了多個單獨元件授權的成本累積
欲了解與其他競爭對手的詳細價格比較,請參閱IronPDF vs Aspose,IronPDF vs iText,和IronPDF vs Syncfusion。
哪個庫提供更好的開發者支持?
哪個庫提供更好的開發者支持?
IronPDF提供什麼支援?
關於支援的最佳實踐,請參閱如何提出工程支援請求和獲得最佳支援。
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基礎設施方面有特定要求的企業的可行選擇。 然而,模塊化的定價模型和複雜的安裝過程可能會給小型團隊或新項目帶來挑戰。
準備好開始了嗎?
今天就使用IronPDF開始專案,免費試用。
常見問題
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模式進行批次處理,允許您使用RenderHtmlFileAsPdfAsync等方法同時處理多個PDF轉換。
IronPDF如何處理PDF中的數位簽名?
IronPDF提供PdfSignature類,以往PDF文件中新增數位簽名。它支持基於證書的簽名,並允許定制簽名的外觀和元資料。
使用IronPDF進行.NET開發的成本考量是什麼?
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()控制時序,確保完整和精確的轉換。



