pypdf は、PDF ファイルのページを分割、結合、切り抜き、変換できる、無料のオープンソースの純粋な Python PDF ライブラリです。カスタム データ、表示オプション、パスワードを PDF ファイルに追加することもできます。 pypdf は PDF からテキストとメタデータを取得することもできます。
pypdf を使用して PDF を操作する CLI アプリケーションについては、「pdfly」を参照してください。
pip を使用して pypdf をインストールします。
pip install pypdf
AES 暗号化または復号化で pypdf を使用するには、追加の依存関係をインストールします。
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 ==========