跳過到頁腳內容
產品比較

IronPDF 和 PDFreactor 的比較

PDF(可攜式文件格式)檔案是許多不同工作環境中不可或缺的一部份,當涉及到製作發票或準備產品文件等工作時,PDF 檔案往往是不可或缺的。 然而,現在市面上有許多不同的 PDF 工具,您該如何知道哪一個適合您呢? 今天,我們將比較 PDF 函式庫的功能、支援和授權模式:PDFreactor 和 IronPDF

IronPDF。 和 PDFreactor 概述

IronPDF 是一個強大的 .NET 函式庫,旨在成為 .NET 生態系統中所有 PDF 相關任務的全面解決方案。 它支援 HTML、CSS、JavaScript 和各種圖片格式,因此對於網頁型應用程式有很高的適應性。 IronPDF 具有廣泛的功能,包括 PDF 生成、編輯、簽署和加密,以及與現代 .NET Framework 的完全整合,是 .NET 開發人員的一站式 PDF 解決方案。

PDFreactor 則是專業級的 HTML 至 PDF 轉換器,擅長於提供高品質的列印就緒 PDF,通常用於轉換資料驅動文件、報告或資料表等文件。 特別是在處理複雜的 CSS 和 JavaScript 方面有很強的能力,以確保所產生的 PDF 真實呈現原始網頁內容。 它因能輕鬆處理複雜版面和造型而備受推崇,因此適用於出版業和其他需要精確控制 PDF 輸出的產業。

跨平台相容性

IronPDF。:。

IronPDF 支援多種平台,確保您能在喜愛的環境下工作。 以下是其相容性的細目:

  • .NET版本:

    • C#、VB.NET、F#
    • .NET Core(8、7、6、5 和 3.1+)
    • .NET Standard (2.0+)
    • .NET Framework (4.6.2+)
  • 應用環境: IronPDF 可在 Windows、Linux、Mac、Docker、Azure 和 AWS 等環境中運作。

  • IDE:可與 Microsoft Visual Studio 和 JetBrains Rider & ReSharper 等 IDE 搭配使用。

  • 作業系統與處理器:支援多種不同的作業系統與處理器,包括 Windows、Mac、Linux、x64、x86、ARM。

如需詳細資訊,請造訪 IronPDF相容性

PDFreactor。

  • .NET版本:

    • .NET Core 2.1+
    • .NET Framework 4.5 以上
  • 支援: HTML5、CSS3、JavaScript、Java、Python、Docker Image、Node.js 等。

  • 作業系統:可在 Windows、Linux 和 macOS 作業系統,以及 AWS 和 Azure 等雲端系統中運作。

主要功能比較:IronPDF 與 PDFreactor 的 PDF 功能比較。

IronPDF。 功能

  • HTML 至 PDF 的轉換: IronPDF 可以處理 HTML 至 PDF 的轉換,其完全支援現代網路標準,您可以放心,IronPDF 將持續從您的 HTML 內容傳回像素完美的 PDF。

  • PDF 檔案轉換: 需要將 HTML 以外的檔案格式轉換為 PDF? IronPDF 支援多種不同檔案格式的轉換,包括; DOCX 至 PDF、RTF 至 PDF、圖片至 PDF、URL 至 PDF,甚至 PDF 至 HTML,同時保持所需的文件結構。

  • 安全功能:借助 IronPDF 的安全功能,您可以始终确保任何敏感 PDF 文件的安全。 使用 IronPDF 加密您的 PDF 檔案、設定密碼,以及為 PDF 檔案設定權限。

  • PDF編輯功能:使用 IronPDF,您可以輕鬆編輯 PDF 檔案。 IronPDF 提供的編輯功能包括新增頁首和頁尾,在 PDF 頁面上印製文字和圖片,在 PDF 上新增自訂水印,處理 PDF 表單,以及合併 PDF 檔案。

如需 IronPDF 提供的詳細功能資訊,請造訪 IronPDF功能

PDFreactor。 功能

  • HTML 至 PDF 的轉換: PDFreactor 網路服務專門從伺服器端將 HTML 轉換為 PDF,通常用於動態資料驅動文件(如發票、表單、報告等)的轉換,以及複雜且高品質 PDF 的電子發行。

  • 互動式支援:由於支援 JavaScript,PDFreactor 支援嵌入互動式元素,例如按鈕和表格,這些元素可以在 PDF 中保留其功能。

  • 進階佈局設計: PDFreactor 提供進階佈局和設計功能,例如控制頁面佈局、支援多欄、在 PDF 中加入元素、縮放和轉換元素、加入頁首和頁尾,以及自訂頁面大小和方向。

Bootstrap 與現代 CSS 架構相容性

從現代網路應用程式產生 PDF 時,Bootstrap 和 CSS 架構支援是不可或缺的。 能夠直接將 Bootstrap 風格的網頁轉換為 PDF,而無需修改程式碼,可確保設計的一致性,並大幅縮短開發時間。

IronPDF。:完整的 Bootstrap 和 CSS 框架支援。

