產品比較

iTextSharp C# HTML 轉 PDF 的 .NET Core 替代方案

發佈 2021年11月8日
分享:

IronPDF 和 iText 7 (前稱為iTextSharp) 都能提供生成、操作、和 列印 PDF 在 .NET 及 .NET Core 中。

哪個 C# PDF程式庫 最適合您的 .NET 專案?本文的目標是幫助讀者做出正確且明智的決定。


概述

C# 庫比較

IronPDF 是:

  • .NET 第一
  • 公開商業,且定價公開
  • 專注於從 HTML 渲染 PDF,因此開發者不需要學習 PDF 的工作原理
  • 對於實用的程序員來說,是完成工作的一個絕佳選擇。

iText (iTextSharp) 是:**

  • Java 為先
  • 非常開源。我們可能會聯絡他們,了解在嚴格開源的 AGLP 項目之外的使用報價。
  • 專注於使用基於 PDF 內部工作原理的程序化 API 來渲染 PDF
  • 是免費和學術項目的絕佳選擇

iText 7 與 IronPDF .NET 函式庫

iTextSharp 已有至少 6 年的歷史,基於開源的 Java 程式碼庫 iText,因此仍有一些 Java 的風格。首次學習 Java 的開發者可能會覺得這個庫很熟悉。

IronPDF 是一個 .NET 為主的庫,API 設計的重點是易於在 Visual Studio 中使用。.NET 已經存在將近 20 年,不斷成長和擴展,開啟了許多可能性,而 IronPDF 就是為了利用這些可能性而設計的。它允許我們在 .NET 框架項目中創建和操作 PDF 文件。你可以下載 IronPDF 作為 iTextSharp 替代方案iText 和 IronPDF 的渲染 API 非常不同。讓我們比較每個代碼段,以便在 PDF 文件中添加頁眉和頁腳。

使用 IronPDF 在 C# 中向 PDF 添加頁首和頁尾

Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
    CenterText = "{pdf-title}",
    DrawDividerLine = true,
    FontSize = 16
};
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
    LeftText = "{date} {time}",
    RightText = "Page {page} of {total-pages}",
    DrawDividerLine = true,
    FontSize = 14
};
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
    CenterText = "{pdf-title}",
    DrawDividerLine = true,
    FontSize = 16
};
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
    LeftText = "{date} {time}",
    RightText = "Page {page} of {total-pages}",
    DrawDividerLine = true,
    FontSize = 14
};
Renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
	.CenterText = "{pdf-title}",
	.DrawDividerLine = True,
	.FontSize = 16
}
Renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
	.LeftText = "{date} {time}",
	.RightText = "Page {page} of {total-pages}",
	.DrawDividerLine = True,
	.FontSize = 14
}
VB   C#

iTextSharp 添加 PDF 頁首和頁尾

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#

通過快速瀏覽代碼,您可以看到IronPDF是實用的,基於常見的終端用戶需求。

iText是一個低層級的庫,專注於繪圖API,我們可以將對象、形狀和文本添加到頁面上。

iTextSharp.dll主要使用編程模型來渲染PDF。在使用iTextSharp PDF庫時,每段PDF文本、圖形、表格或線條都是“繪製”或繪圖到PDF上的。這個API看起來是低層次的,並專注於PDF文檔標準。這種模型允許精確操作,但可能需要開發者了解一些PDF的工作原理。與現有設計風格或網頁資產密切匹配可能需要一些迭代和閱讀。 iTextSharp 文件ation延續其傳統,方法學和程式介面具有明顯的 Java 風格。

相比之下,IronPDF 使用完整嵌入式網頁瀏覽器渲染器來... 將 HTML 轉換為 PDF. 以下短文 (1 行和 2 行) C# 代碼範例開發人員可以從現有或新的 HTML、圖片和 CSS 生成 PDF。這讓開發人員能夠緊密協作現有的網頁資源,也可以在專案進行中與設計師並行工作。iText 確實包含 C# .NET 的 HTML 轉 PDF 功能,儘管這似乎並不是該庫的主要特點。

繼續閱讀,以了解 IronPDF 和 iTextSharp 幫助開發人員達成以下目標的不同方式的更多比較細節: 從現有的網址創建PDF

1. 授權

