Aspose.PDF FOSS for .NET 是一个免费、MIT 许可证的 .NET 库,用于读取、创建和操作 PDF 文档。该库在宽松的开源许可证下发布,消除了企业级 PDF 功能的传统障碍——库中的每个功能都无需购买商业许可证即可使用。
Aspose.PDF FOSS for .NET 是什么?
该库面向 .NET 8 及更高版本。它已发布到 NuGet,包 ID 为 Aspose.Pdf.Foss,可以通过一条命令将其添加到任何 .NET 8+ 项目中:
dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha
主要命名空间是 Aspose.Pdf,相关命名空间包括 Aspose.Pdf.Text、Aspose.Pdf.Forms 和 Aspose.Pdf.Facades。该库公开了 805 个公共 API 类,支持 7,488 条已记录的声明以及直接从测试套件中提取的 100 段代码片段。
核心功能
API 覆盖 PDF 文档的完整生命周期:
- 文档创建和加载 —
Document.Create()生成一个空白文档;Document.Open(data)从字节数组或流加载现有 PDF。 - 页面和内容访问 —
Pages集合提供基于 1 的索引访问单个页面,每个页面都公开注释、操作符和内容流。 - 文本提取 —
TextFragmentAbsorber访问页面并收集每个文本片段,支持可选的搜索短语过滤和正则表达式。 - 交互操作 —
PdfAction.CreateUri、PdfAction.CreateGoTo、PdfAction.CreateJavaScript和PdfAction.CreateLaunch覆盖标准 PDF 操作类型。 - 注释 —
AnnotationCollection.AddLinkAnnotation将带有关联操作的链接注释附加到页面上的任意矩形区域。 - 表单 —
Aspose.Pdf.Forms命名空间和Aspose.Pdf.Facades提供对 AcroForm 字段、外观格式以及字段级 JavaScript 扩展的访问。
打开文档并添加链接
以下示例演示了往返模式:创建一个新的 PDF 文档,在首页添加 URI 动作链接注释,将其保存到流中,然后重新加载以验证注释是否仍然存在。
using var doc = Document.Create();
doc.Pages.Add();
var page = doc.Pages[1];
var action = PdfAction.CreateUri("https://aspose.com");
page.Annotations.AddLinkAnnotation(new Rectangle(50, 700, 200, 720), action);
using var ms = new MemoryStream();
doc.Save(ms);
ms.Position = 0;
using var doc2 = Document.Open(ms.ToArray());
var annot = (LinkAnnotation)doc2.Pages[1].Annotations[1];
Console.WriteLine(annot.Uri); // https://aspose.com
Document.Open 静态方法接受 byte[] 或流。doc.Pages[1] 通过基于 1 的索引访问第一页——这与整个库使用的索引约定相同。保存到 MemoryStream 后,文档可以重新加载,所有注释都将被保留。
在页面上搜索文本
TextFragmentAbsorber 提供对任意页面内容流的关键字搜索。向构造函数传入搜索短语以限制结果,或使用无参数重载来收集所有片段:
using var doc = Document.Open("path/to/document.pdf");
var absorber = new TextFragmentAbsorber("Hello");
absorber.Visit(doc.Pages[1]);
foreach (var fragment in absorber.TextFragments)
{
Console.WriteLine($"Found: {fragment.Text}");
}
结果集合中的每个 TextFragment 都公开了包括 Text、FontSize 和位置信息在内的属性,使得在提取的片段之上构建搜索、突出显示或编辑工作流变得直观简便。
MIT 许可证和开放开发
所有源代码均发布在 GitHub 上,并在 MIT 许可证下分发。没有评估水印、使用限制,也没有需要管理的单独许可证文件。在 FOSS 构建中,Document.IsLicensed 属性始终返回 true。
该软件包当前版本为 0.1.0-alpha,表明仍在积极开发中。API 表面已经相当庞大——805 个类,7,488 条声明——且 alpha 标识表明在 1.0 版发布之前,API 签名可能会发生变化。