產品比較

從 Byte Array 使用 C# iTextSharp 創建 PDF (對比 IronPDF)

Chipego
奇佩戈·卡林达
2023年5月30日
分享:

1.0 介紹

Adobe 開發了可攜式文檔格式(PDF),以促進文本和圖像文檔的共享。 要查看 PDF 圖像文件,您必須使用不同的應用程式。 許多企業在當今文化中使用 PDF 文件進行各種任務,包括準備發票和其他文書工作。

開發人員還使用現有的 PDF 文件格式來製作符合客戶規範的文件或圖像文件。 幸運的是,簡化過程的函式庫使生成PDF比以往任何時候都簡單。 在為專案選擇程式庫時,請考慮構建、讀取和轉換能力,以便選擇最適合且可用的程式庫。

在這篇文章中,將比較兩個最廣泛使用的 .NET PDF 庫。 它們是:

  • iText PDF
  • IronPDF

    在您的 Microsoft.NET 應用程式或專案中,您可以使用 IronPDF 或 iText PDF 庫來建立、閱讀和修改 PDF。 我們將首先看看這兩個庫的功能,而不是直接轉到整體性能、轉換和處理PDF的費用,以確定哪個庫更適合您的應用程序。 Microsoft .NET Framework 支援這兩個函式庫。 此外,每個庫的持續時間將被記錄以供參考和後續研究。 要了解比較,請點擊這裡

2. 庫功能

2.1 iText PDF 功能

一個能將文字轉換成 PDF 檔案的 Java 函式庫和系統叫做 iText PDF。 文本遵循 AGPL 軟體許可模式。 AGPL 軟體授權是免費且開源的。

  • 可以透過iText庫獲取生成PDF文件的API。
  • 可以使用 iText 程式的 var reader 將 HTML 和 XML 字串解析為 PDF。
  • 我們可以使用iText庫向PDF文件添加書籤、頁碼和標記。
  • 我們可以使用iText庫將一個PDF文件拆分為多個PDF,或將多個PDF文件合併為單個PDF。
  • 我們可以使用 iText 編輯 PDF 中的表單。
  • 使用 PNG、JPEG 和其他圖像格式的圖片,iText 也可以製作 PDF。
  • iText庫提供了一個Canvas類,可以用來在現有文本上繪製不同的幾何圖形。
  • 在 PDF 文件中,iText 提供了一個工具,讓您可以添加和編輯字體和圖像。

2.2 IronPDF 功能

開發者可以使用強大的 IronPDF,一個 PDF .NET 函式庫,快速製作、閱讀和更改 PDF 文件。 IronPDF的核心是Chrome引擎,提供大量實用且強大的功能,包括將HTML5、JavaScript、CSS和圖片文件轉換為PDF、添加獨特的頁眉和頁腳,以及生成與網頁瀏覽器中顯示的PDF完全相同的PDF。 IronPDF 支援多種網頁和 .NET 格式,包括 HTML、ASPX、Razor View 和 MVC。 IronPDF 的關鍵屬性如下:

  • 在 Dot NET C# 程式中輕鬆創建、閱讀和編輯 PDF 文件。
  • 從網站 URL 連結建立 PDF,該連結包含用戶代理、代理伺服器、Cookie、HTTP 標頭和表單變數的設定,以支援使用 HTML 登入表單進行登入。
  • 從已存在的 PDF 出版物中移除照片。
  • 將文字、照片、書籤、水印和其他元素添加到 PDF 文件中。
  • 讓合併和分割多個PDF文件頁面變得簡單的功能。
  • 能將媒體類型資產(包括CSS文件)轉換為文檔的能力。

3.0 安裝程式庫

3.1 安裝 iText7

首先使用 NuGet 套件管理器尋找 iText。 必須同時安裝iText7和iText.pdfhtml,因為這些套件的功能分佈在許多不同的套件中。

從位元組數組初始化PDF C# iTextSharp(對比IronPDF)圖1 - iText7

如果您喜歡使用 Visual Studio 命令列,請安裝以下顯示的套件:

Install-Package itext7 && Install-Package itext7.pdfhtml

由於 iText7 是最新版本,我們在解決方案中使用它。

3.2 安裝 IronPDF 函式庫

如下面的截圖所示,我們可以在套件管理器中輕鬆搜尋「IronPDF」:

從位元組陣列創建 PDF C# iTextSharp(與 IronPDF 相比)圖 2 - IronPDF

上圖顯示了相關搜索結果列表。 若要在您的機器上安裝套件,請勾選必要的選項。

如果您想使用命令行安裝套件,請在套件管理器的終端標籤中添加以下行:

:PackageInstall

此套件現已準備好使用,並將在當前項目中下載並安裝。

4.0 PDF 建立

4.1 使用iTextSharp

我們可以從 iText 文件 doc 生成的公共靜態位元組陣列創建 PDF 文件。 以下是使用iText PDF库帮助我们创建新文档的示例。

using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;
using System.IO;
using iText.Kernel.Geom;
using iText.Html2pdf;

var html = "<h1>Hello world</h1>";
//byte array
byte [] result;
//create new MemoryStream using var ms
using (var ms = new MemoryStream())
{
    //new document
    var doc = new PdfDocument(new PdfWriter(ms));
    doc.SetDefaultPageSize(PageSize.A4);
    doc.SetTagged();
    HtmlConverter.ConvertToPdf(html, doc, new ConverterProperties());
    result = ms.ToArray();
}
File.WriteAllBytes(@"test.pdf", result);
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;
using System.IO;
using iText.Kernel.Geom;
using iText.Html2pdf;

