pypdf 是一个免费开源的纯 python PDF 库,能够分割、合并、裁剪和转换 PDF 文件的页面。它还可以向 PDF 文件添加自定义数据、查看选项和密码。 pypdf 还可以从 PDF 中检索文本和元数据。
请参阅 pdfly 了解使用 pypdf 与 PDF 交互的 CLI 应用程序。
使用 pip 安装 pypdf:
pip install pypdf
要将 pypdf 与 AES 加密或解密结合使用,请安装额外的依赖项:
pip install pypdf[crypto]
注意:与以前的版本相比,
pypdf
3.1.0 及更高版本包含重大改进。请参阅迁移指南以获取更多信息。
from pypdf import PdfReader
reader = PdfReader ( "example.pdf" )
number_of_pages = len ( reader . pages )
page = reader . pages [ 0 ]
text = page . extract_text ()
pypdf 可以做更多的事情,例如拆分、合并、读取和创建注释、解密和加密等等。查看文档以获取其他使用示例!
有关问题和解答,请访问 StackOverflow(用 pypdf 标记)。
维护 pypdf 是一项协作工作。您可以通过编写文档、帮助缩小问题范围和提交代码来支持该项目。有关更多信息,请参阅 CONTRIBUTING.md 文件。
pypdf 用户的体验涵盖了从想要让生活更轻松的初学者到在 PDF 出现之前开发软件的专家的整个范围。您可以通过回答 StackOverflow 上的问题、帮助讨论以及询问报告 MCVE 问题的用户(代码 + 示例 PDF!)来为 pypdf 社区做出贡献。
一个好的错误单包括一个 MCVE - 一个最小的完整的可验证示例。对于 pypdf,这意味着您必须上传导致错误发生的 PDF 以及您使用所有输出执行的代码。使用print(pypdf.__version__)
告诉我们您正在使用哪个版本。
欢迎所有代码贡献,但较小的代码更有机会被及时纳入。为新功能添加单元测试或为已修复的错误添加测试用例有助于我们确保拉取请求 (PR) 正常。
pypdf 包含一个可以使用pytest
执行的测试套件:
$ pytest
===================== test session starts =====================
platform linux -- Python 3.6.15, pytest-7.0.1, pluggy-1.0.0
rootdir: /home/moose/GitHub/Martin/pypdf
plugins: cov-3.0.0
collected 233 items
tests/test_basic_features.py .. [ 0%]
tests/test_constants.py . [ 1%]
tests/test_filters.py .................x..... [ 11%]
tests/test_generic.py ................................. [ 25%]
............. [ 30%]
tests/test_javascript.py .. [ 31%]
tests/test_merger.py . [ 32%]
tests/test_page.py ......................... [ 42%]
tests/test_pagerange.py ................ [ 49%]
tests/test_papersizes.py .................. [ 57%]
tests/test_reader.py .................................. [ 72%]
............... [ 78%]
tests/test_utils.py .................... [ 87%]
tests/test_workflows.py .......... [ 91%]
tests/test_writer.py ................. [ 98%]
tests/test_xmp.py ... [100%]
========== 232 passed, 1 xfailed, 1 warning in 4.52s ==========