Bootstrap 5:完整的 Flexbox 佈局引擎、CSS Grid、實用類別和所有元件系統

  • Bootstrap 4:完整的卡片元件、導航元素、彈性佈局工具和響應式斷點 Tailwind CSS:所有實用優先的類別都能以瀏覽器精確度渲染。 -基礎:完整的網格系統和組件庫支持 現代CSS3: Flexbox、CSS Grid、自訂屬性、動畫、轉換與變換

真實世界驗證:IronPDF 成功渲染 Bootstrap 首頁和所有 官方範例,精確度高達像素級。

程式碼範例:訂單追蹤儀表板

using IronPdf;

// Set your IronPDF license key
IronPdf.License.LicenseKey = "License-Key goes here";

var renderer = new ChromePdfRenderer();
string bootstrapTracking = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container my-5'>
        <h1 class='mb-4'>Order Tracking - #ORD-2025-0428</h1>

        <div class='row g-4 mb-4'>
            <div class='col-md-4'>
                <div class='card text-center bg-primary text-white h-100'>
                    <div class='card-body'>
                        <h3>Order Placed</h3>
                        <p class='mb-0'>April 20, 2025</p>
                    </div>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='card text-center bg-info text-white h-100'>
                    <div class='card-body'>
                        <h3>Processing</h3>
                        <p class='mb-0'>April 21, 2025</p>
                    </div>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='card text-center bg-light h-100'>
                    <div class='card-body'>
                        <h3 class='text-muted'>Delivered</h3>
                        <p class='mb-0 text-muted'>Est. April 25, 2025</p>
                    </div>
                </div>
            </div>
        </div>

        <div class='card shadow-sm mb-4'>
            <div class='card-header bg-white'>
                <h5 class='mb-0'>Shipping Timeline</h5>
            </div>
            <div class='card-body'>
                <ul class='list-group list-group-flush'>
                    <li class='list-group-item d-flex'>
                        <span class='badge bg-success me-3'>✓</span>
                        <div class='flex-grow-1'>
                            <strong>Order Confirmed</strong>
                            <p class='mb-0 text-muted'>April 20, 2025 at 2:30 PM</p>
                        </div>
                    </li>
                    <li class='list-group-item d-flex'>
                        <span class='badge bg-success me-3'>✓</span>
                        <div class='flex-grow-1'>
                            <strong>Payment Processed</strong>
                            <p class='mb-0 text-muted'>April 20, 2025 at 2:35 PM</p>
                        </div>
                    </li>
                    <li class='list-group-item d-flex'>
                        <span class='badge bg-success me-3'>✓</span>
                        <div class='flex-grow-1'>
                            <strong>Order Shipped</strong>
                            <p class='mb-0 text-muted'>April 21, 2025 at 9:00 AM</p>
                            <small class='text-muted'>Tracking: TRK-9876543210</small>
                        </div>
                    </li>
                    <li class='list-group-item d-flex'>
                        <span class='badge bg-primary me-3'>→</span>
                        <div class='flex-grow-1'>
                            <strong>In Transit</strong>
                            <p class='mb-0 text-primary'>Currently en route to delivery location</p>
                        </div>
                    </li>
                    <li class='list-group-item d-flex'>
                        <span class='badge bg-secondary me-3'>○</span>
                        <div class='flex-grow-1'>
                            <strong>Out for Delivery</strong>
                            <p class='mb-0 text-muted'>Pending</p>
                        </div>
                    </li>
                    <li class='list-group-item d-flex'>
                        <span class='badge bg-secondary me-3'>○</span>
                        <div class='flex-grow-1'>
                            <strong>Delivered</strong>
                            <p class='mb-0 text-muted'>Est. April 25, 2025</p>
                        </div>
                    </li>
                </ul>
            </div>
        </div>

        <div class='card shadow-sm'>
            <div class='card-header bg-primary text-white'>
                <h5 class='mb-0'>Order Details</h5>
            </div>
            <div class='card-body'>
                <div class='table-responsive'>
                    <table class='table mb-0'>
                        <thead class='table-light'>
                            <tr>
                                <th>Item</th>
                                <th>Quantity</th>
                                <th class='text-end'>Price</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td><strong>Premium Widget Pro</strong></td>
                                <td>2</td>
                                <td class='text-end'>$199.98</td>
                            </tr>
                            <tr>
                                <td><strong>Standard Gadget</strong></td>
                                <td>1</td>
                                <td class='text-end'>$49.99</td>
                            </tr>
                            <tr>
                                <td colspan='2'><strong>Subtotal</strong></td>
                                <td class='text-end'><strong>$249.97</strong></td>
                            </tr>
                            <tr>
                                <td colspan='2'>Shipping</td>
                                <td class='text-end'>$12.50</td>
                            </tr>
                            <tr class='table-primary'>
                                <td colspan='2'><strong>Total</strong></td>
                                <td class='text-end'><strong>$262.47</strong></td>
                            </tr>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapTracking);