var html = "<h1>Hello world</h1>";
//byte array
byte [] result;
//create new MemoryStream using var ms
using (var ms = new MemoryStream())
{
    //new document
    var doc = new PdfDocument(new PdfWriter(ms));
    doc.SetDefaultPageSize(PageSize.A4);
    doc.SetTagged();
    HtmlConverter.ConvertToPdf(html, doc, new ConverterProperties());
    result = ms.ToArray();
}
File.WriteAllBytes(@"test.pdf", result);
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.Layout.Element
Imports iText.Layout.Properties
Imports System.IO
Imports iText.Kernel.Geom
Imports iText.Html2pdf

Private html = "<h1>Hello world</h1>"
'byte array
Private result() As Byte
'create new MemoryStream var ms
Using ms = New MemoryStream()
	'new document
	Dim doc = New PdfDocument(New PdfWriter(ms))
	doc.SetDefaultPageSize(PageSize.A4)
	doc.SetTagged()
	HtmlConverter.ConvertToPdf(html, doc, New ConverterProperties())
	result = ms.ToArray()
End Using
File.WriteAllBytes("test.pdf", result)
$vbLabelText   $csharpLabel

上述範例顯示我們正在從給定的 HTML 字串創建 PDF 文件。 首先,我們正在創建MemoryStream來保存數據。 然後,我們創建PdfWriter,並將MemoryStream作為參數傳遞,以保存數據。 然後我們使用HtmlConverter來創建PDF文件。 之後,所有輸出都已儲存在MemoryStream中。 然後,我們將資料轉換為位元組,接著使用 File 類別將 MemoryStream ms 儲存至如下面輸出所示的新檔案中。

從位元組陣列 C# iTextSharp 建立 PDF(與 IronPDF 相比)圖 3 - 輸出

4.2 使用 IronPDF

IronPDF 讓 PDF 檔案的創建變得非常簡單,只需少量程式碼即可完成。 以下是使用 IronPDF 創建 PDF 文件的示例代碼。

var html = "<h1>Hello world</h1>";
var pdf = new IronPdf.ChromePdfRenderer();
var bytedata=pdf.RenderHtmlAsPdf(html).BinaryData;
File.WriteAllBytes(@"test.pdf", bytedata);
var html = "<h1>Hello world</h1>";
var pdf = new IronPdf.ChromePdfRenderer();
var bytedata=pdf.RenderHtmlAsPdf(html).BinaryData;
File.WriteAllBytes(@"test.pdf", bytedata);
Dim html = "<h1>Hello world</h1>"
Dim pdf = New IronPdf.ChromePdfRenderer()
Dim bytedata=pdf.RenderHtmlAsPdf(html).BinaryData
File.WriteAllBytes("test.pdf", bytedata)
$vbLabelText   $csharpLabel

在第一步中,我們正在創建一個ChromePdfRenderer物件,以協助建立 PDF 文件。然後我們使用RenderHtmlAsPdf方法將 HTML 資料添加到 PDF 文件中。 然後我們將數據轉換為位元組數組。 最後一步是使用 File 來協助將位元組陣列轉換成 PDF 檔案。輸出結果如下所示。

從位元組陣列建立PDF C# iTextSharp(與 IronPDF 比較)圖4 - IronPDF 輸出

如需更多程式碼教學,請點擊此處

5.0 結論

iText7 是常用的 PDF 函式庫之一。 iText 代碼非常複雜,不適合初學者。 我們需要基本的圖書館知識才能在使用者應用程式中使用這個。 iText 生成的 PDF 文件存在较大空白,因此当用户生成包含多页的文件时,可能会影响内存使用。 iText7 將其庫劃分為多個套件,這與其他套件不同。 iText7 與多個套件有相依關係。 我們需要下載所有的套件來使其運行,這可能會增加應用程式的大小。 iText 提供開發許可證和商業許可證,均為免費。 點擊這裡閱讀更多關於iText許可證的信息。

另一方面,IronPDF 使用起來簡單易用。 透過幾行代碼,我們可以創建 PDF 文件。 它適合初學者,使用此應用程序不需要基本知識。 IronPDF不依賴於任何其他套件。 這是一個獨立運作的套件。 開發人員可以選擇購買各種許可證以符合其需求,此外還提供免費許可證。 $749 Lite 版本確實包括所有庫功能,例如永久許可證、30 天退款保證、一年的軟體支援、升級以及 SaaS 和 OEM 再分發的可能性。 此外,它不包括經常性支出。 這些授權是一次性購買的,可以應用於開發、暫存和生產。 此外,IronPDF 提供限時不可分發的免費許可證。 請點擊這裡查看有關 IronPDF 價格和授權資訊的詳細說明。

Chipego
奇佩戈·卡林达
軟體工程師
Chipego 擁有天生的傾聽技能,這幫助他理解客戶問題,並提供智能解決方案。他在獲得信息技術理學學士學位後,于 2023 年加入 Iron Software 團隊。IronPDF 和 IronOCR 是 Chipego 專注的兩個產品,但隨著他每天找到新的方法來支持客戶,他對所有產品的了解也在不斷增長。他喜歡在 Iron Software 的協作生活,公司內的團隊成員從各自不同的經歷中共同努力,創造出有效的創新解決方案。當 Chipego 離開辦公桌時,他常常享受讀好書或踢足球的樂趣。
< 上一頁
IronPDF 與 Foxit PDF SDK 的比較
下一個 >
iTextSharp與IronPDF編輯PDF的比較