pypdf
pypdf 是一个免费开源的纯 Python PDF 库,能够分割、合并、裁剪和转换 PDF 文件的页面。它还可以向 PDF 文件添加自定义数据、查看选项和密码。pypdf 还可以从 PDF 中提取文本和元数据。
请查看 pdfly,这是一个使用 pypdf 与 PDF 交互的命令行应用程序。
安装
使用 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 ==========