pdf.SaveAs("order-tracking.pdf");
using IronPdf;

// Set your IronPDF license key
IronPdf.License.LicenseKey = "License-Key goes here";

var renderer = new ChromePdfRenderer();
string bootstrapTracking = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container my-5'>
        <h1 class='mb-4'>Order Tracking - #ORD-2025-0428</h1>

        <div class='row g-4 mb-4'>
            <div class='col-md-4'>
                <div class='card text-center bg-primary text-white h-100'>
                    <div class='card-body'>
                        <h3>Order Placed</h3>
                        <p class='mb-0'>April 20, 2025</p>
                    </div>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='card text-center bg-info text-white h-100'>
                    <div class='card-body'>
                        <h3>Processing</h3>
                        <p class='mb-0'>April 21, 2025</p>
                    </div>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='card text-center bg-light h-100'>
                    <div class='card-body'>
                        <h3 class='text-muted'>Delivered</h3>
                        <p class='mb-0 text-muted'>Est. April 25, 2025</p>
                    </div>
                </div>
            </div>
        </div>

        <div class='card shadow-sm mb-4'>
            <div class='card-header bg-white'>
                <h5 class='mb-0'>Shipping Timeline</h5>
            </div>
            <div class='card-body'>
                <ul class='list-group list-group-flush'>
                    <li class='list-group-item d-flex'>
                        <span class='badge bg-success me-3'>✓</span>
                        <div class='flex-grow-1'>
                            <strong>Order Confirmed</strong>
                            <p class='mb-0 text-muted'>April 20, 2025 at 2:30 PM</p>
                        </div>
                    </li>
                    <li class='list-group-item d-flex'>
                        <span class='badge bg-success me-3'>✓</span>
                        <div class='flex-grow-1'>
                            <strong>Payment Processed</strong>
                            <p class='mb-0 text-muted'>April 20, 2025 at 2:35 PM</p>
                        </div>
                    </li>
                    <li class='list-group-item d-flex'>
                        <span class='badge bg-success me-3'>✓</span>
                        <div class='flex-grow-1'>
                            <strong>Order Shipped</strong>
                            <p class='mb-0 text-muted'>April 21, 2025 at 9:00 AM</p>
                            <small class='text-muted'>Tracking: TRK-9876543210</small>
                        </div>
                    </li>
                    <li class='list-group-item d-flex'>
                        <span class='badge bg-primary me-3'>→</span>
                        <div class='flex-grow-1'>
                            <strong>In Transit</strong>
                            <p class='mb-0 text-primary'>Currently en route to delivery location</p>
                        </div>
                    </li>
                    <li class='list-group-item d-flex'>
                        <span class='badge bg-secondary me-3'>○</span>
                        <div class='flex-grow-1'>
                            <strong>Out for Delivery</strong>
                            <p class='mb-0 text-muted'>Pending</p>
                        </div>
                    </li>
                    <li class='list-group-item d-flex'>
                        <span class='badge bg-secondary me-3'>○</span>
                        <div class='flex-grow-1'>
                            <strong>Delivered</strong>
                            <p class='mb-0 text-muted'>Est. April 25, 2025</p>
                        </div>
                    </li>
                </ul>
            </div>
        </div>

        <div class='card shadow-sm'>
            <div class='card-header bg-primary text-white'>
                <h5 class='mb-0'>Order Details</h5>
            </div>
            <div class='card-body'>
                <div class='table-responsive'>
                    <table class='table mb-0'>
                        <thead class='table-light'>
                            <tr>
                                <th>Item</th>
                                <th>Quantity</th>
                                <th class='text-end'>Price</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td><strong>Premium Widget Pro</strong></td>
                                <td>2</td>
                                <td class='text-end'>$199.98</td>
                            </tr>
                            <tr>
                                <td><strong>Standard Gadget</strong></td>
                                <td>1</td>
                                <td class='text-end'>$49.99</td>
                            </tr>
                            <tr>
                                <td colspan='2'><strong>Subtotal</strong></td>
                                <td class='text-end'><strong>$249.97</strong></td>
                            </tr>
                            <tr>
                                <td colspan='2'>Shipping</td>
                                <td class='text-end'>$12.50</td>
                            </tr>
                            <tr class='table-primary'>
                                <td colspan='2'><strong>Total</strong></td>
                                <td class='text-end'><strong>$262.47</strong></td>
                            </tr>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapTracking);
pdf.SaveAs("order-tracking.pdf");
Imports IronPdf

' Set your IronPDF license key
IronPdf.License.LicenseKey = "License-Key goes here"

