產品比較

iTextSharp與IronPDF編輯PDF的比較

發佈 2023年5月8日
分享:

PDF (可攜式文件格式) 是一種廣泛使用的文件格式,因為它能夠保持文件格式、安全性和可攜性而受到歡迎。

PDF檔案已成為世界上最廣泛使用的文件格式之一,並且有多種庫可用於在C#語言中創建和操作PDF。

編輯 PDF 文件 也可能是具有挑戰性的,但在iTextSharp DLL和IronPDF等函式庫的幫助下,您可以輕鬆地使用C#讀取、寫入和編輯PDF文件。

在本文中,我們將比較兩個流行的用於PDF操作的C#函式庫:iTextSharp和IronPDF。我們將討論如何使用這兩個函式庫來編輯PDF文件,然後我們將探索IronPDF在輸出打印、性能和定價方面如何優於iTextSharp。

介紹iTextSharp DLL和IronPDF庫

iTextSharp和 IronPDF 是兩個在C#中處理PDF文件的熱門庫。這兩個庫都提供了廣泛的功能來創建、編輯和操作PDF文件。

iTextSharp DLL是基於Java的iText庫的C#移植版。它提供一個簡單且易於使用的API,用於創建和操作PDF文件。iTextSharp是一個在AGPL許可下提供的開源庫。

IronPDF是一個設計用於使用C#創建、編輯和操作PDF文件的.NET庫。它提供一個現代且直觀的API來處理PDF文件。IronPDF是一個商業庫,其隨附 免費試用版 以及付費版本。

比較 iTextSharp 和 IronPDF 庫

iTextSharp 和 IronPDF 庫都提供了廣泛的功能來創建、編輯和操作 PDF 文檔。然而,IronPDF 在某些方面優於 iTextSharp,使其成為在 C# 中處理 PDF 文檔的首選。

編輯 PDF 文件 iTextSharp 和 IronPDF

既然我們已經討論了 iTextSharp 和 IronPDF 之間的差異,現在讓我們看看如何使用這兩個庫來編輯 PDF 文件。我們將通過範例來展示如何在現有的 PDF 文件中添加文本、表單字段以及填寫表單。

使用 iTextSharp 編輯 PDF 文件

先決條件

在我們開始之前,您需要以下內容:

  1. 您的機器上已安裝 Visual Studio。
  2. 基本的 C# 程式語言知識。
  3. 您的專案中已安裝 iTextSharp 函式庫。

iTextSharp 與 IronPDF 編輯 PDF 的比較: 圖 1 - 使用 iTextSharp 在 C# 中創建 PDF。

要在專案中安裝 iTextSharp 庫,可以使用 NuGet 套件管理器。在 Visual Studio 中打開您的專案,然後右鍵點擊方案總管中的專案名稱。從上下文菜單中選擇“管理 NuGet 套件”。在 NuGet 套件管理器中,搜索“iTextSharp”並安裝最新版本的套件。

iTextSharp與IronPDF編輯PDF之比較:圖2 - 查看原圖

創建新的 PDF 檔案

要使用 iTextSharp 創建新的 PDF 檔案,我們需要創建 "Document" 類的新實例,並將新的 FileStream 對象傳遞給它的構造方法。以下是示例:

Paragraph header = new Paragraph("HEADER")
    .SetTextAlignment(TextAlignment.CENTER)
    .SetFontSize(16);
document.Add(header);
for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
    Rectangle pageSize = pdf.GetPage(i).GetPageSize();
    float x = pageSize.GetWidth() / 2;
    float y = pageSize.GetTop() - 20;
    document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
}
document.SetTopMargin(50);
document.SetBottomMargin(50);
Paragraph header = new Paragraph("HEADER")
    .SetTextAlignment(TextAlignment.CENTER)
    .SetFontSize(16);
