产品比较

iTextSharp 与 IronPDF 编辑 PDF 的比较

发布 2023年五月8日
分享:

PDF (便携式文档格式) 是一种广泛使用的文档格式,因其能够保留文档格式、安全性和可移植性而广受欢迎。

PDF 文件已成为世界上使用最广泛的文件格式之一,有多个库可用来用 C# 语言创建和处理 PDF 文件。

编辑 PDF 文件 也可能具有挑战性,但在 iTextSharp DLL 和 IronPDF 等库的帮助下,您可以使用 C# 轻松读取、写入和编辑 PDF 文件。

在本文中,我们将比较两个流行的 C# PDF 操作库:iTextSharp 和 IronPDF。 我们将讨论如何使用这两个库编辑 PDF 文件,然后探讨 IronPDF 与 iTextSharp 相比如何更胜一筹,尤其是在输出打印、性能和价格方面。

iTextSharp DLL 和 IronPDF 库简介

iTextSharp 和 IronPDF 是用 C# 处理 PDF 文件的两个流行库。 这两个库都提供了创建、编辑和处理 PDF 文档所需的各种特性和功能。

iTextSharp DLL 是基于 Java 的 iText 库的 C# 移植版本。 它提供了一个简单易用的 API,用于创建和操作 PDF 文档。 iTextSharp 是一个开源库,可在 AGPL 许可证下使用。

IronPDF for .NET 是一个.NET 库,旨在使用 C# 创建、编辑和处理 PDF 文件。 它为处理 PDF 文档提供了一个现代而直观的应用程序接口。 IronPDF 是一个商业库,自带一个 免费试用版 和付费版本。

比较 iTextSharp 和 IronPDF 库

iTextSharp 和 IronPDF 库都提供了创建、编辑和处理 PDF 文档的各种特性和功能。 不过,与 iTextSharp 相比,IronPDF 有几个优势,使其成为用 C# 处理 PDF 文档的首选。

编辑 PDF 文件 iTextSharp 和 IronPDF

既然我们已经讨论了 iTextSharp 和 IronPDF 之间的区别,下面就让我们看看如何使用这两个库编辑 PDF 文件。 我们将举例说明如何使用 iTextSharp 和 IronPDF 在现有 PDF 文档中添加文本、表单字段和填写表格。

使用 iTextSharp 编辑 PDF 文件

先决条件

开始之前,您需要准备以下材料:

  1. 您的计算机上安装了 Visual Studio。
  2. C# 编程语言的基本知识。
  3. 在项目中安装 iTextSharp 库。

    iTextSharp 和 IronPDF 在编辑 PDF 方面的比较:图 1 - 在 C# 中使用 iTextSharp 创建 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#

在上述代码中,我们打开了一个名为 "existedfile.pdf "的现有 PDF 文件,并创建了一个名为 "editedfile.pdf "的新 PDF 文件。 我们在表单字段中填入数据,并在 PDF 文件中添加了一个新页面。

PdfStamper "类提供了更多编辑现有 PDF 文件的选项,如添加图像、创建注释和更改页面大小。

使用 IronPDF 编辑 PDF 文档

IronPDF 是一款功能强大的 PDF 库,适用于 C#,可对 PDF 文档进行编辑。 在本教程中,我们将介绍使用 IronPDF 编辑现有 PDF 文件所需的步骤。 我们将涉及多个方面,包括创建新的 PDF 文档、为现有 PDF 添加页面、为 PDF 添加内容以及在 PDF 中填写表格字段。 下面是一个 C# 示例代码,用于说明各个步骤。

iTextSharp 和 IronPDF 在编辑 PDF 方面的比较:图 4 - IronPDF

在我们开始之前,请确保您安装了以下设备:

  • Visual Studio IDE
  • IronPDF 库

步骤 1:创建新项目

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

iTextSharp 和 IronPDF 在编辑 PDF 方面的比较:图 6 - 使用 IronPDF 创建 PDF

第 4 步:为现有 PDF 文档添加新页面

要在现有文档中添加新页面,可以使用 PdfDocument 类的 AddPage 方法。 下面是一个在现有 PDF 文件中添加新页面的示例:

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 文档时,这一点尤为重要,因为在这种情况下,性能可能成为一个重要因素。

定价

与 iTextSharp 相比,IronPDF 的另一个优势在于定价。 虽然 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 的 特价 开发人员只需以购买两个许可证的价格购买全部五个产品,即可获得一整套功能强大的工具和库,从而简化应用程序开发流程。 如果你的 C# 项目需要一个功能强大且高效的 PDF 库,IronPDF 是一个不错的选择。

< 前一页
使用 Byte 数组创建 PDF C# iTextSharp(与 IronPDF相比)
下一步 >
什么是iText?(使用IronPDF的C#和Java PDF库替代方案)

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

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