Skip to main content

一个能够拆分、合并、裁剪和转换 PDF 文件的纯 Python PDF 库

项目描述

PyPI 版本 Python 支持 GitHub 上次提交 编解码器

PyPDF2

PyPDF2 是一个免费的开源纯 python PDF 库,能够拆分、 合并裁剪和转换 PDF 文件的页面。它还可以 为 PDF 文件添加自定义数据、查看选项和密码。PyPDF2 也可以 从 PDF中检索文本元数据。

安装

您可以通过 pip 安装 PyPDF2:

pip install PyPDF2

如果您计划使用 PyPDF2 加密或解密使用 AES 的 PDF,您将需要安装一些额外的依赖项。使用常规安装支持使用 RC4 加密。

pip install PyPDF2[crypto]

用法

from PyPDF2 import PdfReader

reader = PdfReader("example.pdf")
number_of_pages = len(reader.pages)
page = reader.pages[0]
text = page.extract_text()

PyPDF2 可以做更多的事情,例如拆分、合并、读取和创建注释、解密和加密等等。

有关更多使用示例,请参阅文档!

在 StackOverflow上提出并回答了很多问题 。

贡献

维护 PyPDF2 是一项协作工作。您可以通过编写文档、帮助缩小问题范围和添加代码来支持 PyPDF2。

问答

PyPDF2 用户的体验涵盖了从希望让生活更轻松的初学者到在 PDF 出现之前开发软件的专家的整个范围。您可以通过回答StackOverflow上的问题、帮助讨论以及询问报告MCVE问题的用户(代码 + 示例 PDF!)为 PyPDF2 社区做出贡献。

问题

一个好的错误单包括一个 MCVE - 一个最小的完整可验证示例。对于 PyPDF2,这意味着您必须上传导致错误发生的 PDF 以及您正在执行的所有输出代码。用于 print(PyPDF2.__version__)告诉我们您使用的是哪个版本。

代码

欢迎所有代码贡献,但较小的代码有更好的机会被及时包含在内。为新功能添加单元测试或为您已修复的错误添加测试用例有助于我们确保拉取请求 (PR) 正常。

PyPDF2 包括一个可以执行的测试套件pytest

$ pytest
===================== test session starts =====================
platform linux -- Python 3.6.15, pytest-7.0.1, pluggy-1.0.0
rootdir: /home/moose/Github/Martin/PyPDF2
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 ==========