Dim renderer As New ChromePdfRenderer()
Dim bootstrapTracking As String = "
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container my-5'>
        <h1 class='mb-4'>Order Tracking - #ORD-2025-0428</h1>

        <div class='row g-4 mb-4'>
            <div class='col-md-4'>
                <div class='card text-center bg-primary text-white h-100'>
                    <div class='card-body'>
                        <h3>Order Placed</h3>
                        <p class='mb-0'>April 20, 2025</p>
                    </div>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='card text-center bg-info text-white h-100'>
                    <div class='card-body'>
                        <h3>Processing</h3>
                        <p class='mb-0'>April 21, 2025</p>
                    </div>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='card text-center bg-light h-100'>
                    <div class='card-body'>
                        <h3 class='text-muted'>Delivered</h3>
                        <p class='mb-0 text-muted'>Est. April 25, 2025</p>
                    </div>
                </div>
            </div>
        </div>

        <div class='card shadow-sm mb-4'>
            <div class='card-header bg-white'>
                <h5 class='mb-0'>Shipping Timeline</h5>
            </div>
            <div class='card-body'>
                <ul class='list-group list-group-flush'>
                    <li class='list-group-item d-flex'>
                        <span class='badge bg-success me-3'>✓</span>
                        <div class='flex-grow-1'>
                            <strong>Order Confirmed</strong>
                            <p class='mb-0 text-muted'>April 20, 2025 at 2:30 PM</p>
                        </div>
                    </li>
                    <li class='list-group-item d-flex'>
                        <span class='badge bg-success me-3'>✓</span>
                        <div class='flex-grow-1'>
                            <strong>Payment Processed</strong>
                            <p class='mb-0 text-muted'>April 20, 2025 at 2:35 PM</p>
                        </div>
                    </li>
                    <li class='list-group-item d-flex'>
                        <span class='badge bg-success me-3'>✓</span>
                        <div class='flex-grow-1'>
                            <strong>Order Shipped</strong>
                            <p class='mb-0 text-muted'>April 21, 2025 at 9:00 AM</p>
                            <small class='text-muted'>Tracking: TRK-9876543210</small>
                        </div>
                    </li>
                    <li class='list-group-item d-flex'>
                        <span class='badge bg-primary me-3'>→</span>
                        <div class='flex-grow-1'>
                            <strong>In Transit</strong>
                            <p class='mb-0 text-primary'>Currently en route to delivery location</p>
                        </div>
                    </li>
                    <li class='list-group-item d-flex'>
                        <span class='badge bg-secondary me-3'>○</span>
                        <div class='flex-grow-1'>
                            <strong>Out for Delivery</strong>
                            <p class='mb-0 text-muted'>Pending</p>
                        </div>
                    </li>
                    <li class='list-group-item d-flex'>
                        <span class='badge bg-secondary me-3'>○</span>
                        <div class='flex-grow-1'>
                            <strong>Delivered</strong>
                            <p class='mb-0 text-muted'>Est. April 25, 2025</p>
                        </div>
                    </li>
                </ul>
            </div>
        </div>

        <div class='card shadow-sm'>
            <div class='card-header bg-primary text-white'>
                <h5 class='mb-0'>Order Details</h5>
            </div>
            <div class='card-body'>
                <div class='table-responsive'>
                    <table class='table mb-0'>
                        <thead class='table-light'>
                            <tr>
                                <th>Item</th>
                                <th>Quantity</th>
                                <th class='text-end'>Price</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td><strong>Premium Widget Pro</strong></td>
                                <td>2</td>
                                <td class='text-end'>$199.98</td>
                            </tr>
                            <tr>
                                <td><strong>Standard Gadget</strong></td>
                                <td>1</td>
                                <td class='text-end'>$49.99</td>
                            </tr>
                            <tr>
                                <td colspan='2'><strong>Subtotal</strong></td>
                                <td class='text-end'><strong>$249.97</strong></td>
                            </tr>
                            <tr>
                                <td colspan='2'>Shipping</td>
                                <td class='text-end'>$12.50</td>
                            </tr>
                            <tr class='table-primary'>
                                <td colspan='2'><strong>Total</strong></td>
                                <td class='text-end'><strong>$262.47</strong></td>
                            </tr>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
</body>
</html>"

Dim pdf = renderer.RenderHtmlAsPdf(bootstrapTracking)
pdf.SaveAs("order-tracking.pdf")
$vbLabelText   $csharpLabel

輸出:專業的訂單追蹤 PDF,採用 Bootstrap 5 的網格系統、卡片組件、徽章、列表組、響應式表格和 flexbox 佈局——所有元素均以完美的顏色準確性和間距呈現。

PDFreactor。:具有 Java 依賴性的良好 Bootstrap 支援。

PDFreactor 使用 Prince XML 引擎,可提供穩固的 Bootstrap 支援,但也有架構上的考量:

-對 Bootstrap 4/5 的支援良好: Prince XML 對現代框架的處理相當不錯。

  • Java 需求: PDFreactor 運行在 Java 平台上,這增加了 .NET 應用程式的部署複雜性。 -基於伺服器的架構:需要專用伺服器基礎設施 -許可模式:按伺服器許可,而不是按開發者許可

開發影響:雖然 PDFreactor 可以有效地處理 Bootstrap,但 Java 依賴項和伺服器要求增加了 .NET 團隊的維運複雜性,需要額外的基礎設施管理和跨平台協調。