授權選項對開發者的項目也是一個重要因素。iTextSharp 是在 AGPL 授權協議下的開源軟體。在 AGLP 授權下,任何使用包含 iTextSharp 的應用程序的部分內容者 (甚至在公司网络或互联网上) 可能有權獲得應用程式完整原始碼的完整副本。這對於學術工作非常有利。如果我們希望在商業應用中使用iTextSharp,最好與iText聯繫並 請他們報價 iText 商業使用的價格鐵PDF 是 開發免費使用,然後可以 授權用於商業部署 以公開發布的合理價格,起價為 $749。

IronPDF 和 iTextSharp

這就是這兩個庫的比較情形:

IronPDFiTextSharp
通過內建的完整網絡瀏覽器將HTML轉換為PDF通過pdfHTML附加元件將基本HTML轉換為PDF
渲染焦點:嵌入式網頁瀏覽器渲染重點:程式化繪圖模型
IronPDF具有明確的授權,並且公佈了價格。AGPL! 商業用途價格未公布。
易於使用 .NET 首設計進行編碼基於 Java API
不適用於學術作業和課程 非常適合學術作業和研究

主要差異

使用 IronPDF 從 HTML 生成 PDF

IronPDF 使 .NET 和 .NET Core 開發人員能夠輕鬆地使用 C#、F# 和 VB.NET 在 .NET Core 和 .NET Framework 中生成、合併、拆分、編輯和提取 PDF 內容以及 建立PDF 從 HTML、ASPX、CSS、JS 和圖片檔案。

它使用完全嵌入的網頁瀏覽器將 HTML 轉換為 PDF。這使得開發者能夠從 HTML、圖片和 CSS 生成 PDF,並且可以與現有的網頁資源密切合作,還可以在項目過程中與設計師並行工作。

2. IronPDF 功能

IronPDF 真正專注於開發人員的生產力。該庫將許多常見的複雜 PDF 程式碼任務簡化為便利的 C# 方法,以提取文本和圖像、簽署 PDF、使用新的 HTML 編輯 PDF 等,而開發人員無需學習 PDF 文件標準即可了解如何實現最佳結果。

  • 從 HTML、圖像和 ASPX 文件生成 PDF 文檔
  • 讀取 PDF 文本
  • 從 PDF 中提取數據和圖像
  • 合併 PDF 文檔
  • 拆分 PDF
  • 操作 PDF

2. iTextSharp 文件特性

iTextSharp.dll 使用主要程式模型來渲染PDF,並且擁有強大且與PDF標準緊密相隨的先進PDF操作API。

  • AGLP嚴格的開源許可
  • 程式化繪圖模型
  • 編輯和閱讀PDF檔案
  • 穩健的PDF操作功能
  • 基於Java庫

讓我們通過創建一個示例項目來比較這兩個庫:


範例專案

建立一個ASP.NET專案

請使用以下步驟來建立 ASP.NET 網站:

  1. 開啟 Visual Studio

  2. 點擊文件 > 新建項目

  3. 在項目類型列表框中選擇 Visual C# 下的 Web

  4. 選擇 ASP.NET Web 應用程序

圖 1新專案

  • 按一下確定
  • 在下一個畫面中,如圖 2 所示選擇 Web Forms

圖2網頁表單

  • 點擊確定

現在我們有一些可以使用的東西了。讓我們安裝 IronPDF。


開始使用

3. IronPDF 庫的安裝

為了使用 IronPDF,你首先需要安裝它。 (免費)有兩個選項:

  • NuGet
  • 下載庫

讓我們仔細看看。

C# NuGet 程式庫用于 PDF

安裝與 NuGet

Install-Package IronPdf
Java PDF JAR

下載 DLL

下載DLL

手動安裝到您的項目中

C# NuGet 程式庫用于 PDF

安裝與 NuGet

Install-Package IronPdf
Java PDF JAR

下載 DLL

下載DLL

手動安裝到您的項目中

立即開始在您的專案中使用IronPDF,並享受免費試用。

第一步:
green arrow pointer

查看 IronPDFNuget 快速安裝和部署。已被下載超過800萬次,它正用C#改變PDF。

C# NuGet 程式庫用于 PDF nuget.org/packages/IronPdf/
Install-Package IronPdf

請考慮安裝 IronPDF DLL 直接下載並手動安裝到您的專案或GAC表單: IronPdf.zip

手動安裝到您的項目中

