产品比较

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

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

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

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


概述

C# 库比较

IronPDF是:

  • .NET第一
  • 公开商业定价
  • 专注于从 HTML 渲染 PDF,因此开发人员无需学习 PDF 如何工作
  • 对于想完成工作的务实型编码员来说,这是一个不错的选择。

    文本 (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 Framework 项目中创建和处理 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 上。 应用程序接口的级别较低,主要针对 PDF 文档标准。 这种模式允许精确性,但可能需要开发人员学习一些有关 PDF 工作原理的知识。 密切匹配现有的设计风格或网络资产可能需要反复斟酌,并读取 iTextSharp 文档. 为了与传统保持一致,该方法和程序界面具有鲜明的 Java 风格。

相比之下,IronPDF 使用完全嵌入式网络浏览器渲染器来 将 HTML 转换为 PDF. 以下是简短的 (单线和双线) C# 代码示例此外,开发人员还可以根据现有或新的 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 网络应用程序

    图 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

  1. 开发人员命令提示符
  2. 直接下载 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. 点击确定

    设置完成后,我们就可以开始使用 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");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

4.2. iText7 URL to 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));
IRON VB CONVERTER ERROR developers@ironsoftware.com
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。 输出结果如下所示:

图 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;
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

5.2. iText 7 HTML to 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 to 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");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
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 to 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 创建图表并设置属性。 我们可以看到一种程序化的绘图应用程序风格。

/**
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 相同的限制和自由,但增加了一个条款,规定源代码必须与网络出版物一起发布。 Since websites and services are never distributed in the traditional sense, the AGPL is the GPL of the web."

这意味着,如果应用程序以任何方式使用 iTextSharp,即使是通过本地网络或互联网,那么应用程序的全部源代码都必须免费提供给每个用户。 这并不总是对项目最有利的。

这种许可证通常用于学术性很强的作品,目的是保持学术性,也用于打算在学术环境之外部署软件的付费使用的开源项目。 AGPL 许可证协议的性质使开放源代码 iTextSharp 对于许多商业用途来说,除非能与开发者安排和合法协商私人许可证,否则很难获得许可证。

而 IronPDF 则是一款公开的商业软件。 C# PDF 库. 它可免费用于开发,也可随时授权用于商业部署。 这种清晰的许可证模式无需开发人员学习 GNU / AGPL 许可证模式的来龙去脉,他们可以专注于自己的项目。 提供许可证 适用于单个项目使用、单个开发人员、机构和跨国公司,以及 SaaS 和 OEM 再分发。 无需协商法律费用,只需直接颁发许可证。

10.摘要

IronPDF是:

  • .NET First 为 C# 和 VB 开发人员提供直观的应用程序接口
  • 公开商业定价
  • 专注于从 HTML 渲染 PDF,因此开发人员无需学习 PDF 如何工作
  • 对于想高效完成工作的务实编码员来说,这是一个不错的选择。

    文本 (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.9 刚刚发布

免费NuGet下载 总下载量: 10,731,156 查看许可证 >