pypdf — это бесплатная PDF-библиотека на чистом Python с открытым исходным кодом, способная разделять, объединять, обрезать и преобразовывать страницы PDF-файлов. Он также может добавлять пользовательские данные, параметры просмотра и пароли к файлам PDF. pypdf также может извлекать текст и метаданные из PDF-файлов.
См. pdfly для приложения CLI, которое использует pypdf для взаимодействия с PDF-файлами.
Установите pypdf с помощью pip:
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. Вы можете внести свой вклад в сообщество pypdf, отвечая на вопросы на StackOverflow, помогая в обсуждениях и задавая вопросы пользователям, которые сообщают о проблемах в MCVE (код + пример PDF!).
Хорошая заявка об ошибке включает 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 ==========