ホームページ >バックエンド開発 >Python チュートリアル >PythonでPDFを操作するいくつかの方法をまとめます
Python チュートリアル 今日のコラムでは、Python を使用して PDF を操作するいくつかの方法をまとめます。
01
まえがき
みなさん、こんにちは。Python で PDF を操作する事例が書きました。 PDF バッチ マージ を経験する前に、このケースの本来の目的は、便利なスクリプトを提供することだけであり、原理についてはあまり説明されていません。PDF 用の非常に実用的なモジュールが含まれています。処理、PyPDF2。この記事では、主に
#02
基本操作
##PyPDF2 モジュールをインポートするコードは通常次のとおりです:from PyPDF2 import PdfFileReader, PdfFileWriter复制代码ここでは 2 つのメソッドがインポートされます:
MERGE
1 つの仕事は、5 つの請求書 PDF を 10 ページに結合することです。ここで読み手と書き手はどのように協力すべきでしょうか?
ロジックは次のとおりです:独立したステップではありません しかし、リーダーが PDF を読み取った後、ページごとに読み取られると、PDF のすべてのページが循環されます。作家に渡ります。最後に、すべての読み取り作業が完了するまで待ってから出力します。
コードを見るとアイデアがより明確になります:from PyPDF2 import PdfFileReader, PdfFileWriter path = r'C:\Users\xxxxxx' pdf_writer = PdfFileWriter() for i in range(1, 6): pdf_reader = PdfFileReader(path + '/INV{}.pdf'.format(i)) for page in range(pdf_reader.getNumPages()): pdf_writer.addPage(pdf_reader.getPage(page)) with open(path + r'\合并PDF\merge.pdf', 'wb') as out: pdf_writer.write(out)复制代码すべてのコンテンツは同じライターに渡され、最終的に一緒に出力される必要があるため、ライターの初期化はループ本体の外側。ループ本体の内側にある場合は、
PDF にアクセスするたびに新しいライターが生成され、各リーダーがライターに引き継がれるようになります。コンテンツは 繰り返し上書きされます ため、マージ要件は達成できません!ループ本体の先頭のコード:
for i in range(1, 6): pdf_reader = PdfFileReader(path + '/INV{}.pdf'.format(i))复制代码
目的は、ループするたびに新しい PDF ファイルは、後続の操作のためにリーダーに渡されます。実はこの書き方はあまりお勧めできませんが、各 PDF の命名はたまたま非常に規則的であるため、ループする番号を直接指定することもできます。より良い方法は、
glob モジュールを使用することです。コード内の import glob
for file in glob.glob(path + '/*.pdf'):
pdf_reader = PdfFileReader(path)复制代码
を使用すると、リーダー内のページ数を取得できます。 range はリーダーのすべてのページを横断できます。
pdf_writer.addPage(pdf_reader.getPage(page))は、現在のページをライターに渡すことができます。 最後に、
withを使用して新しい PDF を作成し、ライターの pdf_writer.write(out) メソッドを通じて出力します。 04
Splitマージ操作におけるリーダーとライターの協力を理解していれば、分割は簡単に理解できます。
INV1.pdfを 2 つの個別の PDF ドキュメントに分割する例を取り上げます。最初にロジックを見てみましょう:
読者が PDF ドキュメントを読み取りますコードは非常に単純です:
from PyPDF2 import PdfFileReader, PdfFileWriter path = r'C:\Users\xxx' pdf_reader = PdfFileReader(path + '\INV1.pdf') for page in range(pdf_reader.getNumPages()): # 遍历到每一页挨个生成写入器 pdf_writer = PdfFileWriter() pdf_writer.addPage(pdf_reader.getPage(page)) # 写入器被添加一页后立即输出产生pdf with open(path + '\INV1-{}.pdf'.format(page + 1), 'wb') as out: pdf_writer.write(out)复制代码
05
ウォーターマーク今回の作業は、
INV1.pdf透かしとして使用する画像を Word に挿入し、適切な位置に調整して PDF ファイルとして保存します。その後、コードを作成できます。追加で
copy モジュールを使用する必要があります。詳細な説明については、下の図を参照してください:
以上がPythonでPDFを操作するいくつかの方法をまとめますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。