如需全面的 Bootstrap 框架指南和 CSS3 渲染功能,請參閱 Bootstrap & Flexbox CSS 指南

IronPDF 與 PDFreactor 的主要功能比較

現在,讓我們仔細看看您在處理 PDF 檔案時可能會面臨的一些常見用例。 在本節中,我們將以這些用例為基礎,比較 IronPDF 和 PDFreactor 如何處理這些用例。

HTML 至 PDF 轉換

IronPDF:

using IronPdf;

// Enable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;

// Instantiate Renderer
var renderer = new ChromePdfRenderer();

// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");

// Export to a file or Stream
pdf.SaveAs("output.pdf");

// Advanced Example with HTML Assets
// Load external html assets: images, CSS and JavaScript.
// An optional BasePath 'c:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"c:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
using IronPdf;

// Enable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;

// Instantiate Renderer
var renderer = new ChromePdfRenderer();

// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");

// Export to a file or Stream
pdf.SaveAs("output.pdf");

// Advanced Example with HTML Assets
// Load external html assets: images, CSS and JavaScript.
// An optional BasePath 'c:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"c:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
Imports IronPdf

' Enable local disk access or cross-origin requests
Installation.EnableWebSecurity = True

' Instantiate Renderer
Dim renderer = New ChromePdfRenderer()

' Create a PDF from an HTML string using C#
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")

' Export to a file or Stream
pdf.SaveAs("output.pdf")

' Advanced Example with HTML Assets
' Load external html assets: images, CSS and JavaScript.
' An optional BasePath 'c:\site\assets\' is set as the file location to load assets from
Dim myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", "c:\site\assets\")
myAdvancedPdf.SaveAs("html-with-assets.pdf")
$vbLabelText   $csharpLabel

PDFreactor:

using System.IO;
using RealObjects.PDFreactor.Webservice.Client;

PDFreactor pdfReactor = new PDFreactor("https://cloud.pdfreactor.com/service/rest") {
    Timeout = 0
};
var config = new Configuration
{
    Document = "http://www.pdfreactor.com/product/samples/textbook/textbook.html"
};

Result data = pdfReactor.Convert(config);
BinaryWriter binWriter = new BinaryWriter(new FileStream("test.pdf",
    FileMode.Create,
    FileAccess.Write));
binWriter.Write(data.Document);
binWriter.Close();
using System.IO;
using RealObjects.PDFreactor.Webservice.Client;

PDFreactor pdfReactor = new PDFreactor("https://cloud.pdfreactor.com/service/rest") {
    Timeout = 0
};
var config = new Configuration
{
    Document = "http://www.pdfreactor.com/product/samples/textbook/textbook.html"
};

Result data = pdfReactor.Convert(config);
BinaryWriter binWriter = new BinaryWriter(new FileStream("test.pdf",
    FileMode.Create,
    FileAccess.Write));
binWriter.Write(data.Document);
binWriter.Close();
Imports System.IO
Imports RealObjects.PDFreactor.Webservice.Client

Private pdfReactor As New PDFreactor("https://cloud.pdfreactor.com/service/rest") With {.Timeout = 0}
Private config = New Configuration With {.Document = "http://www.pdfreactor.com/product/samples/textbook/textbook.html"}

Private data As Result = pdfReactor.Convert(config)
Private binWriter As New BinaryWriter(New FileStream("test.pdf", FileMode.Create, FileAccess.Write))
binWriter.Write(data.Document)
binWriter.Close()
$vbLabelText   $csharpLabel

IronPDF 使用 ChromePdfRenderer 並支援現代網路標準,因此可提供高保真 PDF 檔案。 使用 IronPDF 進行 HTML 至 PDF 的轉換時,您將能夠從 HTML 文件、網頁等創建像素完美的 PDF。 雖然 PDFreactor 以 HTML 至 PDF 的轉換功能引以為傲,並能提供高品質的 PDF 文件,但它採用較為手動的方式,需要更多行的程式碼。

如需瞭解更多使用 IronPDF 進行 HTML 至 PDF 轉換的範例,請造訪 IronPDF HTML 至 PDF

加密 PDF 文件

IronPDF:

using IronPdf;
using System;

// Open an Encrypted File, alternatively create a new PDF from Html
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");

// Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto";
pdf.MetaData.Keywords = "SEO, Friendly";
pdf.MetaData.ModifiedDate = DateTime.Now;

// Edit file security settings
// The following code makes a PDF read only and will disallow copy & paste and printing
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key");
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;

// Change or set the document encryption password
pdf.Password = "my-password";
pdf.SaveAs("secured.pdf");
using IronPdf;
using System;

// Open an Encrypted File, alternatively create a new PDF from Html
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");

// Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto";
pdf.MetaData.Keywords = "SEO, Friendly";
pdf.MetaData.ModifiedDate = DateTime.Now;

// Edit file security settings
// The following code makes a PDF read only and will disallow copy & paste and printing
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key");
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;

