产品比较

iTextSharp C# HTML 转换为 PDF 的 .NET Core 替代方案

发布 2021年十一月8日
分享:

IronPDF 和 iText 7 (旧称 iTextSharp) 两者都提供生成、操作和 打印 PDF .NET和.NET Core。

其中 C# PDF 库 最适合您的 .NET 项目? 本文旨在帮助读者做出正确、明智的决定。


概述

C# 库比较

IronPDF 是:

  • .NET First
  • 公开商业定价
  • 专注于从 HTML 渲染 PDF,因此开发人员无需学习 PDF 的工作原理
  • 是务实的程序员完成工作的最佳选择。

iText (iTextSharp) 是:

  • Java 第一
  • 非常开源。除了严格的开放源码 AGLP 项目外,我们还可以将其用于报价。
  • 专注于使用基于 PDF 内部工作方式的编程 API 渲染 PDF
  • 免费项目和学术项目的最佳选择

iText 7 与 IronPDF .NET 库的比较

iTextSharp 已经存在了至少 6 年,它基于名为 iText 的开放源码 Java 代码库,仍然带有一些 Java 的味道。 最初学习 Java 的开发人员可能会对这个库感到熟悉。

IronPDF 是一个.NET-first 库,其应用程序接口是围绕在 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 文档. 为了与传统保持一致,其方法和编程界面都带有明显的 Java 风格。

相比之下,IronPDF 使用完全嵌入式网络浏览器渲染器来 将 HTML 转换为 PDF. 以下是简短的 (单线和双线) C# 代码示例通过 iText,开发人员可以从现有的或新的 HTML、图像和 CSS 生成 PDF。 这样,开发人员就能与现有的网络资产紧密配合,并在项目中与设计人员并行工作。iText 确实包括用于 C# .NET 的 HTML 转 PDF 功能,但这显然不是该库的主要功能。

请继续阅读,了解有关 IronPDF 和 iTextSharp 帮助开发人员实现以下目标的不同方式的更多比较细节:

1.许可证发放

iTextSharp 是 AGPL 许可协议下的开源软件。在 AGLP 许可协议下,任何人使用包含 iTextSharp 的应用程序的任何部分,都必须遵守以下规定 (甚至跨越公司网络或互联网) 可能有权获得应用程序完整源代码的完整副本。这对于学术工作来说是极好的。如果我们希望在商业应用程序中使用 iTextSharp,最好的做法是联系 iText 和 向他们索取 iText 商业用途的报价.

IronPDF 是 免费开发,然后可以 获得商业部署许可 公开发布的合理价格,起价为 $749。

IronPDF 和 iTextSharp

这就是两个图书馆的对比:

IronPDFiTextSharp
通过完整的内置网络浏览器将 HTML 转换为 PDF通过 pdfHTML 附加组件将基本 HTML 转换为 PDF
渲染重点:嵌入式网络浏览器渲染重点:程序化绘图模型
IronPDF 有明确的许可证和公布的价格AGPL!未公布商业用途定价。
采用 .NET First 设计,易于编码基于 Java API
不适合学术作业和课业 非常适合学术作业和研究

主要区别

使用 IronPDF 从 HTML 生成 PDF

IronPDF 使 .NET 和 .NET Core 开发人员能够在 C#、F# 和 VB.NET 中轻松生成、合并、分割、编辑和提取 PDF 内容。 创建 PDF 来自 HTML、ASPX、CSS、JS 和图像文件。

它利用完全嵌入式网络浏览器将 HTML 转换为 PDF。这样,开发人员就能从 HTML、图像和 CSS 生成 PDF,并与现有的网络资产紧密合作,还能在项目期间与设计人员并行工作。

2.IronPDF 功能

IronPDF 真正关注开发人员的工作效率。该库将许多常见的复杂 PDF 代码任务简化为方便的 C# 方法,用于提取文本和图像、签署 PDFS、使用新的 HTML 编辑 PDFS 等,开发人员无需研究 PDF 文档标准就能了解如何实现最佳效果。

  • 从 HTML、图像和 ASPX 文件生成 PDF 文档
  • 读取 PDF 文本
  • 从 PDF 文件中提取数据和图像
  • 合并 PDF 文档
  • 分割 PDF 文档
  • 操作 PDF

2. iTextSharp 文档功能

