比较

PdfPig 与 IronPDF:技术比较指南

PDFPig vs IronPDF:PDF 阅读库与 .NET 中的完整 PDF 解决方案

.NET开发人员在处理PDF文件时,通常会寻找能处理复杂任务(如读取、提取和生成PDF文档)的库。 在可供选择的工具中,pdfpig 已成为一款主要专注于阅读和提取 PDF 内容的专业工具。 本比较将对 pdfpig 和IronPDF进行研究,分析它们的架构差异、功能完整性以及对不同应用需求的适用性。

什么是 PdfPig? PdfPig 是一个专门为 C# 设计的开源 PDF 阅读和提取库。 该库允许开发人员精确访问 PDF 内容,提供从 PDF 文件中提取文本、图像、表单数据和元数据的工具。 pdfpig 采用 Apache 2.0 许可协议,既是开源软件,也是商业友好型软件,可以作为专有应用程序的一部分自由修改和发布。 虽然 pdfpig 在提取功能方面表现出色,但其范围从根本上仅限于解析现有文档。 该库不能从 HTML、URL 或程序中创建 PDF--它只专注于阅读已有的内容。 pdfpig 的主要特点包括 - **仅限阅读**:专为 PDF 解析和提取而设计 - **开源**:Apache 2.0 许可,无许可费用 - **使用位置数据提取文本**:准确提取带有位置数据的文本,并细致处理字符字体 - **字级分析**:为布局分析提供单词边界框 - **Pure .NET**:无本地依赖性,可在任何运行 .NET 的地方工作 - **基于 1 的页面索引**:使用基于 1 的索引访问页面

什么是 IronPDF? [IronPDF](https://ironpdf.com/) 是一个全面的 .NET 库,提供完整的 PDF 生命周期管理。 [ChromePdfRenderer](https://ironpdf.com/object-reference/api/IronPdf.ChromePdfRenderer.html) 类使用基于 Chromium 的现代引擎进行 HTML 到 PDF 的转换,而 `PdfDocument` 类则提供了广泛的操作和提取功能。 与 pdfpig 的只读功能不同,IronPDF 同时支持 PDF 生成和提取,使其成为各种 PDF 相关任务的灵活选择。 该库可处理 HTML 和 URL 创建、文本提取、文档操作、合并、水印、安全功能和数字签名,所有这些都在一个库中完成。 ## 架构比较 pdfpig 和IronPDF的根本区别在于它们的适用范围:纯阅读与完整的 PDF 生命周期管理。 |方面|PdfPig|IronPDF| |--------|--------|---------| |**主要关注点**|阅读/提取|完整的 PDF 生命周期| |**PDF 创建**|非常有限|综合性| |**HTML 到 PDF**| 不支持 |完整的 Chromium 引擎| |**URL 转 PDF**| 不支持 |全面支持| |**文本提取**| 出色的 | 出色的 | |**图像提取**| 是 | 是 | |**元数据访问**| 是 | 是 | |**PDF 操作**| 不支持 |合并、拆分、旋转| |**水印**。| 不支持 |全面支持| |**安全/加密**| 不支持 |全面支持| |**表格填写**| 不支持 |全面支持| |**数字签名**| 不支持 |全面支持| |**页面索引**|1 基于|基于 0| |**许可**|Apache 2.0(免费)|商业翻译| |**支持**|社区|专业| 对于仅需要 PDF 阅读和文本提取的应用程序,pdfpig 可提供出色的功能。 对于需要 PDF 生成、文档操作或任何创建功能的应用程序,IronPDF 可提供完整的解决方案。 ## 文本提取对比 文本提取展示了两个库在这一常见工作流程中的优势,但在 API 设计方面存在明显差异。 **PdfPig 文本提取方法:** ```csharp // NuGet: Install-Package PdfPig using UglyToad.PdfPig; using System; using System.Text; class Program { static void Main() { using (var document = PdfDocument.Open("input.pdf")) { var text = new StringBuilder(); foreach (var page in document.GetPages()) { text.AppendLine(page.Text); } Console.WriteLine(text.ToString()); } } } ``` **IronPDF 文本提取方法:** ```csharp // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { var pdf = PdfDocument.FromFile("input.pdf"); string text = pdf.ExtractAllText(); Console.WriteLine(text); } } ``` PdfPig 要求使用 `using` 语句进行正确处理,通过 `GetPages()` 对页面进行迭代,并使用 `StringBuilder` 手动聚合文本。<代码>page.TextHello World

This is a PDF from HTML

"); pdf.SaveAs("output.pdf"); } } ``` PdfPig 无法从 HTML 创建 PDF,因为它不支持此功能。 该库专门用于读取和解析现有的 PDF 文档,而不是生成新文档。 IronPDF 的 `ChromePdfRenderer` 使用现代 Chromium 引擎转换 HTML 内容,完全支持 CSS3 和 JavaScript,可从网页内容生成高保真 PDF 输出。 有关 HTML 到IronPDF转换模式的详细指导,请参阅 [HTML 到 PDF 教程](https://ironpdf.com/how-to/html-file-to-pdf/)。 ## PDF 元数据访问 阅读 PDF 元数据可以看到不同 API 模式的类似功能。 **PdfPig 元数据阅读:** ```csharp // NuGet: Install-Package PdfPig using UglyToad.PdfPig; using System; class Program { static void Main() { using (var document = PdfDocument.Open("input.pdf")) { var info = document.Information; Console.WriteLine($"Title: {info.Title}"); Console.WriteLine($"Author: {info.Author}"); Console.WriteLine($"Subject: {info.Subject}"); Console.WriteLine($"Creator: {info.Creator}"); Console.WriteLine($"Producer: {info.Producer}"); Console.WriteLine($"Number of Pages: {document.NumberOfPages}"); } } } ``` **IronPDF 元数据阅读:** ```csharp // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { var pdf = PdfDocument.FromFile("input.pdf"); var info = pdf.MetaData; Console.WriteLine($"Title: {info.Title}"); Console.WriteLine($"Author: {info.Author}"); Console.WriteLine($"Subject: {info.Subject}"); Console.WriteLine($"Creator: {info.Creator}"); Console.WriteLine($"Producer: {info.Producer}"); Console.WriteLine($"Number of Pages: {pdf.PageCount}"); } } ``` 这两个库都可以访问标准的 PDF 元数据属性。PdfPig使用 `document.Information` 而IronPDF使用 `pdf.MetaData` 。 在 pdfpig 中通过<代码>document.NumberOfPagespdf.PageCountPdfDocument.Open(path)PdfDocument.FromFile(路径)PdfDocument.Open(字节)PdfDocument.FromBinaryData(字节)PdfDocument.Open(stream)PdfDocument.FromStream(流)使用(var doc = ...)var pdf = ...document.NumberOfPagespdf.PageCountdocument.GetPages()pdf.Pagesdocument.GetPage(1)pdf.Pages[0]page.Textpdf.Pages[i].Textpage.GetWords()pdf.ExtractTextFromPage(i)document.Information.Titlepdf.MetaData.Titledocument.Information.Authorpdf.MetaData.Authordocument.Information.Subjectpdf.MetaData.Subjectdocument.Information.Creatorpdf.MetaData.Creatordocument.Information.Producerpdf.MetaData.Producerrenderer.RenderHtmlAsPdf(html)renderer.RenderUrlAsPdf(url)PdfDocument.Merge(pdfs)pdf.CopyPages(start, end)pdf.ApplyWatermark(html)pdf.SecuritySettings.UserPasswordpdf.Sign(证书)pdf.Form.GetFieldByName(name).Value安装-打包 IronPdf入门文档