single.php

ReportLabのdrawImageメソッドで[expected … not PngImageFile]エラーが表示される場合の対処法

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オブジェクトを作成するとエラーを改善することができます。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です