PyPDF2:PDFの操作のための究極のPythonライブラリ
Published on
PyPDF2は、PythonでPDFを操作するための強力で、無料でオープンソースのライブラリです。分割、結合、トリミング、変換、暗号化、復号化など、PDFファイルのさまざまな操作を簡単に行うことができる多機能なツールです。PyPDF2は、PDFバージョン1.4から1.7をサポートし、Python標準ライブラリ以外の外部依存関係は必要ありません。これにより、PDFを扱うPython開発者にとってアクセスしやすく便利な選択肢となっています。
このライブラリは頑強であるだけでなく、セキュアでもあります。パスワードの追加やテキストやメタデータの取得など、PyPDF2ではPDFの整合性と機密性を保証するためのさまざまな機能が提供されています。この記事では、PyPDF2の機能について詳細な説明、定義、および例を提供し、このライブラリを最大限に活用するための支援をします。
ノーコードでPython Pandasのデータフレームからデータ可視化を素早く作成したいですか?
PyGWalkerは、可視化を伴う探索的データ分析のためのPythonライブラリです。PyGWalker (opens in a new tab)は、pandasデータフレーム(およびpolarsデータフレーム)をTableauスタイルのユーザーインターフェースに変換し、Jupyter Notebookのデータ解析とデータ可視化のワークフローを簡素化できます。
PyPDF2とは?
PyPDF2は、PDFファイルのページを分割、結合、トリミング、変換することができる純粋なPythonライブラリです。また、カスタムデータ、表示オプション、パスワードをPDFファイルに追加することもできます。また、PyPDF2はPDFからテキストやメタデータを抽出することも可能であり、PDFの操作のための包括的なツールです。
このライブラリはオープンソースであり、誰でも無料で使用、修正、配布することができます。これにより、PythonでPDFを扱う必要のある開発者の間で広く使用されています。また、PyPDF2はプラットフォームに依存せず、Windows、Mac、Linuxなどどの環境でも使用することができます。
PyPDF2のインストールと使用方法
PyPDF2のインストールは簡単で、Pythonのパッケージインストーラであるpipを使用して行うことができます。PyPDF2はPython 3.6以上が必要です。次のコマンドでpipを使用してPyPDF2をインストールできます。
pip install PyPDF2
Anacondaという、データサイエンスや機械学習のための人気のあるPythonディストリビューションを使用してPyPDF2をインストールすることもできます。以下のコマンドを使用します。
pip install git+https://github.com/py-pdf/PyPDF2.git
インストールが完了したら、以下のようにPyPDF2ライブラリをPythonスクリプトにインポートすることができます。
import PyPDF2
使用しているPyPDF2のバージョンを確認するには、__version__
属性を使用できます。
PyPDF2.__version__
PyPDF2を使用したPDFの操作
PyPDF2をインストールしたら、PDFを操作することができます。一般的な操作をいくつか見ていきましょう。
PDFの読み込み
PDFを読み込むには、まずファイルを読み込みバイナリモード('rb')で開き、PdfFileReader
オブジェクトを作成する必要があります。
inputFile = "path_to_your_pdf_file.pdf"
pdf = open(inputFile, "rb")
pdf_reader = PyPDF2.PdfFileReader(pdf)
numPages
属性を使用して、PDFのページ数を確認できます。
totalPages = pdf_reader.numPages
print(totalPages)
PDFからテキストを抽出する
PDFからテキストを抽出するには、PageObject
クラスのextractText()
メソッドを使用します。まず、PDF内の特定のページを表すPageObject
を取得する必要があります。
page = pdf_reader.getPage(0) ## 最初のページを取得
そして、このページからテキストを抽出します。
print(page.extractText())
これにより、PDFの最初のページのテキスト内容がコンソールに出力されます。extractText()
はPDFの複雑さやテキストのエンコーディングに依存することがあり、常に完全に機能するわけではありません。
PDFのページの分割
PyPDF2の強力な機能の1つは、PDFのページを分割することができることです。これは、PdfFileReader
オブジェクトのgetPage()
メソッドを使用してページ番号でページを取得することで行うことができます。以下に、PDFの最初のページを分割する方法の例を示します。
## PDFを開く
with open('path_to_your_pdf_file.pdf', 'rb') as file:
reader = PyPDF2.PdfFileReader(file)
writer = PyPDF2.PdfFileWriter()
## 最初のページを取得
first_page = reader.getPage(0)
## ページをPdfFileWriterオブジェクトに追加
writer.addPage(first_page)
## ページを新しいファイルに書き込む
with open('output.pdf', 'wb') as output_pdf:
writer.write(output_pdf)
この例では、output.pdf
は元のPDFの最初のページだけが含まれる新しいPDFファイルです。
PDFの結合
PyPDF2を使用すると、複数のPDFを1つに結合することもできます。これはPdfFileMerger
クラスを使用して行うことができます。以下に例を示します。
merger = PyPDF2.PdfFileMerger()
## 結合するPDFのリスト
pdfs = ['file1.pdf', 'file2.pdf', 'file3.pdf']
for pdf in pdfs:
merger.append(pdf)
merger.write("merged.pdf")
merger.close()
この例では、merged.pdf
はfile1.pdf
、file2.pdf
、file3.pdf
のすべてのページを順番に含む新しいPDFファイルです。
PDFにパスワードを追加する
PyPDF2は、PDFファイルにパスワードを追加するための簡単な方法を提供します。これは、PdfFileWriter
オブジェクトのencrypt()
メソッドを使用して行えます。以下に例を示します。
## PDFを開く
このマークダウンファイルの日本語の翻訳を提供してください。次のようなコードの翻訳は避けてください:import BlogHeader from '../../../components/blog-header'; import BeehiivEmbed from '../../../components/BeehiivEmbed'; import JSONldScript from '../../../components/jsonld-script'; JSONldScriptのコンテンツを翻訳してください。もしfrontmatterがある場合は、言語パラメータをマッチするjaに翻訳してください。以下はファイルです:with open('path_to_your_pdf_file.pdf', 'rb') as file:
reader = PyPDF2.PdfFileReader(file)
writer = PyPDF2.PdfFileWriter()
## オリジナルのPDFからすべてのページを新しいPDFにコピーする
for pageNum in range(reader.numPages):
page = reader.getPage(pageNum)
writer.addPage(page)
## 新しいPDFを暗号化する
writer.encrypt('your_password')
## 暗号化されたPDFを新しいファイルに書き込む
with open('encrypted.pdf', 'wb') as output_pdf:
writer.write(output_pdf)
この例では、encrypted.pdf
が元のPDFのコピーであり、パスワード「your_password」で暗号化された新しいPDFファイルになります。
PDFを画像に変換する
PyPDF2はPDFを直接画像に変換する機能を持っていませんが、PDF2Imageなどの他のライブラリと組み合わせて使用することができます。以下に例を示します:
from pdf2image import convert_from_path
## PDFを画像のリストに変換する
images = convert_from_path('path_to_your_pdf_file.pdf')
## 画像をファイルに保存する
for i, image in enumerate(images):
image.save(f'output{i}.png', 'PNG')
この例では、PDFの各ページがPNG画像に変換され、別々のファイルに保存されます。
FAQ
PyPDF2はどのバージョンのPDFをサポートしていますか?
PyPDF2はPDFバージョン1.4から1.7をサポートしています。これにより、PyPDF2はPythonでのPDF操作の汎用的な選択肢となります。
PyPDF2には依存関係はありますか?
いいえ、PyPDF2にはPython標準ライブラリ以外の依存関係はありません。これにより、Pythonがインストールされたシステムで簡単にインストールして使用することができます。
PyPDF2を実行するために必要なPythonのバージョンは何ですか?
PyPDF2を実行するにはPython 3.6以上が必要です。これにより、最新のPythonの機能とライブラリのパフォーマンスとセキュリティが向上します。