跳至頁尾內容
PDF工具

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的.NET開發比較
類別 功能/方面 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,網頁應用,微服務 文件管理,批處理 根據需求
注。根據2026年4月的當前版本比較。 ActivePDF為特定企業需求提供模組化組件,而IronPDF提供整合解決方案。 為ActivePDF選擇組件時,價格有顯著差異。

比較IronPDF和ActivePDF組件

  • 獲取IronPDF的C# PDF程式庫
  • 比較IronPDF和ActivePDF功能
  • 比較URL到PDF的程式碼
  • 比較HTML字串到PDF的程式碼
  • 比較授權,免費軟體選項及更多
下載完整的C# PDF生成簡易指南,對比IronPDF和ActivePDF功能,程式碼範例和最佳實踐

概覽

什麼是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")
$vbLabelText   $csharpLabel

輸出:專業的定價表,保留了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一起進行大量額外工作。 團隊必須:

  1. 為PDF生成維護並行的簡化CSS(雙重維護負擔)
  2. 將網頁UI限制為Bootstrap 3或更舊版本(犧牲現代響應功能)
  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渲染引擎,提供高保真瀏覽器渲染,完全支持HTML5CSS3JavaScript網頁字體。 ActivePDF WebGrabber 提供本機和Internet Explorer引擎,但JavaScript執行和CSS3支持有限。 本機引擎不支持CSS樣式表,而IE引擎依賴於已淘汰的Internet Explorer 11,缺乏現代網頁標準,如CSS Gridflexbox佈局

這些程式庫在文件格式支持上如何比較?

雖然IronPDF專注於常見格式(HTMLDOCX圖像RTFMarkdown),ActivePDF DocConverter 支持超過300種文件格式,包括CAD文件、遺留文件格式和專用企業格式。 這使得ActivePDF更適合處理各種文件型別的組織,雖然IronPDF的轉換功能涵蓋了現代應用中最常用的格式。

那麼PDF操作功能呢?

這兩個程式庫都提供完整的PDF操作能力

IronPDF提供:

ActivePDF提供:


步驟 1:安裝

如何安裝IronPDF?

應該為IronPDF選用哪種安裝方法?

開發者可以通過多種方法安裝IronPDF,其中NuGet包管理器是最方便的一種:

NuGet包管理器

在Visual Studio中打開NuGet包管理器並搜索IronPDF:

:InstallCmd
:InstallCmd
SHELL

手動下載IronPDF.dll

或者,下載IronPDF.dll並使用手動安裝方法將其引用新增到項目中。

安裝後,通過新增驗證存取:

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

IronPDF支持.NET 9 和 10,以及所有現代.NET版本,包括CoreStandardFramework 4.6.2+。 有關特定平台安裝,請參見用於LinuxmacOSDockerAzureAWS的指南。


如何安裝ActivePDF組件?

如何安裝ActivePDF WebGrabber

ActivePDF WebGrabber 需要一個更複雜的安裝過程:

  1. 從ActivePDF網站下載安裝程式
  2. 由ActivePDF銷售部門申請許可證碼(可用評估碼)
  3. 以管理員身份執行安裝程式
  4. 在安裝過程中配置WebGrabber服務
  5. 對於Windows Server 2012+,為服務建立一個專用的使用者帳戶

安裝後,新增對於的WebGrabber引用: C:\Program Files\ActivePDF\WebGrabber\bin\APWebGrabber.Net45.dll

如何安裝ActivePDF DocConverter

DocConverter 遵循類似的安裝模式:

  1. 下載DocConverter 安裝程式
  2. 以管理員權限安裝
  3. 如果使用拖放轉換,請配置監控文件夾
  4. 設定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
$vbLabelText   $csharpLabel

IronPDF方法的主要優勢:

  • 轉換僅需3行程式碼
  • 自動處理編碼和渲染
  • 內建的Chrome引擎確保准確渲染
  • 不需要單獨的文件路徑和名稱配置

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
$vbLabelText   $csharpLabel

兩個程式庫如何處理帶有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")
$vbLabelText   $csharpLabel

ChromePdfRenderer 類提供對渲染過程的廣泛控制,包括CSS媒體型別選擇、背景渲染和從HTML輸入元素自動表單欄位建立


如何將HTML文件轉換為PDF文件?

IronPDF如何將HTML文件轉換為PDF?

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

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

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

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

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

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

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

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

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

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

IronPDF自動處理:

ActivePDF 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
$vbLabelText   $csharpLabel

請注意,ActivePDF WebGrabber 對本地文件使用URL屬性,這對於期望特定文件方法的開發者來說可能會令人困惑。 對於更直觀的文件處理,請參考IronPDF的HTML文件轉換指南


如何將URL轉換為PDF文件?

IronPDF如何將URL轉換為PDF?

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

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

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

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

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

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

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

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

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

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

如何使用IronPDF處理異步URL轉換?

IronPDF提供出色的異步支持,以提高性能:

using IronPdf;
using System.Threading.Tasks;

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

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

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

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

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

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

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

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

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

WaitFor類提供精確控制渲染時機,這對於JavaScript密集型應用至關重要。 開發者可以使用JavaScript消息監聽器等待特定元素、網路閒置狀態或自定義JavaScript事件。

ActivePDF 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
$vbLabelText   $csharpLabel

對於更進階的URL轉換場景,包括身份驗證自定義標頭,請參閱IronPDF的URL到PDF指南


如何在PDF上建立水印?

IronPDF如何處理水印?

IronPDF通過HTML/CSS提供靈活的水印

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

使用IronPDF進行的進階水印:

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

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

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

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

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

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

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

ActivePDF如何建立水印?

