在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
PDF(便携式文档格式)是一种广泛使用的文档格式,因其能够保留文档格式、安全性和可移植性而广受欢迎。
PDF 文件已成为世界上使用最广泛的文档格式之一,有多个库可用来用 C# 语言创建和操作 PDF。
了解如何使用 C# 与 IronPDF 和 iTextSharp 编辑 PDF 文件此外,还必须利用这些功能强大的库,使任务变得简单明了。
在本文中,我们将比较两个流行的 C# PDF 操作库:iTextSharp 和 IronPDF。 我们将讨论如何使用这两个库编辑 PDF 文件,然后探讨 IronPDF 与 iTextSharp 相比如何更胜一筹,尤其是在输出打印、性能和价格方面。
iTextSharp 和IronPDF 功能和试用信息C# 和 C++ 是帮助开发人员用 C# 高效处理 PDF 文件的工具。 这两个库都提供了创建、编辑和处理 PDF 文档所需的各种特性和功能。
iTextSharp DLL 是基于 Java 的 iText 库的 C# 移植版本。 它提供了一个简单易用的 API,用于创建和操作 PDF 文档。 iTextSharp 是一个开源库,可在 AGPL 许可证下使用。
IronPDF for .NET 是一个.NET 库,旨在使用 C# 创建、编辑和处理 PDF 文件。 它为处理 PDF 文档提供了一个现代而直观的应用程序接口。 IronPDF 是一个商业库,自带一个免费试用版和订阅选项更广泛的使用。
iTextSharp 和 IronPDF 库都提供了创建、编辑和处理 PDF 文档的各种特性和功能。 不过,与 iTextSharp 相比,IronPDF 有几个优势,使其成为用 C# 处理 PDF 文档的首选。
既然我们已经讨论了 iTextSharp 和 IronPDF 之间的区别,下面就让我们看看如何使用这两个库编辑 PDF 文件。 我们将举例说明如何使用 iTextSharp 和 IronPDF 在现有 PDF 文档中添加文本、表单字段和填写表格。
开始之前,您需要准备以下材料:
您的计算机上安装了 Visual Studio。
C# 编程语言的基本知识。
在项目中安装 iTextSharp 库。
要在项目中安装 iTextSharp 库,可以使用 NuGet 软件包管理器。 打开 Visual Studio 项目,右键单击解决方案资源管理器中的项目名称。 从上下文菜单中选择 "管理 NuGet 包"。 在 NuGet 软件包管理器中搜索 "iTextSharp "并安装最新版本的软件包。
要使用 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)
在上述代码中,我们创建了一个名为 "newfile.pdf "的新 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
在上述代码中,我们打开了一个名为 "existedfile.pdf "的现有 PDF 文件,并创建了一个名为 "editedfile.pdf "的新 PDF 文件。 我们在表单字段中填入数据,并在 PDF 文件中添加了一个新页面。
PdfStamper "类提供了更多编辑现有 PDF 文件的选项,如添加图像、创建注释和更改页面大小。
IronPDF 是一款功能强大的 PDF 库,适用于 C#,可对 PDF 文档进行编辑。 在本教程中,我们将介绍使用 IronPDF 编辑现有 PDF 文件所需的步骤。 我们将涉及多个方面,包括创建新的 PDF 文档、为现有 PDF 添加页面、为 PDF 添加内容以及在 PDF 中填写表格字段。 下面是一个 C# 示例代码,用于说明各个步骤。
在我们开始之前,请确保您安装了以下设备:
在 Visual Studio 中创建一个新的 C# 项目。 选择 "控制台应用程序 "项目类型。
通过 NuGet 包管理器将 IronPDF 库安装到项目中。
Install-Package IronPdf
要加载现有的 PDF 文档,可以使用 PdfDocument
类。 下面是加载现有 PDF 文档的代码示例:
using IronPdf;
var existingPdf = @"C:\path\to\existing\pdf\document.pdf";
var pdfDoc = PdfDocument.FromFile(existingPdf);
using IronPdf;
var existingPdf = @"C:\path\to\existing\pdf\document.pdf";
var pdfDoc = PdfDocument.FromFile(existingPdf);
Imports IronPdf
Private existingPdf = "C:\path\to\existing\pdf\document.pdf"
Private pdfDoc = PdfDocument.FromFile(existingPdf)
要在现有文档中添加新页面,可以使用 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
通过使用 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
iTextSharp 是一个流行的开放源代码库,它使开发人员能够用 C# 从 PDF 文档中创建、操作和提取数据。 它是一个文档齐全、使用广泛的库,已经存在了很长时间。然而,IronPDF 是一个更新、更现代的库,它提供了更多的功能和优点,是开发人员的更好选择。
IronPDF 超越 iTextSharp 的地方之一是它的输出功能。 IronPDF 为 HTML 到 PDF 的转换提供了卓越的支持,使开发人员能够毫不费力地将 HTML 页面转换为 PDF 文档。 这对于生成包含丰富媒体或交互式内容的报告或文档尤其有益。 此外,IronPDF 还能对页面布局和格式进行更精细的控制,从而更简单地创建与所需外观精确匹配的 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
以下代码利用 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
在性能方面,IronPDF 也是当之无愧的赢家。 它的设计比 iTextSharp 更快、更高效,允许开发人员以更少的系统资源更快地生成 PDF。 在处理大型或复杂的 PDF 文档时,这一点尤为重要,因为在这种情况下,性能可能成为一个重要因素。
与 iTextSharp 相比,IronPDF 的另一个优势在于定价。 虽然 iTextSharp 在大多数情况下都是免费使用的,但在某些情况下需要商业许可证,而且商业许可证可能相当昂贵。另一方面,IronPDF 提供了更实惠的定价模式,有一系列可供选择的方案来满足不同的需求和预算。
iTextSharp 和 IronPDF 的主要区别之一在于它们的许可和定价。
iTextSharp 采用 AGPL 许可,允许开源项目免费使用,但商业用途需要商业许可。 iTextSharp 的商业许可证分为不同等级,根据所需的功能和支持级别以及开发人员和部署服务器的数量定价。
另一方面,IronPDF 是一个商业库,提供免费试用版供开发人员在购买前进行评估。 IronPDF 提供灵活的许可选项,包括针对每个开发人员和每台服务器的许可,以及针对大型企业的企业许可。 IronPDF 的定价基于所需的开发人员数量和功能,多年许可证和批量许可证可享受折扣。
对于小型开源项目来说,iTextSharp 可能更具成本效益,但 IronPDF 灵活的许可选项和商业支持使其成为商业项目和大型组织更可行的选择。
总之,虽然 iTextSharp 和 IronPDF 都是能够用 C# 进行 PDF 操作的库,但 IronPDF 的功能更全面,效率更高。凭借其先进的功能、直观的 API 和用户友好的文档,IronPDF 为开发人员提供了卓越的体验。 其灵活的许可选项和具有成本效益的定价使其更适合商业项目和大型组织。
此外,IronPDF 还拥有更快的渲染时间、更高效的内存使用以及对大型 PDF 文档的优化处理等更好的技术性能。 使用 Iron Software 的IronPDF 关于许可的特殊定价选项通过购买多个产品和许可证,开发人员可以获得一整套功能强大的工具和库,从而简化应用程序开发流程。 如果你的 C# 项目需要一个功能强大且高效的 PDF 库,IronPDF 是一个不错的选择。