// Change or set the document encryption password
pdf.Password = "my-password";
pdf.SaveAs("secured.pdf");
Imports IronPdf
Imports System

' Open an Encrypted File, alternatively create a new PDF from Html
Private pdf = PdfDocument.FromFile("encrypted.pdf", "password")

' Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto"
pdf.MetaData.Keywords = "SEO, Friendly"
pdf.MetaData.ModifiedDate = DateTime.Now

' Edit file security settings
' The following code makes a PDF read only and will disallow copy & paste and printing
pdf.SecuritySettings.RemovePasswordsAndEncryption()
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key")
pdf.SecuritySettings.AllowUserAnnotations = False
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserFormData = False
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights

' Change or set the document encryption password
pdf.Password = "my-password"
pdf.SaveAs("secured.pdf")
$vbLabelText   $csharpLabel

PDFreactor:

PDFreactor 主要以 HTML 至 PDF 的轉換工具而聞名,因此不提供任何內建的 PDF 加密支援。

IronPDF 使用清晰的 C# 方法簡化了 PDF 加密,並為 加密 PDF 提供了一個簡單直接但功能強大的工具。 使用 IronPDF,您可以完全控制整個過程,甚至是安全設定。 使用 PDFreactor 時,您需要尋找可以處理 PDF 加密任務的第三方函式庫,因為 PDFreactor 目前不支援此功能。

如需更多加密範例,請造訪 IronPDF 有關此主題的 how-to 指南

重制 PDF 內容

IronPDF:

using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("novel.pdf");

// Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are");

pdf.SaveAs("redacted.pdf");
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("novel.pdf");

// Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are");

pdf.SaveAs("redacted.pdf");
Imports IronPdf

Private pdf As PdfDocument = PdfDocument.FromFile("novel.pdf")

' Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are")

pdf.SaveAs("redacted.pdf")
$vbLabelText   $csharpLabel

PDFreactor:

PDFreactor 並不直接支援編輯,因為其功能集更偏重於從 HTML 內容產生 PDF 文件以及設計這些 PDF。

IronPDF 為您提供簡明易用的 刪除工具,讓您只需幾行程式碼即可刪除 PDF 文件中的內容。 然而,PDFreactor 並未提供任何內建的編輯工具。

簽署 PDF 文件

IronPDF:

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

ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>foo</h1>");

// Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);

// Create PdfSignature object
var sig = new PdfSignature(cert);

// Sign PDF document
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;

ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>foo</h1>");

// Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);

// Create PdfSignature object
var sig = new PdfSignature(cert);

// Sign PDF document
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");
Imports IronPdf
Imports IronPdf.Signing
Imports System.Security.Cryptography.X509Certificates

Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>foo</h1>")

' Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
Private cert As New X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable)

' Create PdfSignature object
Private sig = New PdfSignature(cert)

' Sign PDF document
pdf.Sign(sig)
pdf.SaveAs("signed.pdf")
$vbLabelText   $csharpLabel

PDFreactor:

PDFreactor 不直接支援數位簽章。

IronPDF 的數位簽章功能為您提供直接、簡單的方式,讓您自動化簽署 PDF 的方式。 而 PDFreactor 不提供任何將數位簽章套用至 PDF 文件的支援。

有關使用 IronPDF 對 PDF 文件套用數位簽章的更多資訊,請造訪此工具的 how-to 指南

將水印套用至 PDF 頁面

IronPDF:

using IronPdf;

// Stamps a Watermark onto a new or existing PDF
var renderer = new ChromePdfRenderer();

var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/");
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);

pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
using IronPdf;

// Stamps a Watermark onto a new or existing PDF
var renderer = new ChromePdfRenderer();

var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/");
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);

pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
Imports IronPdf

' Stamps a Watermark onto a new or existing PDF
Private renderer = New ChromePdfRenderer()

Private pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/")
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center)

pdf.SaveAs("C:\Path\To\Watermarked.pdf")
$vbLabelText   $csharpLabel

PDFreactor:

PDFreactor 不直接支援水印。

IronPDF 的內建 watermark 工具利用 HTML 和 CSS 提供一種簡易的方式將水印套用至 PDF 頁面,同時讓您完全控制整個過程,而這一切只需使用幾行程式碼。

想要瞭解更多 IronPDF 的水印工具嗎? 請造訪我們對此工具有幫助的 how-to 指南

在 PDF 文件上標示圖片和文字

IronPDF:

using IronPdf;
using IronPdf.Editing;
using System;

ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");

// Create text stamper
TextStamper textStamper = new TextStamper()
{
    Text = "Text Stamper!",
    FontFamily = "Bungee Spice",
    UseGoogleFont = true,
    FontSize = 30,
    IsBold = true,
    IsItalic = true,
    VerticalAlignment = VerticalAlignment.Top,
};

// Stamp the text stamper
pdf.ApplyStamp(textStamper);

pdf.SaveAs("stampText.pdf");

// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("/img/svgs/iron-pdf-logo.svg"))
{
    VerticalAlignment = VerticalAlignment.Top,
};

// Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0);

