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")
輸出:專業的訂單追蹤 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")
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()
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")
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")
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")
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")
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")
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")
PDFreactor:
PDFreactor 不支援 DOCX 到 PDF 的直接轉換,因為它的主要重點是 HTML 到 PDF 的轉換。
使用 IronPDF,您可以利用其簡明易用的 DOCX 轉換工具轉換您的 DOCX 檔案。 使用 PDFreactor 時,您需要安裝 DOCX 到 PDF 的轉換函式庫來處理轉換,因為 PDFreactor 並不支援此轉換。
如需更詳細瞭解 IronPDF 的 DOCX 至 PDF 轉換工具,請造訪相關的 使用指南。
功能比較摘要

如需詳細的程式碼範例,請造訪 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。
-
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天免費試用,以查看其可用功能。
常見問題解答
怎樣在 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 文檔添加水印和印章,賦予完全的外觀控制。

