画像リストからPDFを作成する 質問する

画像リストからPDFを作成する 質問する

Python を使用して画像ファイルのリストから PDF を作成する実用的な方法はありますか?

Perlでは知っているそのモジュールこれを使えば、たった 3 行で PDF を作成できます。

use PDF::FromImage;
...
my $pdf = PDF::FromImage->new;
$pdf->load_images(@allPagesDir);
$pdf->write_file($bookName . '.pdf');

私はこれと非常に似たことをPythonでやりたいのですが、pyPDFモジュールですが、シンプルなものが欲しいです。

ベストアンサー1

これまで試した中で、複数の画像を PDF に変換する最良の方法は、PIL純粋に使用してみることです。非常にシンプルですが強力です。

from PIL import Image  # install by > python3 -m pip install --upgrade Pillow  # ref. https://pillow.readthedocs.io/en/latest/installation.html#basic-installation

images = [
    Image.open("/Users/apple/Desktop/" + f)
    for f in ["bbd.jpg", "bbd1.jpg", "bbd2.jpg"]
]

pdf_path = "/Users/apple/Desktop/bbd1.pdf"
    
images[0].save(
    pdf_path, "PDF" ,resolution=100.0, save_all=True, append_images=images[1:]
)

save_allを に設定しTrueappend_images追加したい画像のリストに設定するだけです。

に遭遇するかもしれませんAttributeError: 'JpegImageFile' object has no attribute 'encoderinfo'。解決策はここにあります複数の JPEG を複数ページの PDF として保存中にエラーが発生しました

注: PDF で引数が使用可能であることPILを確認するには、最新バージョンをインストールしてください。save_all

追伸

このエラーが発生した場合

RGBAモードを保存できません

適用するこの修正

png = Image.open('/path/to/your/file.png')
png.load()
background = Image.new("RGB", png.size, (255, 255, 255))
background.paste(png, mask=png.split()[3]) # 3 is the alpha channel

おすすめ記事