pdf.SaveAs("stampImage.pdf");
using IronPdf;
using IronPdf.Editing;
using System;

ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");

// Create text stamper
TextStamper textStamper = new TextStamper()
{
    Text = "Text Stamper!",
    FontFamily = "Bungee Spice",
    UseGoogleFont = true,
    FontSize = 30,
    IsBold = true,
    IsItalic = true,
    VerticalAlignment = VerticalAlignment.Top,
};

// Stamp the text stamper
pdf.ApplyStamp(textStamper);

pdf.SaveAs("stampText.pdf");

// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("/img/svgs/iron-pdf-logo.svg"))
{
    VerticalAlignment = VerticalAlignment.Top,
};

// Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0);

pdf.SaveAs("stampImage.pdf");
Imports IronPdf
Imports IronPdf.Editing
Imports System

Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>")

' Create text stamper
Private textStamper As New TextStamper() With {
	.Text = "Text Stamper!",
	.FontFamily = "Bungee Spice",
	.UseGoogleFont = True,
	.FontSize = 30,
	.IsBold = True,
	.IsItalic = True,
	.VerticalAlignment = VerticalAlignment.Top
}

' Stamp the text stamper
pdf.ApplyStamp(textStamper)

pdf.SaveAs("stampText.pdf")

' Create image stamper
Dim imageStamper As New ImageStamper(New Uri("/img/svgs/iron-pdf-logo.svg")) With {.VerticalAlignment = VerticalAlignment.Top}

' Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0)

pdf.SaveAs("stampImage.pdf")
$vbLabelText   $csharpLabel

PDFreactor:

PDFreactor 不支援直接戳記

IronPDF 提供了一個強大的工具,可在 PDF 文件上標示文字和圖片。 透過近似 HTML 和 CSS 的方式,您可以完全控制蓋章流程。 然而,PDFreactor 並未提供任何內建戳記工具。

如果您想進一步瞭解 IronPDF 的圖像和文字戳記工具,請務必造訪我們的 使用指南

DOCX 至 PDF 轉換

IronPDF:

using IronPdf;

// Instantiate Renderer
DocxToPdfRenderer renderer = new DocxToPdfRenderer();

// Render from DOCX file
PdfDocument pdf = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx");

// Save the PDF
pdf.SaveAs("pdfFromDocx.pdf");
using IronPdf;

// Instantiate Renderer
DocxToPdfRenderer renderer = new DocxToPdfRenderer();

// Render from DOCX file
PdfDocument pdf = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx");

// Save the PDF
pdf.SaveAs("pdfFromDocx.pdf");
Imports IronPdf

' Instantiate Renderer
Private renderer As New DocxToPdfRenderer()

' Render from DOCX file
Private pdf As PdfDocument = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx")

' Save the PDF
pdf.SaveAs("pdfFromDocx.pdf")
$vbLabelText   $csharpLabel

PDFreactor:

PDFreactor 不支援 DOCX 到 PDF 的直接轉換,因為它的主要重點是 HTML 到 PDF 的轉換。

使用 IronPDF,您可以利用其簡明易用的 DOCX 轉換工具轉換您的 DOCX 檔案。 使用 PDFreactor 時,您需要安裝 DOCX 到 PDF 的轉換函式庫來處理轉換,因為 PDFreactor 並不支援此轉換。

如需更詳細瞭解 IronPDF 的 DOCX 至 PDF 轉換工具,請造訪相關的 使用指南

功能比較摘要

Pdfreactor Html To Pdf Alternative 1 related to 功能比較摘要

如需詳細的程式碼範例,請造訪 IronPDF 程式碼範例頁

定價與授權:IronPDF vs. PDFreactor

IronPDF。

IronPDF 有不同等級和購買授權的附加功能。 開發人員也可以購買 Iron Suite ,只要花費兩套產品的價格,就可以使用 Iron Software 的所有產品。 如果您尚未準備好購買授權,IronPDF 提供 免費試用,為期 30 天。

  • 永久授權:根據您的團隊規模、專案需求和地點數量,提供一系列永久授權。 每種授權類型都附有電子郵件支援。
  • Lite 許可證:此許可證價格為 $999,支援一名開發者、一個地點和一個專案。
  • Plus 許可證:支援三個開發者、三個地點和三個項目,這是比精簡版許可證更高一級的許可證,費用為 $1,499。 Plus License 除了提供基本的電子郵件支援外,還提供聊天支援和電話支援。 -專業許可證:此許可證適用於更大的團隊,支援十名開發人員、十個地點和十個項目,適用於 $2,999。 它提供與前幾層相同的聯絡支援管道,但也提供螢幕分享支援。 -免版稅再分發: IronPDF 的許可協議還提供免版稅再分發保障,需額外付費 $2,999 -不間斷的產品支援: IronPDF 提供持續的產品更新、安全功能升級以及來自其工程團隊的支持,您可以選擇每年支付 $1,499,或一次性購買 $2,999 以獲得 5 年的保障。
  • Iron Suite:對於 $1,498,您可以存取所有 Iron Software 產品,包括 IronPDF、IronOCR、IronWord、IronXL、IronBarcode、IronQR、IronZIP、IronPrint 和 IronWebScraper。