下載DLL

3.1. 使用 NuGet 安裝

有三種方法可以安裝 IronPDF NuGet 套件:

  1. Visual Studio

  2. 開發者命令提示字元

  3. 直接下載 NuGet 套件

讓我們一個一個來。

3.2. Visual Studio

Visual Studio 提供 NuGet 套件管理器,讓您在專案中安裝 NuGet 套件。您可以透過專案選單存取,或在方案總管中右鍵點擊您的專案。這兩種選項如圖 3 和圖 4 所示。

圖3專案選單

圖4右鍵點擊方案總管

在你從任一選項點擊管理 NuGet 套件之後,瀏覽 IronPDF 套件並按照圖 5 所示進行安裝。

圖 5安裝 IronPDF NuGet 套件

3.3. 開發者命令提示字元

以下步驟打開開發者命令提示字元並安裝 IronPDF NuGet 套件

  1. 搜尋您的 開發者命令提示字元—通常位於您的 Visual Studio 資料夾下
  2. 輸入以下命令:PM > Install-Package IronPdf
  3. 按下 Enter
  4. 套件將被安裝
  5. 重新載入您的 Visual Studio 專案

3.4. 直接下載 NuGet 套件

為了下載 NuGet 套件:

  1. 瀏覽到 https://www.nuget.org/packages/IronPdf/

  2. 點擊「下載封包」

  3. 封包下載完成後,雙擊開啟

  4. 重新載入您的 Visual Studio 專案

3.5. 下載 .DLL 函式庫

第二種安裝 IronPDF 的方法是通過 直接下載.

圖6下載IronPDF資料庫

在您的專案中按以下步驟引用庫:

  1. 右鍵單擊在解決方案總管中的解決方案
  2. 選擇「參考」
  3. 瀏覽並選擇IronPDF.dll庫
  4. 單擊「確定」

現在您已經設置完成,我們可以在設置iTextSharp之後開始使用IronPDF庫中的一些很棒的功能。

使用 NuGet 安裝 iTextSharp

有三種方式來 安裝 iTextSharp NuGet 套件,它們是:

  • Visual Studio
  • 開發人員命令提示字元
  • 直接下載 NuGet 套件

我們一個一個來。

對於 Visual Studio,搜尋 iText 並安裝相關套件,如下所示。

圖7iText

或者,在開發者命令提示字元中 (如前所示,輸入以下命令)

  • PM > Install-Package itext7

或者,下載 iText 7 直接從他們的網站。

現在你已經建立了必要的專案,讓我們在程式碼中比較這兩個庫。


比較代碼

4. 從現有的URL建立PDF

以下代碼下載網頁並將其轉換為PDF文件。

4.1. 使用 IronPDF 將網站轉換為 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#

4.2. iText7 URL 轉 PDF

以下程式碼使用 iText7 從網站地址直接建立 PDF 文件,並添加頁眉和頁腳。