document.Add(header);
for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
    Rectangle pageSize = pdf.GetPage(i).GetPageSize();
    float x = pageSize.GetWidth() / 2;
    float y = pageSize.GetTop() - 20;
    document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
}
document.SetTopMargin(50);
document.SetBottomMargin(50);
Dim header As Paragraph = (New Paragraph("HEADER")).SetTextAlignment(TextAlignment.CENTER).SetFontSize(16)
document.Add(header)
Dim i As Integer = 1
Do While i <= pdf.GetNumberOfPages()
	Dim pageSize As Rectangle = pdf.GetPage(i).GetPageSize()
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
	Dim x As Single = pageSize.GetWidth() / 2
	Dim y As Single = pageSize.GetTop() - 20
	document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0)
	i += 1
Loop
document.SetTopMargin(50)
document.SetBottomMargin(50)
VB   C#

在上述程式碼中,我們創建了一個名為 "newfile.pdf" 的新 PDF 文件,並新增了一個段落到其中。

iTextSharp 與 IronPDF 對於編輯 PDF 的比較:圖3 - iTextSharp 教程 ASP.NET C#

編輯現有的 PDF 文件

要使用 iTextSharp 編輯現有的 PDF 文件,我們需要創建一個 PdfReader 對象來讀取現有的 PDF 文檔,並創建一個 PdfStamper 對象來修改它。以下是一個範例:

/**
iText URL to PDF
anchor-itext-url-to-pdf
**/
private void ExistingWebURL()
{
    //Initialize PDF writer
    PdfWriter writer = new PdfWriter("wikipedia.pdf");
    //Initialize PDF document
    using PdfDocument pdf = new PdfDocument(writer);
    ConverterProperties properties = new ConverterProperties();
    properties.SetBaseUri("https://en.wikipedia.org/wiki/Portable_Document_Format");
    Document document = HtmlConverter.ConvertToDocument(new FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties);
    Paragraph header = new Paragraph("HEADER")
        .SetTextAlignment(TextAlignment.CENTER)
        .SetFontSize(16);
    document.Add(header);
    for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
    {
        Rectangle pageSize = pdf.GetPage(i).GetPageSize();
        float x = pageSize.GetWidth() / 2;
        float y = pageSize.GetTop() - 20;
        document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
    }
    document.SetTopMargin(50);
    document.SetBottomMargin(50);
    document.Close();
}
/**
iText URL to PDF
anchor-itext-url-to-pdf
**/
private void ExistingWebURL()
{
    //Initialize PDF writer
    PdfWriter writer = new PdfWriter("wikipedia.pdf");
    //Initialize PDF document
    using PdfDocument pdf = new PdfDocument(writer);
    ConverterProperties properties = new ConverterProperties();
    properties.SetBaseUri("https://en.wikipedia.org/wiki/Portable_Document_Format");
    Document document = HtmlConverter.ConvertToDocument(new FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties);
    Paragraph header = new Paragraph("HEADER")
        .SetTextAlignment(TextAlignment.CENTER)
        .SetFontSize(16);
    document.Add(header);
    for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
    {
        Rectangle pageSize = pdf.GetPage(i).GetPageSize();
        float x = pageSize.GetWidth() / 2;
        float y = pageSize.GetTop() - 20;
        document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
    }
    document.SetTopMargin(50);
    document.SetBottomMargin(50);
    document.Close();
}
'''
'''iText URL to PDF
'''anchor-itext-url-to-pdf
'''*
Private Sub ExistingWebURL()
	'Initialize PDF writer
	Dim writer As New PdfWriter("wikipedia.pdf")
	'Initialize PDF document
	Using pdf As New PdfDocument(writer)
		Dim properties As New ConverterProperties()
		properties.SetBaseUri("https://en.wikipedia.org/wiki/Portable_Document_Format")
		Dim document As Document = HtmlConverter.ConvertToDocument(New FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties)
		Dim header As Paragraph = (New Paragraph("HEADER")).SetTextAlignment(TextAlignment.CENTER).SetFontSize(16)
		document.Add(header)
		Dim i As Integer = 1
		Do While i <= pdf.GetNumberOfPages()
			Dim pageSize As Rectangle = pdf.GetPage(i).GetPageSize()
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
			Dim x As Single = pageSize.GetWidth() / 2
			Dim y As Single = pageSize.GetTop() - 20
			document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0)
			i += 1
		Loop
		document.SetTopMargin(50)
		document.SetBottomMargin(50)
		document.Close()
	End Using
