Pythonで利用可能な「pdfrw」と「reportlab」を使って保存されている既存のPDFファイルに画像を挿入する手順を備忘録的に投稿しておきます。
pdfrwのインストール
既存のPDFファイルを開いて取り扱う外部モジュールとして「pdfrw」が必要になります。Python 3がインストールされている場合、pipコマンドでインストールすることができます。
pdfrwについての詳細は公式ページをご覧ください。
reportlabのインストール
PDFファイルを取り扱う外部モジュールとして「reportlab」が必要になります。Python 3がインストールされている場合、pipコマンドでインストールすることができます。
reportlabについての詳細は公式ページをご覧ください。
既存のPDFファイルに画像を挿入する手順
VSCodeを使って、PythonでPDFファイルに画像を挿入するには次の手順で行います。
1. VSCodeを起動し[ターミナル]画面から次のコマンドを入力してpdfrwをインストールします。
pip install pdfrw
2. 続けて[ターミナル]画面から次のコマンドを入力してreportlabをインストールします。
pip install reportlab
3. プロジェクト用のフォルダーを内に[images]、[output]と[pdfs]の3つのフォルダーを作成して、[images]内にPDFに挿入する画像を保存します。
4. [pdfs]フォルダーに、画像を挿入するPDFファイルを保存します。
今回はMicrosoft Wordのテンプレートで作成した見積書をPDF形式で保存したファイルを利用しました。
5.[insertpdf.py]ファイルを作成して次のコードを追加します。
from pdfrw import PdfReader
from pdfrw.buildxobj import pagexobj
from pdfrw.toreportlab import makerl
from reportlab.pdfgen import canvas
from PIL import Image
cvs = canvas.Canvas('C:\Datas\Python\imginpdf\output\sample.pdf')
pdf = PdfReader('C:\Datas\Python\imginpdf\pdfs\見積書.pdf', decompress=False).pages
page = pagexobj(pdf[0])
cvs.doForm(makerl(cvs, page))
img = Image.open('C:\Datas\Python\imginpdf\images\stamp2.png')
cvs.drawInlineImage(img, 450, 580, 70, 70)
cvs.showPage()
cvs.save()
4. VSCodeの[ターミナル]画面で次のコマンドを実行します。
python insertpdf.py
5.[output]フォルダーに[sample.pdf]が追加されます。
6.[sample.pdf]ファイルには画像が挿入されています。
まとめ
Pythonで利用できるPDF関係の外部モジュール[pdfrw]と[reportlab]を利用することPythonで作成したプログラムに簡単に既存のPDFファイルに画像ファイルを挿入して出力する機能を追加することができます。
見積書などの書式で作成されたPDFファイルに、ハンコ画像などを手軽に挿入するプログラムが作成できます。
スポンサーリンク
最後までご覧いただき、ありがとうございます。