Pythonで利用できるPDF操作ライブラリ[ReportLab]で[drawImage]メソッドでPNG画像をPDFファイルに挿入する場合に[TypeError: expected str, bytes or os.PathLike object, not PngImageFile]エラーが表示される場合の対処法を備忘録的に投稿します。
drawImageメソッドで画像挿入
ReportLabライブラリの[canvas]オブジェクトにある[drawImage]メソッドを利用して画像ファイルをPDFファイルに挿入することができます。
expected … not PngImageFile エラーの対処法
[drawImage]メソッドを実行する際に「TypeError: expected str, bytes or os.PathLike object, not PngImageFile」エラーが表示される場合があります。
内容からパラメータで利用する画像ファイルのオブジェクトが文字列やバイト列、パス指定で作成している場合にエラーになるようです。
例えば、drawImageメソッドで利用するImageパラメータを、下のコードのように[open]メソッドなどで作成しているような場合
img = Image.open('C:\\Datas\\Python\\imginpdf\\images\\target_image.png')
ReportLabの[ImageReader]を利用してImageオブジェクトを作成するとエラーを改善することができます。
from reportlab.lib.utils import ImageReader
img = ImageReader('C:\\Datas\\Python\\imginpdf\\images\\target_image.png')
まとめ
Pythonで利用できる[ReportLab]ライブラリを利用して透過色を設定したPNG画像をPDFファイルに挿入することができます。
[drawImage]メソッドを実行した場合に「TypeError: expected str, bytes or os.PathLike object, not PngImageFile」エラーが表示される場合には、メソッドのパラメータに利用するImageオブジェクトを作成する場合に、パス指定などを使わずに[ImageReader]を利用してImageオブジェクトを作成するとエラーを改善することができます。
スポンサーリンク
最後までご覧いただき、ありがとうございます。