ActivePDF需要使用文字印章作為替代方法:

using APWebGrabber;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ActivePDF的方法僅限於文字水印,需要手動計算定位。 欲了解更進階的浮水印功能,請參閱IronPDF的浮水印範例


如何為PDF設置頁眉和頁腳?

IronPDF如何新增頁眉和頁腳?

IronPDF提供簡單文字和複雜的HTML頁眉/頁腳

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

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

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

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

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

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

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

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

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

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

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

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

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

若需使用更複雜的頁眉/頁腳和HTML

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

IronPDF中可用的預定義合併欄位包括:

  • {page} - 當前頁碼
  • {total-pages} - 總頁數
  • {url} - 來源網址(如適用)
  • {date} - 當前日期
  • {time} - 當前時間
  • {html-title} - 來自HTML文件的標題
  • {pdf-title} - PDF元資料標題

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
$vbLabelText   $csharpLabel

注意: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")
$vbLabelText   $csharpLabel

了解有關使用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")
$vbLabelText   $csharpLabel

如何確保PDF/A合規?

兩個庫都支持PDF/A,但是方法不同:

如何使用IronPDF建立PDF/A?

using IronPdf;

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

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

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

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

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

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

IronPDF還支持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")
$vbLabelText   $csharpLabel

如何為PDF新增數位簽名?

IronPDF如何處理數位簽名?

using IronPdf;
using IronPdf.Signing;

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

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

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

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

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

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

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

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

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

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

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

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

欲瞭解進階簽署場景,請參閱IronPDF的簽署指南使用HSM簽署

如何處理批次處理?

IronPDF如何處理批次轉換?

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

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

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

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

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

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

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

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

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

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

有關更多批次處理技術,請參閱IronPDF的異步指南平行處理範例

ActivePDF DocConverter如何處理批次處理?

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

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

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

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

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

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

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

性能與資源如何比較?

這些庫在性能方面如何比較?

基於基準測試和實際使用情況:

IronPDF的性能特徵是什麼?

  • HTML渲染:在簡單和複雜內容中快速且一致
  • 記憶體使用:在典型渲染情況中優化為低佔用
  • 頭次啟動: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)
$vbLabelText   $csharpLabel

有關更多記憶體優化策略,請參閱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文件中的敏感資訊。

請注意這些組件中的許多需要單獨的授權,增加完整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 AsposeIronPDF 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開始專案,免費試用。

第一步:
green arrow pointer

請注意ActivePDF 是其各自擁有者的註冊商標。 此網站與ActivePDF無關,也未得到其認可或贊助。 所有產品名稱、徽標和品牌均為其各自所有者的財產。 比較僅供資訊參考,並反映了撰寫時的公開可用資訊。

常見問題

IronPDF和ActivePDF在.NET中的PDF生成有何比較?

IronPDF提供了一個精簡的PDF生成方法,具有基於Chrome的渲染引擎和直觀的API,支持包括.NET 9和10在內的現代.NET版本。而ActivePDF則提供如WebGrabber和DocConverter的模組化組件以應對企業場景,但需要更多配置。

如何使用C#將HTML轉換為PDF?

您可以使用IronPDF的RenderHtmlAsPdf方法快速將HTML字串轉換為PDF。對於基於文件的轉換,有RenderHtmlFileAsPdf方法可用,均支持高保真度的CSS3和JavaScript。

IronPDF的性能基準如何?

IronPDF表現出快速的HTML到PDF渲染能力,能在約 125-835 毫秒内完成任務,記憶體使用量低於10MB。它還在首尾頁提供顯著的記憶體和處理改進。

我可以用IronPDF自動化批次PDF處理嗎?

是的,IronPDF支持通過async/await模式進行批次處理,允許您使用RenderHtmlFileAsPdfAsync等方法同時處理多個PDF轉換。

IronPDF如何處理PDF中的數位簽名?

IronPDF提供PdfSignature類,以往PDF文件中新增數位簽名。它支持基於證書的簽名,並允許定制簽名的外觀和元資料。

使用IronPDF進行.NET開發的成本考量是什麼?

IronPDF的授權起價為749美元,包括所有功能。相比之下,ActivePDF的組件是分開定價的,導致類似功能的總成本更高。

IronPDF如何確保跨平台相容性?

IronPDF支持跨平台部署,包括Windows、Linux、macOS和Docker環境,使其適合多種開發需求和雲端應用程式。

我如何使用IronPDF新增PDF的首尾頁?

IronPDF提供TextHeaderFooterHtmlHeaderFooter類,允許您通過簡單的文字或複雜的HTML/CSS佈局來新增首尾頁。

IronPDF如何與現代.NET版本整合?

IronPDF完全支持現代.NET版本,包括.NET 9和10,以及.NET Core、.NET Standard和.NET Framework 4.6.2+,確保廣泛相容性和未來適應性。

在PDF轉換過程中是否支援JavaScript運行?

是的,IronPDF在渲染PDF之前完全執行JavaScript,用WaitFor.JavaScript()RenderDelay()控制時序,確保完整和精確的轉換。

Jacob Mellor,首席技術官 @ Team Iron
首席技術官

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

Jacob擁有曼徹斯特大學的土木工程一等榮譽學士學位(BEng),於1998-2001年之間獲得。在1999年於倫敦創辦他的第一家軟體公司並於2005年建立了他的第一批.NET元組件後,他專注於解決Microsoft生態系統中的複雜問題。

他的旗艦IronPDF和Iron Suite .NET程式庫在全球獲得了超過3000萬次NuGet安裝依據,他的基礎程式碼基繼續支援著世界各地開發者使用的工具。擁有25年的商業經驗和41年的程式設計專業知識,他仍專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話