IronPDF與PSPDFKit的比較
1. 介紹
使用程式語言操作PDF對開發者來說可能是相當具有挑戰性的,特別是在.NET平台上。 在本文中,我們將討論如何使用多種工具在C#.NET中管理PDF,這些工具將幫助您節省大量的生產時間和精力。 當展示PDF文件中的資料時有幾個元素要考慮,而當將其他格式的內容轉移到PDF時要考慮的因素更多。 我們將討論的工具是由開發者和《財富》500強公司或機構使用的一流產品。 .NET工具可以即時提供解決您的PDF問題的方案包括:
- PSPDFKit
- IronPDF
2. IronPDF
IronPDF是将HTML網站轉換為.NET和.NET core開發的理想解決方案。 它不僅僅是轉換HTML,還提供了各種其他功能。 IronPDF允許開發者在.NET Core和框架專案中建立、修改和提取PDF文件。 使用IronPDF套件,開發者可以輕松地從HTML頁面生成或轉換PDF。
IronPDF是一個.NET庫,允許您以少量程式碼快速建立、讀取和操作PDF文件。 您可以從現有的PDF文件儲存中導入、移動和索引內容到您的內容管理和性能應用程式中。
2.1. IronPDF功能
2.1.1. PDF成像
使用者現在可以從PDF製作圖像以及從照片製作PDF。包括圖像提取、支持各種圖像擴展名和PDF列印。
2.1.2. PDF文件IO
IronPDF還能夠以128位加密加密PDF、為PDF新增密碼保護、以及數位簽署PDF。
2.1.3. PDF轉換
這個功能讓您可以從多種來源建立PDF,包括HTML、Web Forms、HTML字串、MVC視圖和URLs。
2.1.4. 編輯PDF
這個IronPDF工具允許您以多種方式格式化PDF,包括新增水印、增加頁面、刪除頁面、更改背景和前景等等。 簡而言之,IronPDF能夠做一切您可以想象的PDF操作。
2.1.5. PDF內容提取
通常可以輕鬆提取PDF中的嵌入文字。 然而,如果這不能工作,很可能是因為文字被"困住"在圖片中。 要掃描文件的視覺文字而不是純文字,請使用IronOCR程式庫。
2.1.6. 頁眉和頁腳
在建立PDF或新增到現有的PDF時,可以包括頁眉和頁腳。 您可以使用列印選項屬性為每個文件頁建立頁眉和頁腳。 這些參數在Chrome PDF Renderer物件上可用。 此範例在.NET Core控制台應用中運行。
2.1.7. 相容性
IronPDF支持幾乎所有與C#相容的操作系統和框架,例如:
- Windows,Azure
- .NET Core 2.1, 3.0, 3.1, .NET 5
- .NET Standard 2.0合規性,通用相容性
- Azure
- AWS
- Docker
- Linux
3. PSPDFKit
PSPDFKit Library for .NET是一個用於編輯、填寫表單、隱藏和生成PDF的軟體開發工具包(SDK)。 它提供了強大的API,可以快速向任何.NET應用程式新增PDF功能。
PSPDFKit是將PDF相容性新增到您應用或網站的最受歡迎的跨平台工具之一。用於生產用途的PSPDFKit SDK需要商業授權。 PSPDFKit API的主要優點之一是允許您在您的PDF生產工作流中整合多種文件操作方法,例如:
- 編輯PDF
- OCR
- 水印
- 文件轉換
3.1. PSPDFKit功能
PSPDFKit支持所有最流行的註釋工具:
- 文字
- 墨水
- 橢圓、折線、多邊形、矩形、線
- 筆記
- 連結
- 高亮、底線、刪除線、波形線、隱藏
3.1.1. XFDF文件在.NET中的應用
PSPDFKit .NET Library支持讀取和寫入XFDF文件。 ImportXfdf 和 ExportXfdf 方法可用於執行這些任務。
3.1.2. 渲染PDF頁面
PSPDFKit .NET Library使得將PDF轉換為圖像變得簡單。 為保證相容性和效率,PSPDFKit使用了原生 .NET Standard功能。
3.1.3. 合併PDF
可以使用文件編輯器將多個文件合併為一個統一的文件。
3.1.4. PDF隱藏
根據GDPR和其他隱私規則,通過永久去除個人資訊從PDF文件中刪除敏感、機密或特權資訊。
3.1.5. 即時JSON
註釋和書籤使用即時JSON儲存在單獨的JSON文件中。 這意味著PDF文件只需傳輸一次,任何修改作為覆蓋層附加於原始PDF之上。
4. 在Visual Studio中建立新項目
在本文中,我們將使用一個新的控制台應用程式來生成PDF文件。
打開Visual Studio軟體並轉到文件選單。 選擇"新建項目",然後選擇控制台應用程式。
在相應的文字框中輸入項目名稱並選擇路徑。 然後,點擊建立按鈕。 選擇所需的.NET框架,如以下截圖所示:
Visual Studio項目現在將為所選應用程式生成結構。
在接下來的部分中,我們將把IronPDF和PSPDFKit程式庫新增到項目中。
5. 安裝IronPDF程式庫
可以通過四種不同的方式下載並安裝IronPDF程式庫。 這些是:
- 使用Visual Studio NuGet套件管理器
- 使用Visual Studio命令行
- 從NuGet畫廊直接下載
- 從IronPDF的官方網站直接下載
5.1 使用Visual Studio NuGet套件管理器
Visual Studio軟體提供了NuGet套件管理器選項,可以將套件直接安裝到解決方案中。 下面的截圖顯示了如何打開NuGet套件管理器。
打開套件管理器GUI後,在瀏覽部分搜尋關鍵詞"IronPDF",如以下截圖所示:
我們需要在搜索結果中選擇IronPDF選項並安裝套件。
5.2 使用Visual Studio命令行
- 在Visual Studio選單中,轉到 工具 > NuGet套件管理器 > 套件管理器控制台
- 在套件管理器控制台選項卡中輸入以下行:
Install-Package IronPdf
IronPDF套件現在將被安裝在當前項目中。
5.3 從NuGet畫廊直接下載
第三種方法是直接從IronPDF NuGet畫廊網頁下載NuGet套件。
- 從右側選單中選擇下載套件選項。
- 雙擊下載的套件; 它將自動安裝。
- 下一步,重新載入解決方案並開始在項目中使用它。
5.4 從IronPDF的官方網站直接下載
存取IronPDF下載頁面,直接從網站下載最新的套件。下載後,按照以下步驟將套件新增到專案中。
- 右擊方案視窗中的項目。
- 然後選擇"新增引用"並瀏覽下載引用的位置。
- 接下來,點擊OK以新增引用。
6. 安裝PSPDFKit程式庫
獲取和安裝PSPDFKit程式庫有四種方法。 如下所示:
- 使用Visual Studio NuGet套件管理器
- 使用Visual Studio命令行
- 從NuGet畫廊直接下載
- 使用VSIX擴展
6.1 使用Visual Studio NuGet套件管理器
開發者可以輕鬆使用NuGet套件管理器整合PSPDFKit。 下方是一個範例。
在工具中點擊NuGet套件管理器後,一個新窗口將會出現,帶有搜索欄。 搜尋PSPDFKit。 將會出現一個列表。
在上圖中,我們可以看到從搜索中相關套件的列表。 接著,選擇所需的PSPDFKit選項並安裝套件。
6.2 使用Visual Studio命令行
- 在Visual Studio選單中,轉到 工具 > NuGet套件管理器 > 套件管理器控制台
- 在套件管理器控制台選項卡中輸入以下行:
Install-Package PSPDFKit.NET -Version 1.4.1
該套件現在將安裝在當前項目中。
6.3 從 NuGet畫廊直接下載
第三種方法是直接從PSPDFKit的NuGet畫廊頁面下載NuGet套件。
- 從右側的選單中選擇下載套件選項。
- 雙擊下載的套件以開始安裝過程。
- 重新載入解決方案並在項目中使用它。
6.4 使用VSIX擴展
與其使用NuGet本地下載套件,不如使用配置檔案在特定位置參考套件。 這在資源共享的網路上有機器的情況下非常有用。
- 從 PSPDFKit下載頁面 下載VSIX擴展並提取zip。
- 然後,在與您.NET應用位於相同目錄中建立一個
nuget.config文件。 - 該文件應包含此XML程式碼。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="PSPDFKitSource" value="path\to\directoryContainingNupkg" />
</packageSources>
</configuration>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="PSPDFKitSource" value="path\to\directoryContainingNupkg" />
</packageSources>
</configuration>
- 接下來,打開Visual Studio並在引用選項卡下配置以下套件。
7. 合併PDF
可能需要將一些必要的文件附加到PDF文件中。在這個主題中,我們將討論如何使用.NET平台合併兩個或多個PDF。
7.1 使用IronPDF合併PDF
IronPDF的IronPdf.PdfDocument.Merge類使得通過簡單易懂的程式碼在C#.NET中結合兩個或更多的PDF文件變得簡單。
using IronPdf;
// Example HTML content for PDF_A
var html_a = @"<p> [PDF_A] </p>
<p> [PDF_A] 1st Page </p>
<div style='page-break-after: always;'></div>
<p> [PDF_A] 2nd Page</p>";
// Example HTML content for PDF_B
var html_b = @"<p> [PDF_B] </p>
<p> [PDF_B] 1st Page </p>
<div style='page-break-after: always;'></div>
<p> [PDF_B] 2nd Page</p>";
// Initialize renderer
var Renderer = new IronPdf.ChromePdfRenderer();
// Render HTML to PDFs
using var pdfdoc_a = Renderer.RenderHtmlAsPdf(html_a);
using var pdfdoc_b = Renderer.RenderHtmlAsPdf(html_b);
// Merge PDFs
using var merged = IronPdf.PdfDocument.Merge(pdfdoc_a, pdfdoc_b);
// Save merged PDF to file
merged.SaveAs("Merged.pdf");
using IronPdf;
// Example HTML content for PDF_A
var html_a = @"<p> [PDF_A] </p>
<p> [PDF_A] 1st Page </p>
<div style='page-break-after: always;'></div>
<p> [PDF_A] 2nd Page</p>";
// Example HTML content for PDF_B
var html_b = @"<p> [PDF_B] </p>
<p> [PDF_B] 1st Page </p>
<div style='page-break-after: always;'></div>
<p> [PDF_B] 2nd Page</p>";
// Initialize renderer
var Renderer = new IronPdf.ChromePdfRenderer();
// Render HTML to PDFs
using var pdfdoc_a = Renderer.RenderHtmlAsPdf(html_a);
using var pdfdoc_b = Renderer.RenderHtmlAsPdf(html_b);
// Merge PDFs
using var merged = IronPdf.PdfDocument.Merge(pdfdoc_a, pdfdoc_b);
// Save merged PDF to file
merged.SaveAs("Merged.pdf");
Imports IronPdf
' Example HTML content for PDF_A
Private html_a = "<p> [PDF_A] </p>
<p> [PDF_A] 1st Page </p>
<div style='page-break-after: always;'></div>
<p> [PDF_A] 2nd Page</p>"
' Example HTML content for PDF_B
Private html_b = "<p> [PDF_B] </p>
<p> [PDF_B] 1st Page </p>
<div style='page-break-after: always;'></div>
<p> [PDF_B] 2nd Page</p>"
' Initialize renderer
Private Renderer = New IronPdf.ChromePdfRenderer()
' Render HTML to PDFs
Private pdfdoc_a = Renderer.RenderHtmlAsPdf(html_a)
Private pdfdoc_b = Renderer.RenderHtmlAsPdf(html_b)
' Merge PDFs
Private merged = IronPdf.PdfDocument.Merge(pdfdoc_a, pdfdoc_b)
' Save merged PDF to file
merged.SaveAs("Merged.pdf")
7.2 使用PSPDFKit GMBH合併PDF
附帶的程式碼顯示如何使用PSPDFKit文件編輯器合併兩個或更多PDF。
using PSPDFKit;
using PSPDFKit.Providers;
namespace PdfEditing
{
public sealed class Program
{
public static void Main(string[] args)
{
var documentEditor = new DocumentEditor();
// Import the first document to merge
documentEditor.ImportDocument(0, DocumentEditor.IndexPosition.BeforeIndex, new FileDataProvider("Assets/dog.pdf"));
// Import the second document to merge
documentEditor.ImportDocument(0, DocumentEditor.IndexPosition.BeforeIndex, new FileDataProvider("Assets/cat.pdf"));
// Save the merged document to a new file
documentEditor.SaveDocument(new FileDataProvider("dogCatPair.pdf"));
}
}
}
using PSPDFKit;
using PSPDFKit.Providers;
namespace PdfEditing
{
public sealed class Program
{
public static void Main(string[] args)
{
var documentEditor = new DocumentEditor();
// Import the first document to merge
documentEditor.ImportDocument(0, DocumentEditor.IndexPosition.BeforeIndex, new FileDataProvider("Assets/dog.pdf"));
// Import the second document to merge
documentEditor.ImportDocument(0, DocumentEditor.IndexPosition.BeforeIndex, new FileDataProvider("Assets/cat.pdf"));
// Save the merged document to a new file
documentEditor.SaveDocument(new FileDataProvider("dogCatPair.pdf"));
}
}
}
Imports PSPDFKit
Imports PSPDFKit.Providers
Namespace PdfEditing
Public NotInheritable Class Program
Public Shared Sub Main(ByVal args() As String)
Dim documentEditor As New DocumentEditor()
' Import the first document to merge
documentEditor.ImportDocument(0, DocumentEditor.IndexPosition.BeforeIndex, New FileDataProvider("Assets/dog.pdf"))
' Import the second document to merge
documentEditor.ImportDocument(0, DocumentEditor.IndexPosition.BeforeIndex, New FileDataProvider("Assets/cat.pdf"))
' Save the merged document to a new file
documentEditor.SaveDocument(New FileDataProvider("dogCatPair.pdf"))
End Sub
End Class
End Namespace
8. 註釋
註釋是新增到文字上的評論或備註,以解釋或批評其特定部分。 在本主題中,我們將討論如何在PDF中使用.NET新增註釋。
8.1 使用IronPDF進行註釋
PDF註釋允許您將"便利貼"風格的評論新增到PDF文件中。 PdfDocument.TextAnnotation類允許以程式的方式新增註釋。 提供的進階文字註釋選項包括著色、大小、不透明度、圖標和編輯。
// Install-Package IronPdf
using IronPdf;
var pdf = PdfDocument.FromFile("existing.pdf");
var annotation = new IronPdf.Annotations.TextAnnotation()
{
Title = "This is the major title",
Subject = "This is a subtitle",
Contents = "This is the long 'sticky note' comment content...",
Icon = IronPdf.Annotations.TextAnnotation.AnnotationIcon.Help,
Opacity = 0.9,
Printable = false,
Hidden = false,
OpenByDefault = true,
ReadOnly = false,
Rotateable = true
};
// Add annotation to a specific page at given coordinates
pdf.AddTextAnnotation(annotation, pageIndex: 1, xPosition: 150, yPosition: 250);
// Save the updated PDF
pdf.SaveAs("updated_existing.pdf");
// Install-Package IronPdf
using IronPdf;
var pdf = PdfDocument.FromFile("existing.pdf");
var annotation = new IronPdf.Annotations.TextAnnotation()
{
Title = "This is the major title",
Subject = "This is a subtitle",
Contents = "This is the long 'sticky note' comment content...",
Icon = IronPdf.Annotations.TextAnnotation.AnnotationIcon.Help,
Opacity = 0.9,
Printable = false,
Hidden = false,
OpenByDefault = true,
ReadOnly = false,
Rotateable = true
};
// Add annotation to a specific page at given coordinates
pdf.AddTextAnnotation(annotation, pageIndex: 1, xPosition: 150, yPosition: 250);
// Save the updated PDF
pdf.SaveAs("updated_existing.pdf");
' Install-Package IronPdf
Imports IronPdf
Private pdf = PdfDocument.FromFile("existing.pdf")
Private annotation = New IronPdf.Annotations.TextAnnotation() With {
.Title = "This is the major title",
.Subject = "This is a subtitle",
.Contents = "This is the long 'sticky note' comment content...",
.Icon = IronPdf.Annotations.TextAnnotation.AnnotationIcon.Help,
.Opacity = 0.9,
.Printable = False,
.Hidden = False,
.OpenByDefault = True,
.ReadOnly = False,
.Rotateable = True
}
' Add annotation to a specific page at given coordinates
pdf.AddTextAnnotation(annotation, pageIndex:= 1, xPosition:= 150, yPosition:= 250)
' Save the updated PDF
pdf.SaveAs("updated_existing.pdf")
8.2 使用PSPDFKit進行註釋
為描述PDF註釋,PSPDFKit for .NET提供了一個基於JSON的API。 這給您提供了很多處理註釋的自由,因為您可以在您的程式碼中擁有手繪註釋,或者根據需要匯入的JSON文件。
using Newtonsoft.Json.Linq;
using PSPDFKit;
using PSPDFKit.Providers;
namespace Annotations
{
public sealed class Program
{
public static void Main(string[] args)
{
var provider = new FileDataProvider("document.pdf");
var document = new Document(provider);
var annotationProvider = document.GetAnnotationProvider();
// JSON structure for a text annotation
var textAnJson = new JObject
{
{ "text", "Hello from PSPDFKit" },
{ "bbox", new JArray(10, 10, 400, 400) },
{ "creatorName", "Will" },
{ "type", "pspdfkit/text" },
{ "updatedAt", "2021-01-01T00:00:00Z" },
{ "v", 1 }
};
// Add the annotation to the document
annotationProvider.AddAnnotationJson(textAnJson);
// Save the updated document
document.Save(new DocumentSaveOptions());
}
}
}
using Newtonsoft.Json.Linq;
using PSPDFKit;
using PSPDFKit.Providers;
namespace Annotations
{
public sealed class Program
{
public static void Main(string[] args)
{
var provider = new FileDataProvider("document.pdf");
var document = new Document(provider);
var annotationProvider = document.GetAnnotationProvider();
// JSON structure for a text annotation
var textAnJson = new JObject
{
{ "text", "Hello from PSPDFKit" },
{ "bbox", new JArray(10, 10, 400, 400) },
{ "creatorName", "Will" },
{ "type", "pspdfkit/text" },
{ "updatedAt", "2021-01-01T00:00:00Z" },
{ "v", 1 }
};
// Add the annotation to the document
annotationProvider.AddAnnotationJson(textAnJson);
// Save the updated document
document.Save(new DocumentSaveOptions());
}
}
}
Imports Newtonsoft.Json.Linq
Imports PSPDFKit
Imports PSPDFKit.Providers
Namespace Annotations
Public NotInheritable Class Program
Public Shared Sub Main(ByVal args() As String)
Dim provider = New FileDataProvider("document.pdf")
Dim document As New Document(provider)
Dim annotationProvider = document.GetAnnotationProvider()
' JSON structure for a text annotation
Dim textAnJson = New JObject From {
{ "text", "Hello from PSPDFKit" },
{ "bbox", New JArray(10, 10, 400, 400) },
{ "creatorName", "Will" },
{ "type", "pspdfkit/text" },
{ "updatedAt", "2021-01-01T00:00:00Z" },
{ "v", 1 }
}
' Add the annotation to the document
annotationProvider.AddAnnotationJson(textAnJson)
' Save the updated document
document.Save(New DocumentSaveOptions())
End Sub
End Class
End Namespace
Bootstrap和現代CSS框架支持
從使用Bootstrap和現代CSS框架的Web應用程式生成PDF時,全框架支持對保持設計一致性至關重要,而不建立平行的"PDF安全"佈局。
IronPDF:完整的Bootstrap框架支持
IronPDF的基於Chromium的渲染引擎提供完整支持:
- Bootstrap 5:完整的flexbox佈局,CSS Grid,實用類和所有組件
- Bootstrap 4:完整的卡片系統,導航,flex實用程式,響應式設計
- Tailwind CSS:所有實用程式類渲染準確
- Foundation:完整的網格系統和組建庫
- 現代CSS3:Flexbox,CSS Grid,全域屬性,動畫
真實世界驗證:IronPDF以像素級準確渲染Bootstrap首頁和所有官方範例。
PSPDFKit:不支持HTML至PDF轉換
PSPDFKit專注於PDF查看、註釋和操作,而不是HTML至PDF的轉換:
- 沒有HTML渲染引擎:PSPDFKit不會將HTML轉換為PDF
- 專注於查看器:設計用于PDF顯示和交互,而不是生成
- 需要外部轉換:HTML至PDF必須由獨立的工具處理
- JavaScript SDK:使用者端PDF查看,不是伺服端生成庫
開發影響:需要HTML至PDF轉換的團隊必須在PSPDFKit旁邊整合其他工具,增加了複雜性和維護要求。
如需完整的Bootstrap框架指南和現代CSS渲染功能,請參閱Bootstrap & Flexbox CSS指南。
9. 授權
IronPDF提供免費的開發者授權。 IronPDF還提供了獨特的定價結構:基本捆綁包以特定價格開始,無附加費用。 也可以重新分發SaaS和OEM產品。 所有授權均包括30天退款保證、一年的軟體支援和升級、開發/測試/生產有效性以及永久授權(一次性購買)。 瞭解IronPDF授權詳情,探索IronPDF的可用授權和定價結構。
PSPDFKit需要聯繫銷售部門以獲取其SDK產品的定價。 定價不會公開列出,並根據部署型別、平台和使用需求有所不同。 造訪PSPDFKit定價頁面以請求報價。
10. 結論
IronPDF不會從遠程伺服器轉換HTML為PDF。 而是,在幕後啟動一個符合標準的真實瀏覽器實例(不需要安裝任何其他軟體)。 HTML以矢量格式呈現,適合商業印刷的最高標準。 因此,您得到的是一個清晰高質量的PDF。 IronPDF網站提供有關授權和價格的資訊。
PSPDFKit是一個功能齊全的PDF SDK,支持所有平台,包括PC、Mac、Android應用程式和iOS。 它協助進行PDF文件的轉換、註解、簽署、填寫、轉換和編輯。 PSPDFKit是將PDF支持整合到應用或網站中最廣泛使用的跨平台解決方案。
IronPDF和PSPDFKit都需要製作使用的商業授權。 IronPDF提供終身永久授權。 IronPDF的授權是開發者為中心的,定價結構圍繞使用該產品的開發者數量及其工作地點。 PSPDFKit價格未公開列出,需聯繫銷售部門以獲取報價。 另一方面,IronPDF提供透明的永久授權,無遞延費用。
IronPDF和PSPDFKit都是基於相似技術的行業領先框架,提供同樣基本的PDF處理功能。 使用IronPDF編寫的程式碼往往更簡潔和緊湊。 用PSPDFKit編寫的程式碼同樣易於理解,但結構略顯複雜。
Iron Software提供五種工具的捆綁包僅需支付兩種的價格。 提供的工具包括:
如需了解更多關於這些捆綁工具的資訊,請造訪Iron Suite的官方頁面。
常見問題
如何在C#中將HTML轉換為PDF?
您可以使用IronPDF的RenderHtmlAsPdf方法將HTML字串轉換成PDF。也可以使用RenderHtmlFileAsPdf將HTML文件轉換為PDF。
IronPDF的主要功能有哪些?
IronPDF提供的功能包括PDF影像處理、加密、轉換、編輯以及跨多個平臺的相容性,包括Windows、Azure和Linux。它還通過Visual Studio NuGet Package Manager提供簡單的整合。
PSPDFKit如何支持PDF功能?
PSPDFKit支持廣泛的PDF功能,包括編輯、OCR、水印和文件轉換。它還提供豐富的註解功能以及有效的文件合併和紅色標註。
如何在.NET專案中安裝IronPDF?
IronPDF可以通過Visual Studio NuGet Package Manager、Visual Studio命令行或直接從NuGet Gallery或IronPDF的官方網站下載。
IronPDF有哪些授權選項?
IronPDF提供終身授權且無需重複費用。它包括免費的開發者授權和一個獨特的定價結構,享有30天的退款保證,一年的軟體支援和更新。
IronPDF和PSPDFKit的定價差異是什麼?
IronPDF提供終身授權且無須重複費用,而PSPDFKit提供按月或按年計費的包裝方案,有重複費用。IronPDF專注於以開發者為中心的授權,根據使用者和地點計費,而PSPDFKit的授權是以文件為中心,根據每月文件處理量計費。
Iron Software捆綁套件中提供了哪些額外工具?
Iron Software提供了一個包含五個工具的套件,包括IronBarcode、IronXL、IronOCR、IronPDF和IronWebscraper。這些工具為.NET應用提供全面的開發解決方案。