End Sub
VB   C#

在上述代碼中,我們打開了一個名為“existingfile.pdf”的現有PDF文件,並創建了一個名為“editedfile.pdf”的新PDF文件。我們用數據填寫了表單字段,並在PDF文件中添加了一個新頁面。

PdfStamper類提供了更多選項來編輯現有PDF文件,例如添加圖像、創建註解和更改頁面大小。

使用 IronPDF 编辑 PDF 文件

IronPDF 是一个强大的 C# PDF 库,可以编辑 PDF 文件。在本教程中,我们将逐步演示如何使用 IronPDF 编辑现有的 PDF 文件。我们将涉及多个方面,包括创建新的 PDF 文件、向现有 PDF 添加页面、向 PDF 添加内容以及填写 PDF 中的表单字段。下面是一个 C# 的示例代码,说明各个步骤。

iTextSharp 與 IronPDF 的 PDF 編輯比較:圖 4 - IronPDF

在我們開始之前,請確保您已安裝以下軟體:

  • Visual Studio IDE
  • IronPDF 庫

第一步:建立一個新專案

在 Visual Studio 中建立一個新的 C# 專案。選擇「主控台應用程式」專案類型。

第2步:安裝 IronPDF

iTextSharp 和 IronPDF 的 PDF 編輯對比:圖 5 - IronPDF

透過 NuGet 套件管理器將 IronPDF 庫安裝到您的專案中。

Install-Package IronPdf

步驟 3: 加載現有的 PDF 文件

要加載現有的 PDF 文件,您可以使用 PdfDocument 類。以下是加載現有 PDF 文件的代碼示例:

using IronPdf;

var existingPdf = @"C:\path\to\existing\pdf\document.pdf";
var pdfDoc = PdfDocument.FromFile(existingPdf);
using IronPdf;

var existingPdf = @"C:\path\to\existing\pdf\document.pdf";
var pdfDoc = PdfDocument.FromFile(existingPdf);
Imports IronPdf

Private existingPdf = "C:\path\to\existing\pdf\document.pdf"
Private pdfDoc = PdfDocument.FromFile(existingPdf)
VB   C#

iTextSharp 與 IronPDF 編輯 PDF 的比較:圖6 - 使用 IronPDF 創建 PDF

步驟4:新增頁面至現有的 PDF 文件

要在現有文件中新增頁面,您可以使用 PdfDocument 類別的 AddPage 方法。以下是將新頁面新增至現有 PDFs 的範例:

var newPage = pdfDoc.AddPage();
newPage.Size = PageSize.Letter;
var newPage = pdfDoc.AddPage();
newPage.Size = PageSize.Letter;
Dim newPage = pdfDoc.AddPage()
newPage.Size = PageSize.Letter
VB   C#

步驟 5:從網站建立 PDF

使用 IronPDF,以下代碼可以直接從網頁地址生成 PDF 文件。此外,還提供了自訂的頁眉和頁腳。