/**
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#

4.3. 代碼比較

使用 iText 7,作者花了更長的時間編寫代碼來將給定 URL 的文件轉換為 PDF。需要兩行代碼:

MemoryStream wiki = GetStreamFromUrl("https://en.wikipedia.org/wiki/Tiger");

HtmlConverter.ConvertToPdf(wiki, new FileStream("wikipedia.pdf",FileMode.OpenOrCreate));
MemoryStream wiki = GetStreamFromUrl("https://en.wikipedia.org/wiki/Tiger");

HtmlConverter.ConvertToPdf(wiki, new FileStream("wikipedia.pdf",FileMode.OpenOrCreate));
Dim wiki As MemoryStream = GetStreamFromUrl("https://en.wikipedia.org/wiki/Tiger")

HtmlConverter.ConvertToPdf(wiki, New FileStream("wikipedia.pdf",FileMode.OpenOrCreate))
VB   C#

MemoryStream 物件和 FileStream 物件都必須設置屬性來創建。

讓我們來看看 IronPDF

IronPDF 需要三行代碼 (如果您在程式碼段落的底部包含 SaveAs 方法), 但除此之外只需要兩行:

var Renderer = new IronPdf.ChromePdfRenderer();
using var PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format");
PDF.SaveAs("wikipedia.pdf")
var Renderer = new IronPdf.ChromePdfRenderer();
using var PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format");
PDF.SaveAs("wikipedia.pdf")
Dim Renderer = New IronPdf.ChromePdfRenderer()
Dim PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format")
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'PDF.SaveAs("wikipedia.pdf")
VB   C#

無需 FileStream 或額外的 .NET 對象,因為所有功能似乎都內建於 IronPDF 的 RenderUrlAsPdf 方法中。

4.4. 輸出比較

我現在包括一個輸出比較,因為這應適用於在本教程中我們將進行的所有後續練習。

通過這段代碼,我們已經轉換了維基百科中的老虎部分 網頁轉PDF 與這兩個函式庫。

4.5. iTextSharp 7 文件輸出

使用 iText 庫輸出的文件有 49 頁。它沒有渲染 JavaScript 或 CSS。以下是結果輸出:

圖8iText Tiger 維基頁面

4.6. IronPDF 文件輸出

使用 IronPDF 的庫輸出的文件有 12 頁。它能很好地渲染 JavaScript 和 CSS。生成的輸出如下所示:

圖9IronPDF Tiger 維基頁面

一張圖片勝過千言萬語……IronPDF 在 HTML 到 PDF 渲染方面表現出色。


5. 從 HTML 輸入字串生成 PDF

下面的代碼會創建一個 PDF 文檔並在其中打印 HTML 字串。

5.1. 使用HTML生成IronPDF文件

以下程式碼使用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#

5.2. 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#

5.3. 代碼比較

iText 再次使用 HtmlConverter.ConvertToPdf 調用來將 HTML 字串輸出為 PDF。

IronPDF 使用其 RenderHtmlAsPdf 方法,該方法專門設計用於處理 HTML 和 PDF。

兩個選項都非常快速而且直截了當,但 IronPDF 提供了大量對渲染過程的控制,甚至可以使用 HTML 向 PDF 頁面添加頁首和頁尾。


6. 將 ASPX 頁面轉換為 PDF

以下代碼從 ASPX 頁面生成 PDF 文件。

6.1. IronPDF 從 ASPX 渲染 PDF

以下代碼使用 IronPDF 從 ASPX 文件中創建一個包含內容的 PDF。通過在 Page_Load 事件中添加一行代碼,Web 表單變成動態 PDF。IronPdf.AspxToPdf.RenderThisPageAsPdf();`

/**
IronPDF ASPX to PDF
anchor-ironpdf-render-pdf-from-aspx
**/
protected void Page_Load(object sender, EventArgs e)
{
    IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
/**
IronPDF ASPX to PDF
anchor-ironpdf-render-pdf-from-aspx
**/
protected void Page_Load(object sender, EventArgs e)
{
    IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
'''
'''IronPDF ASPX to PDF
'''anchor-ironpdf-render-pdf-from-aspx
'''*
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
	IronPdf.AspxToPdf.RenderThisPageAsPdf()
End Sub
VB   C#

6.2. iTextSharp ASPX 轉換 PDF

iText7 的 pdfHTML 庫似乎不支援從 ASPX 網頁建立 PDF。這種功能需要在每個專案的基礎上編碼。

開發人員應該從框架獲取 HTML,然後 pdfHTML 插件會接受該 HTML 進行 PDF 轉換。


7. 將 XML 轉換為 PDF

以下程式碼將 XML 轉換為 PDF

7.1. IronPDF 從 XML 創建 PDF

/**
IronPDF XML to PDF
anchor-ironpdf-creates-pdf-from-xml
**/
private void XMLtoPDF(string XSLT, string XML)
{
    XslCompiledTransform transform = new XslCompiledTransform();
    using(XmlReader reader = XmlReader.Create(new StringReader(XSLT)))  
    {
        transform.Load(reader);
    }

    StringWriter results = new StringWriter();
    using(XmlReader reader = XmlReader.Create(new StringReader(XML))) 
    {
        transform.Transform(reader, null, results);
    }

    IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
    // options, headers, and footers may be set there
    // Render our XML as a PDF via XSLT
    Renderer.RenderHtmlAsPdf(results.ToString()).SaveAs("XMLtoPDF.pdf");
}
/**
IronPDF XML to PDF
anchor-ironpdf-creates-pdf-from-xml
**/
private void XMLtoPDF(string XSLT, string XML)
{
    XslCompiledTransform transform = new XslCompiledTransform();
    using(XmlReader reader = XmlReader.Create(new StringReader(XSLT)))  
    {
        transform.Load(reader);
    }

    StringWriter results = new StringWriter();
    using(XmlReader reader = XmlReader.Create(new StringReader(XML))) 
    {
        transform.Transform(reader, null, results);
    }

    IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
    // options, headers, and footers may be set there
    // Render our XML as a PDF via XSLT
    Renderer.RenderHtmlAsPdf(results.ToString()).SaveAs("XMLtoPDF.pdf");
}
'''
'''IronPDF XML to PDF
'''anchor-ironpdf-creates-pdf-from-xml
'''*
Private Sub XMLtoPDF(ByVal XSLT As String, ByVal XML As String)
	Dim transform As New XslCompiledTransform()
	Using reader As XmlReader = XmlReader.Create(New StringReader(XSLT))
		transform.Load(reader)
	End Using

	Dim results As New StringWriter()
	Using reader As XmlReader = XmlReader.Create(New StringReader(XML))
		transform.Transform(reader, Nothing, results)
	End Using

	Dim Renderer As New IronPdf.ChromePdfRenderer()
	' options, headers, and footers may be set there
	' Render our XML as a PDF via XSLT
	Renderer.RenderHtmlAsPdf(results.ToString()).SaveAs("XMLtoPDF.pdf")
End Sub
VB   C#

XSLT 文件的結構如下:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <h2>My CD Collection</h2>
    <p>Titles:
    <xsl:for-each select="catalog/cd">
      <xsl:value-of select="title"/>
      <xsl:if test="position() < last()-1">
        <xsl:text>, </xsl:text>
      </xsl:if>
      <xsl:if test="position()=last()-1">
        <xsl:text>, and </xsl:text>
      </xsl:if>
      <xsl:if test="position()=last()">
        <xsl:text>!</xsl:text>
      </xsl:if>
    </xsl:for-each>
    </p>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <h2>My CD Collection</h2>
    <p>Titles:
    <xsl:for-each select="catalog/cd">
      <xsl:value-of select="title"/>
      <xsl:if test="position() < last()-1">
        <xsl:text>, </xsl:text>
      </xsl:if>
      <xsl:if test="position()=last()-1">
        <xsl:text>, and </xsl:text>
      </xsl:if>
      <xsl:if test="position()=last()">
        <xsl:text>!</xsl:text>
      </xsl:if>
    </xsl:for-each>
    </p>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>
HTML

7.2. iTextSharp XML 轉換為 PDF

iText 支援將 XML 轉換為 PDF 可能需要自訂開發工作。


8. 基於外部輸入創建即時圖表

以下代碼從外部來源獲取數據並相應地創建圖表。

8.1. IronPDF 圖表創建

以下程式碼使用 IronPDF 快速創建圖表並通過 HTML 到 PDF 設置頁面屬性。

/**
IronPDF Create Chart
anchor-ironpdf-chart-creation
**/
private void Chart()
{
    var Renderer = new ChromePdfRenderer();
    using var PDF = Renderer.RenderUrlAsPdf("https://bl.ocks.org/mbostock/4062006");

    Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
    Renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape;
    PDF.SaveAs("chart.pdf");
}
/**
IronPDF Create Chart
anchor-ironpdf-chart-creation
**/
private void Chart()
{
    var Renderer = new ChromePdfRenderer();
    using var PDF = Renderer.RenderUrlAsPdf("https://bl.ocks.org/mbostock/4062006");

    Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
    Renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape;
    PDF.SaveAs("chart.pdf");
}
'''
'''IronPDF Create Chart
'''anchor-ironpdf-chart-creation
'''*
Private Sub Chart()
	Dim Renderer = New ChromePdfRenderer()
	Dim PDF = Renderer.RenderUrlAsPdf("https://bl.ocks.org/mbostock/4062006")

	Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
	Renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape
	PDF.SaveAs("chart.pdf")
End Sub
VB   C#

8.2. iText C# 圖表

以下代碼使用 iText7 來創建圖表並設置屬性。我們可以看到程式設計的繪圖 API 風格。

/**
iText Create Chart
anchor-itext-c-charts
**/
private void Chart()
{
    //Initialize PDF writer
    PdfWriter writer = new PdfWriter("chart.pdf");
    //Initialize PDF document
  using PdfDocument pdf = new PdfDocument(writer);

    ConverterProperties properties = new ConverterProperties();
    properties.SetBaseUri("https://bl.ocks.org/mbostock/4062006");

    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.Close();
}
/**
iText Create Chart
anchor-itext-c-charts
**/
private void Chart()
{
    //Initialize PDF writer
    PdfWriter writer = new PdfWriter("chart.pdf");
    //Initialize PDF document
  using PdfDocument pdf = new PdfDocument(writer);

    ConverterProperties properties = new ConverterProperties();
    properties.SetBaseUri("https://bl.ocks.org/mbostock/4062006");

    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.Close();
}
'''
'''iText Create Chart
'''anchor-itext-c-charts
'''*
Private Sub Chart()
	'Initialize PDF writer
	Dim writer As New PdfWriter("chart.pdf")
	'Initialize PDF document
  Using pdf As New PdfDocument(writer)
	
		Dim properties As New ConverterProperties()
		properties.SetBaseUri("https://bl.ocks.org/mbostock/4062006")
	
		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.Close()
  End Using
End Sub
VB   C#

9. 是否有免費的 iTextSharp 商業使用許可證?

IronPDF 和 iText 許可選項之間最大的區別在於 iTextSharp 是根據 AGPL 許可協議的開源軟體。簡而言之 (如引用, "AGPL 授權與其他 GNU 授權不同,其專為網路軟體設計。你可以分發已修改的版本,但必須記錄更改和實施日期。與通常的 GNU 授權一樣,你必須以 AGPL 授權派生作品。它提供與 GPLv3 相同的限制和自由,但有一個額外條款,即源代碼必須隨著網頁發佈一起分發。由於網站和服務從來不是以傳統方式分發的,因此 AGPL 是網頁的 GPL。"

這意味著,如果應用程式以任何方式使用了 iTextSharp——即使是通過本地網絡或互聯網,那麼應用程式的完整原始碼必須對每個使用者免費開放。這對專案的最佳利益並不總是有利。

這種許可證通常用於希望保持學術性的高度學術作品,也用於旨在付費使用的開源專案,這些專案在學術環境之外部署軟體。AGPL 許可證協議的性質使開源 iTextSharp 許多商業用途的許可證困難,除非能夠與開發人員安排和合法協商獲得私人許可證。

另一方面,IronPDF 是一個公開的商業產品。 C# PDF程式庫開發過程中是免費的,並且始終可以獲得商業部署的許可。這種明確的許可模式不需要開發者學習 GNU / AGPL 許可模式的細節,反而可以專注於他們的項目。 授權可用 用於單個項目、單個開發者、代理機構和全球公司,及SaaS和OEM再分發。無需協商法律費用,僅直接授權。

10. 總結

IronPdf 是:

  • .NET 首選,具有適用於 C# 和 VB 開發人員的直觀 API
  • 透明商業化,具有公佈的價格
  • 專注於從 HTML 渲染 PDF,以便開發人員不需要學習 PDF 的運作方式
  • 對於試圖高效完成工作的務實程式員來說,是一個極佳的選擇

iText (iTextSharp) 是:**

  • Java 一馬當先
  • 非常開源。我們可以致電他們獲取在嚴格的開源AGPL項目之外的使用報價。
  • 專注於使用基於PDF內部運作的程式設計API來顯示PDF
  • 對於免費和學術項目以及高技術的商業PDF應用程式在高預算項目上都是一個很好的選擇。

快速指南

在 GitHub 上下載此專案

您可以在GitHub上存取並分享這個C#比較教學的所有源代碼。

IronPDF 和 iTextSharp 代碼比較

獲取C# PDF快速入門手冊

我們創建了一個免費的 PDF 資源指南,以幫助在 .NET 中進行 PDF 開發更容易。此指南包含了常見功能的步驟說明,以及在您的項目中用 C# 和 VB.NET 操作、編輯、生成和保存 PDF 的範例。

下載指南

探索 IronPDF API 參考文獻

探索 IronPDF C# 庫的 API 參考,包括 IronPDF 的所有功能、類別、方法字段、命名空間和枚舉的詳細資料。

查看 API 參考文件
< 上一頁
IronPDF 和 EvoPdf:比較
下一個 >
Syncfusion PDF Viewer 與 HTML 轉 PDF 的比較

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

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