Aspose.PDF FOSS for Python 功能
Aspose.PDF FOSS for Python 功能
Aspose.PDF FOSS for Python 是一个纯-Python库,用于创建、打开、修改和保存 PDF 文档。此页面概述了主要功能领域以及充当入口点的类。每个领域在其单独的开发者指南页面中都有深入的覆盖。
文档和页面管理
Document 是所有操作的根对象。使用无参构造来创建一个新的空文档,或调用 load_from() 从路径、字节或流读取已有文档。document.pages 暴露可变的 PageCollection,Page.add_text 在页面上放置定位文本。
from aspose_pdf import Document
document = Document()
page = document.pages.add()
page.add_text("Hello from Aspose.PDF FOSS!", x=72, y=720, font_size=18)
document.save("hello.pdf")文本提取与搜索
PdfExtractor 绑定到文档并逐页提取文本。bind_pdf() 打开源,extract_text() 执行提取,get_text() 返回累计结果。
from aspose_pdf import PdfExtractor
extractor = PdfExtractor()
extractor.bind_pdf("hello.pdf")
extractor.extract_text()
print(extractor.get_text())
extractor.close()对于定位的、按片段的搜索和替换,TextFragmentAbsorber 暴露匹配的 TextFragment 对象,text_search_options 控制大小写敏感性和正则表达式匹配。
页面渲染为图像
Document.save_page_as_image 将单页直接渲染为 PNG 或 TIFF 文件,支持可配置的 DPI。若需要更底层的访问,Page.render 返回一个包含原始像素数据的 RasterizedPage,通过 get_pixel() 和 pixels 进行访问。
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
document.save_page_as_image(0, "page-1.png", dpi=150)表单和交互字段
AcroForm 字段通过 Document.form 管理,后者是一个 Form 门面。Form.add_text_field()(以及复选框、单选框、列表和组合框等对应项)创建一个绑定到页面和小部件矩形的新字段,返回一个 Field。Form.fields 列出文档中当前的所有字段。
from aspose_pdf import Document
document = Document()
page = document.pages.add()
document.form.add_text_field("customer_name", page, (72, 700, 300, 720))
for field in document.form.fields:
print(field.name, field.field_type)
document.save("form.pdf")安全、加密与签名
Document.encrypt 使用用户密码(打开文档所需)和所有者密码(修改权限所需)来保护文档;decrypt() 和 change_passwords() 在已打开的文档上管理保护。is_encrypted 报告当前状态。
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
document.encrypt(user_password="secret", owner_password="owner-secret")
document.save("encrypted.pdf")数字签名验证由 PdfSignature.validate 处理,它返回一个描述信任和吊销状态的 ValidationResult,而 SigningUtils 提供证书和 PKCS#7/CAdES 签名助手。
PDF/A 与 PDF/UA 合规性
Document.validate_pdfa 进行一次启发式的 PDF/A 合规检查并返回一个 PdfAValidationResult;convert_to_pdfa() 试图将文档修复至该级别。validate_pdfua() 和 auto_tag() 为 PDF/UA 提供等效的可访问性检查和自动结构树标记。
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
result = document.validate_pdfa("1b")
if not result.is_valid:
document.convert_to_pdfa("1b")
document.auto_tag()
document.save("compliant.pdf")提示与最佳实践
- 直接修改由
document.pages、page.annotations或document.form返回的对象——对页面或字段的单独副本所做的编辑在调用save()时不会被反映。 PageCollection在此 Python 绑定中采用零基索引(document.pages[0]为第一页)。- 在对不受信任的输入调用
load_from()时,先捕获InvalidPasswordException和PdfParseException,再处理更广泛的AsposePdfException,这样你可以对错误密码和损坏文件作出不同的响应。 - 在对大量编辑的文档执行
save()之前,先调用document.optimize()或compress_streams(),以删除未使用的资源并缩小文件大小。 - 在处理来自不受信任来源的 PDF 时,将受限的
PdfLoadLimits传递给load_from(),以在解析过程中限制内存和对象计数。
常见问题
| 问题 | 原因 | 修复 |
|---|---|---|
save() 生成了一个未更改编辑的文件 | 对页面、注释或字段副本进行了编辑,而不是对从 document.pages、annotations 或 form 获得的对象进行编辑 | 直接修改这些集合返回的对象 |
InvalidPasswordException 在 load_from() | 文档受密码保护,但未提供密码或提供了错误的密码 | 输入正确的密码:document.load_from(path, password="...") |
validate_pdfa() 在 convert_to_pdfa() 之后仍报告字体错误 | 在提供的 font_lookup_directory 中未找到匹配的字体文件 | 在转换之前,将缺失的字体添加到查找目录,或使用 FontRepository 注册它 |
| 渲染的图像为空 | 传递给 save_page_as_image() 或 render() 的页面索引错误 | pages 使用零基索引——请确认索引,并检查 PdfExtractor 是否真的返回该页的文本 |
使用 Form.add_text_field() 添加的字段未出现在页面上 | 小部件矩形超出了页面的 media_box | 确认矩形坐标位于 Page.media_box 之内 |
FAQ
Aspose.PDF 针对 Python 的 FOSS 是否依赖商业 PDF 引擎?
不。它是从头开始、纯-Python 的 PDF 引擎,遵循 MIT 许可证发布。它唯一的运行时依赖是 cryptography 和 asn1crypto,用于加密和签名验证。
我可以从头创建 PDF,而不是打开已有的文件吗?
可以。Document() 在不传入参数时会创建一个空的内存文档;在保存之前调用 document.pages.add() 以添加页面。
我可以将页面渲染为哪些光栅格式?
Page.render 和 Document.save_page_as_image 生成 PNG 或 TIFF 光栅输出;返回的 RasterizedPage 还通过 get_pixel() 和 pixels 属性公开原始像素数据。
我应该捕获哪个异常来处理特定于包的错误?
捕获 AsposePdfException。每个特定于包的错误——包括解析(PdfParseException)、密码和加密(PdfSecurityException,InvalidPasswordException)以及验证(PdfValidationException)失败——都源自它。
接下来我该去哪里?
《入门》涵盖了安装、授权以及第一个工作示例。此开发者指南随后继续讨论文档管理主题,例如表单、嵌入式文件附件、字体发现以及大纲/书签创建。
API Reference 摘要
| 类/方法 | 描述 |
|---|---|
Document | 根对象 — 创建、加载、保存和管理 PDF |
Document.pages | 文档的可变 PageCollection |
Document.load_from / Document.save | 从路径、字节或流读取或写入 |
Document.encrypt / Document.decrypt | 密码保护或移除保护 |
Document.validate_pdfa / Document.convert_to_pdfa | 启发式 PDF/A 合规性检查和转换 |
Document.validate_pdfua() / Document.auto_tag | PDF/UA 可访问性检查和结构自动标记 |
Page.add_text | 向页面添加定位文本 |
Page.render | 将页面渲染为 RasterizedPage |
PdfExtractor | 提取页面文本和嵌入的附件 |
PdfFileEditor | 跨文件合并、拆分、插入和删除页面 |
Form / Field | AcroForm 容器和单个表单字段 |
PdfSignature / SigningUtils | 数字签名验证和创建 |
AsposePdfException | 每个包特定异常的基类 |