/**
IronPDF URL to PDF
anchor-ironpdf-website-to-pdf
**/
private void ExistingWebURL()
{
    // Create a PDF from any existing web page
    var Renderer = new IronPdf.ChromePdfRenderer();
    // Create a PDF from an existing HTML
    Renderer.RenderingOptions.MarginTop = 50;  //millimetres
    Renderer.RenderingOptions.MarginBottom = 50;
    Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
    Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
    {
        CenterText = "{pdf-title}",
        DrawDividerLine = true,
        FontSize = 16
    };
    Renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
    {
        LeftText = "{date} {time}",
        RightText = "Page {page} of {total-pages}",
        DrawDividerLine = true,
        FontSize = 14
    };
    Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
    Renderer.RenderingOptions.EnableJavaScript = true;
    Renderer.RenderingOptions.RenderDelay = 500; //milliseconds
    using var PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format");
    PDF.SaveAs("wikipedia.pdf");
}
/**
IronPDF URL to PDF
anchor-ironpdf-website-to-pdf
**/
private void ExistingWebURL()
{
    // Create a PDF from any existing web page
    var Renderer = new IronPdf.ChromePdfRenderer();
    // Create a PDF from an existing HTML
    Renderer.RenderingOptions.MarginTop = 50;  //millimetres
    Renderer.RenderingOptions.MarginBottom = 50;
    Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
    Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
    {
        CenterText = "{pdf-title}",
        DrawDividerLine = true,
        FontSize = 16
    };
    Renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
    {
        LeftText = "{date} {time}",
        RightText = "Page {page} of {total-pages}",
        DrawDividerLine = true,
        FontSize = 14
    };
    Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
    Renderer.RenderingOptions.EnableJavaScript = true;
    Renderer.RenderingOptions.RenderDelay = 500; //milliseconds
    using var PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format");
    PDF.SaveAs("wikipedia.pdf");
}
'''
'''IronPDF URL to PDF
'''anchor-ironpdf-website-to-pdf
'''*
Private Sub ExistingWebURL()
	' Create a PDF from any existing web page
	Dim Renderer = New IronPdf.ChromePdfRenderer()
	' Create a PDF from an existing HTML
	Renderer.RenderingOptions.MarginTop = 50 'millimetres
	Renderer.RenderingOptions.MarginBottom = 50
	Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
	Renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
		.CenterText = "{pdf-title}",
		.DrawDividerLine = True,
		.FontSize = 16
	}
	Renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
		.LeftText = "{date} {time}",
		.RightText = "Page {page} of {total-pages}",
		.DrawDividerLine = True,
		.FontSize = 14
	}
	Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
	Renderer.RenderingOptions.EnableJavaScript = True
	Renderer.RenderingOptions.RenderDelay = 500 'milliseconds
	Dim PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format")
	PDF.SaveAs("wikipedia.pdf")
End Sub
VB   C#

iTextSharp 和 IronPDF 之間的區別

iTextSharp 與 IronPDF 編輯 PDF 的比較:圖7 - 查看來源圖片

iTextSharp 是一個流行的開源庫,允許開發人員在 C# 中創建、操作和從 PDF 文檔中提取數據。這是一個有著良好文檔記錄且被廣泛使用的庫,已經存在很長一段時間。然而,IronPDF 是一個較新的且更現代的庫,提供了額外的功能和優勢,使其成為開發人員更好的選擇。

IronPDF 超過 iTextSharp 的一個方面是其輸出能力。IronPDF 提供了對 HTML 到 PDF 轉換的更好支持,使開發人員能夠輕鬆地將 HTML 頁面轉換為 PDF 文檔。這對於生成包含豐富媒體或交互式內容的報告或文檔特別有利。此外,IronPDF 允許更精細地控制頁面佈局和格式,使創建精確匹配所需外觀的 PDF 文檔變得更加簡單。

比較iTextSharp與IronPDF編輯PDF:圖8 - IronPDF for .NET

從HTML輸入字串生成PDF

下面的程式碼使用IronPDF來創建具有HTML輸入的PDF。