"(《世界人权宣言》) iTextSharp.dll 主要使用编程模型来渲染 PDF,它拥有先进的 PDF 操作 API,功能强大且严格遵循 PDF 标准。

  • AGLP 严格的开源许可
  • 程序化绘图模式
  • 编辑和阅读 PDF
  • 强大的 PDF 操作功能
  • 基于 Java 库

让我们利用这两个库创建一个示例项目进行比较:


项目示例

创建 ASP.NET 项目

使用以下步骤创建 ASP.NET 网站:

1.打开 Visual Studio

2.点击文件 > 新建项目

3.在项目类型列表框中选择 Visual C# 下的 Web

4.选择 ASP.NET Web 应用程序

图 1 - 新项目

  • 点击确定
  • 在下一个屏幕中,选择 Web 表单,如图 2 下方所示

图 2 - 网络表格

  • 点击确定

现在我们有东西可以用了。让我们安装 IronPDF。


入门

3.安装 IronPDF 库

要使用 IronPDF,首先需要安装它 (免费的).有两种选择:

  • NuGet
  • 下载库

让我们仔细看看。

适用于PDF的C# NuGet库

安装使用 NuGet

Install-Package IronPdf
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

适用于PDF的C# NuGet库

安装使用 NuGet

Install-Package IronPdf
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

开始在您的项目中使用IronPDF,并立即获取免费试用。

第一步:
green arrow pointer

查看 IronPDFNuget 用于快速安装和部署。它有超过800万次下载,正在使用C#改变PDF。

适用于PDF的C# NuGet库 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 > 安装软件包 IronPdf

3.按回车键

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 并安装相关软件包,如下图所示。

图 7 - iText

或者,在开发人员命令提示符中 (如前所示,输入以下命令)

  • PM > 安装软件包 itext7

或下载 iText 7 直接从其网站获取。

现在您已经创建了必要的项目,让我们在代码中比较一下这两个库。


代码对比

4.从现有 URL 创建 PDF

以下代码下载网页并将其转换为 PDF 文档。

4.1.IronPDF Website to 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.输出比较

我现在加入输出比较,因为它适用于本教程中的所有后续练习。

通过这段代码,我们将 Tiger Wikipedia 转变为 网页到 PDF 这两个图书馆。

4.5. iTextSharp 7 文件输出

使用 iText 库输出的文件有 49 页。它没有呈现 JavaScript 或 CSS。输出结果如下所示:

图 8 - iText Tiger 维基页面

4.6.IronPDF 文件输出

使用 IronPDF 库输出的文件有 12 页。它能很好地渲染 JavaScript 和 CSS。输出结果如下所示:

图 9 - IronPDF 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 则使用专门用于处理 HTML 和 PDF 的 RenderHtmlAsPdf 方法。

这两种方法都非常快捷,但 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 to 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开发人员提供直观的应用程序接口
  • 公开商业定价
  • 专注于从 HTML 渲染 PDF,因此开发人员无需学习 PDF 的工作原理
  • 对于想高效完成工作的实用型编码人员来说,这是一个不错的选择。

iText (iTextSharp) 是:

  • Java 第一
  • 非常开源。 除了严格的开源 AGLP 项目外,我们还可以向他们询价。
  • 专注于使用基于 PDF 内部工作方式的编程 API 渲染 PDF
  • 对于免费项目和学术项目以及高预算项目中的高技术商业 PDF 应用程序来说,这都是一个不错的选择。

教程快速访问

在 GitHub 上下载此项目

您可以在 GitHub 上访问和共享本 C# 比较教程的所有源代码。

IronPDF 和 iTextSharp 代码比较

获取 C# PDF 快速入门手册

我们创建了一个免费的 PDF 资源指南,以帮助您更轻松地为 .NET 开发 PDF,其中包括常用函数的演练以及在 C# 和 VB.NET 项目中操作、编辑、生成和保存 PDFS 的示例。

下载指南

探索 IronPDF API 参考

探索 IronPDF C# 库的 API 参考,包括 IronPDF 的所有功能、类、方法字段、命名空间和枚举的详细信息。

查看应用程序接口参考
< 前一页
IronPDF和EvoPdf:比较
下一步 >
Syncfusion PDF 查看器 HTML 转 PDF 比较

准备开始了吗? 版本: 2024.10 刚刚发布

免费NuGet下载 总下载量: 11,108,738 查看许可证 >