Pdfreactor Html To Pdf Alternative 2 related to IronPDF。

PDFreactor。

  • CPU 授權: 這是 PDFreactor 的基本費用,定價為 2,950 美元,最多支援 4 個 CPU 編碼,並包含第一年的支援和維護。

  • 附加元件:除了授權之外,PDFreactor 還提供下列附加元件; Raster Image Output 附加元件、一年的支援與維護延長,以及 CPU 授權升級。

文件和支援:IronPDF vs. PDFreactor

IronPDF。

IronPDF 擅長於提供廣泛的文件和支援:

  • 全面的說明文件: 涵蓋所有功能的廣泛且易於使用的說明文件。
  • 24/5支援:提供積極的工程師支援。
  • 視訊教學:YouTube 上提供了分步視訊指南。
  • 社群論壇:參與社群以獲得更多支援。
  • 定期更新:每月進行產品更新,以確保提供最新的功能和安全修補程式。

如需更多資訊,請參閱 IronPDF 廣泛的 說明文件,並請造訪 Iron Software YouTube 頻道

PDFreactor。

1.詳細文件:涵蓋 HTML 到 PDF 轉換的各個面向。 2.電子郵件支援:可解答技術和授權相關問題。 3.社群論壇:與其他使用者和開發者互動。 4.知識庫:存取文章和故障排除指南。 5.專業服務:為複雜的實施提供付費支援。

結論

說到 HTML 到 PDF 的轉換,IronPDF 和 PDFreactor 都是有力的競爭者,兩者都完全有能力從 HTML 內容建立 PDF 文件。 但是,如果您正在尋找一款可以處理更複雜任務的 PDF 工具,例如加密、水印以及將 HTML 以外的檔案類型轉換為 PDF,那麼 IronPDF 就是您的最佳選擇。

IronPDF 具有廣泛的功能集、與現代 .NET Framework 的相容性以及優異的支援,是您唾手可得的強大工具。 PDFreactor 雖然在其小眾市場中功能強大,但卻缺乏 IronPDF 所提供的某些進階功能與彈性。

您可以嘗試30天免費試用,以查看其可用功能。

請注意PDFreactor 是其各自所有者的註冊商標。 本網站與 PDFreactor 無任何關聯、背書或贊助。 所有產品名稱、標誌和品牌均為其各自擁有者的財產。 比較僅供參考,反映了撰寫時的公開信息。

常見問題解答

怎樣在 C# 中將 HTML 轉換為 PDF?

您可以使用 IronPDF 的 RenderHtmlAsPdf 方法將 HTML 字符串轉換為 PDF。您還可以使用 RenderHtmlFileAsPdf 將 HTML 文件轉換為 PDF。

IronPDF 和 PDFreactor 之間的主要區別是什麼?

IronPDF 提供廣泛的功能,如 PDF 生成、編輯、簽名和加密,以及對 HTML、CSS、JavaScript 和各種圖像格式的強大支持。PDFreactor 專注於高質量的 HTML 到 PDF 轉換,能夠優秀地處理復雜的 CSS 和 JavaScript 以生成可打印的 PDF。

IronPDF 可以在多個平台上使用嗎?

可以,IronPDF 支持多個平台,包括 Windows、Linux、macOS、Docker、Azure 和 AWS。它兼容於各種 .NET 版本,如 .NET Core、.NET Standard 和 .NET Framework。

IronPDF 能夠在 PDF 文檔上添加數字簽名嗎?

是的,IronPDF 提供簡單的方法,利用其數字簽名功能來應用數字簽名到 PDF。

IronPDF 用戶有哪些支持選項?

IronPDF 提供全面的支持,包括詳盡的文檔、24/5 工程師支持、視頻教程、社區論壇和定期更新,幫助用戶。

IronPDF 提供哪些類型的許可?

IronPDF 提供各種許可選項,包括永久許可和套件選項,並附有如電子郵件支持和免版稅重新分發的好處。

IronPDF 如何處理 PDF 中的復雜 CSS 和 JavaScript?

IronPDF 支持 PDF 中的復雜 CSS 和 JavaScript,非常適合生成帶有精美設計和互動元素的基於 Web 的文檔。

可以使用 IronPDF 加密 PDF 文檔嗎?

可以,IronPDF 提供內建的 PDF 加密支持,可讓您使用強密碼保護來保護您的文檔。

IronPDF 除了 HTML 之外,還有哪些轉換功能?

IronPDF 支持將多種文件格式轉換為 PDF,如 DOCX、RTF 和圖像,同時保持所需的文檔結構。

IronPDF 可以對 PDF 文件應用水印和印章嗎?

可以,IronPDF 允許用戶使用 HTML 和 CSS 向 PDF 文檔添加水印和印章,賦予完全的外觀控制。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

鋼鐵支援團隊

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