/**
IronPDF HTML to PDF
anchor-ironpdf-document-from-html
**/
private void HTMLString()
{
    // Render any HTML fragment or document to HTML
    var Renderer = new IronPdf.ChromePdfRenderer();
    using var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
    Renderer.RenderingOptions.TextFooter = new HtmlHeaderFooter() 
    { 
        HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"
    };
    var OutputPath = "ChromePdfRenderer.pdf";
    PDF.SaveAs(OutputPath);
    Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
}
/**
IronPDF HTML to PDF
anchor-ironpdf-document-from-html
**/
private void HTMLString()
{
    // Render any HTML fragment or document to HTML
    var Renderer = new IronPdf.ChromePdfRenderer();
    using var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
    Renderer.RenderingOptions.TextFooter = new HtmlHeaderFooter() 
    { 
        HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"
    };
    var OutputPath = "ChromePdfRenderer.pdf";
    PDF.SaveAs(OutputPath);
    Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
}
'''
'''IronPDF HTML to PDF
'''anchor-ironpdf-document-from-html
'''*
Private Sub HTMLString()
	' Render any HTML fragment or document to HTML
	Dim Renderer = New IronPdf.ChromePdfRenderer()
	Dim PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>")
	Renderer.RenderingOptions.TextFooter = New HtmlHeaderFooter() With {.HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"}
	Dim OutputPath = "ChromePdfRenderer.pdf"
	PDF.SaveAs(OutputPath)
	Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen
End Sub
VB   C#

iText 7 HTML 轉 PDF

以下程式碼使用 iText7 將 HTML 文字生成 PDF。

/**
iText HTML to PDF
anchor-itext-html-to-pdf
**/
private void HTMLString()
{
    HtmlConverter.ConvertToPdf("< h1 > Hello iText7 </ h1 >", new FileStream("ChromePdfRenderer.pdf", FileMode.Create));
}
/**
iText HTML to PDF
anchor-itext-html-to-pdf
**/
private void HTMLString()
{
    HtmlConverter.ConvertToPdf("< h1 > Hello iText7 </ h1 >", new FileStream("ChromePdfRenderer.pdf", FileMode.Create));
}
'''
'''iText HTML to PDF
'''anchor-itext-html-to-pdf
'''*
Private Sub HTMLString()
	HtmlConverter.ConvertToPdf("< h1 > Hello iText7 </ h1 >", New FileStream("ChromePdfRenderer.pdf", FileMode.Create))
End Sub
VB   C#

性能

在性能方面,IronPDF 明顯勝出。它被設計得比 iTextSharp 更快、更高效,能讓開發者更迅速地生成 PDF 並佔用較少的系統資源。這在處理大型或複雜的 PDF 文件時尤為重要,因為此時性能可能成為一個重要因素。

價格

IronPDF 在價格方面比 iTextSharp 具有優勢。雖然 iTextSharp 在大多數用途上是免費的,但在某些使用情況下需要商業授權,且商業授權費用可能相當昂貴。另一方面,IronPDF 提供更具成本效益的價格模式,並具有多種選項,以滿足不同需求和預算。

授權和定價

iTextSharp 和 IronPDF 之間的一個主要區別是他們的授權和定價。

iTextSharp 採用 AGPL 授權,允許在開源項目中免費使用,但對於商業用途則需要商業授權。iTextSharp 的商業授權有不同的等級,定價基於所需的功能和支援層級,以及開發人員和部署伺服器的數量。

另一方面,IronPDF 是一個商業庫,提供免費試用版供開發人員在購買前評估。IronPDF 提供靈活的授權選項,包括每位開發人員和每個伺服器的授權,還有針對大型組織的企業授權。IronPDF 的定價基於開發人員數量和所需功能,多年和大量授權可享有折扣。

雖然 iTextSharp 對於小型開源項目可能更具成本效益,但 IronPDF 的靈活授權選項和商業支援使其成為商業項目和大型組織的更可行選擇。

iTextSharp 與 IronPDF 編輯 PDF 的比較:圖 9 - 功能

總結

總而言之,雖然 iTextSharp 和 IronPDF 都是用於在 C# 中操作 PDF 的強大庫,但 IronPDF 作為更靈活且高效的選擇脫穎而出。憑藉其先進的功能、直觀的 API 和用戶友好的文件,IronPDF 為開發者提供了卓越的體驗。其靈活的許可選項和具有成本效益的定價使其更適合商業項目和較大的組織。

此外,IronPDF 擁有更好的技術性能,具有更快的渲染時間、高效的內存使用以及對大型 PDF 文檔的優化處理。隨著 Iron Software 的支持, 特別優惠 購買全部五個產品只需支付兩個授權的價格,開發者即可獲得一套全面而強大的工具和庫,以簡化他們的應用程序開發過程。如果您需要一個強大且高效的 PDF 庫來用於您的 C# 項目,IronPDF 是個不錯的選擇。

< 上一頁
從 Byte Array 使用 C# iTextSharp 創建 PDF (對比 IronPDF)
下一個 >
什麼是iText? (使用IronPDF的C#和Java PDF程式庫替代方案)

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >