【python】TIFFファイルをPDFに変換する方法

2024/12/23に公開

執筆日

2024/12/20

やること

TIFF形式のファイルを扱う機会がありましたが、TIFFを扱う環境が整っておらず、中身だけ確認したかったため、PythonでPDFに変換する方法をまとめます。TIFFには高品質な画像保存の利点があるため、本来はそのままの拡張子で使用することをお勧めします。

TIFFとは?

TIFF(Tagged Image File Format)は、主に高品質な画像を保存するための柔軟なファイル形式です。Adobe Photoshopなどの画像編集ソフトウェアとも互換性があります。利用シーンとしては、印刷や出版業界、スキャナ、ファクシミリ、アーカイブ目的、医療用画像などが挙げられます。

単一ページのTIFFをPDFに変換する方法

以下のPythonコードは、単一ページのTIFFファイルをPDFに変換する方法を示しています。

from PIL import Image

input_tiff = "<tifのファイルパス>"
output_pdf = "<outputのファイルパス(pdf)>"

def tiff_to_pdf(input_tiff_path, output_pdf_path):
    try:
        with Image.open(input_tiff_path) as img:
            img = img.convert("RGB") if img.mode in ("RGBA", "P") else img
            img.save(output_pdf_path, "PDF")
            print(f"TIFFファイルをPDFに変換しました: {output_pdf_path}")
    except Exception as e:
        print(f"エラーが発生しました: {e}")

if __name__ == "__main__":
    tiff_to_pdf(input_tiff, output_pdf)

複数ページのTIFFをPDFに変換する方法

次のPythonコードは、複数ページのTIFFファイルをPDFに変換する方法を示しています。

from PIL import Image

input_tiff = "<tifのファイルパス>"
output_pdf = "<outputのファイルパス(pdf)>"

def multi_page_tiff_to_pdf(input_tiff_path, output_pdf_path):
    try:
        with Image.open(input_tiff_path) as img:
            pages = []
            for i in range(img.n_frames):
                img.seek(i)
                pages.append(img.convert("RGB"))
            pages[0].save(output_pdf_path, save_all=True, append_images=pages[1:], format="PDF")
        print(f"TIFFをPDFに変換しました: {output_pdf_path}")
    except Exception as e:
        print(f"エラーが発生しました: {e}")

if __name__ == "__main__":
    multi_page_tiff_to_pdf(input_tiff, output_pdf)

まとめ

TIFFファイルは高品質な画像を保存するのにとても便利ですが、環境が整っていないと扱いにくいこともあります。そんなときは、Pythonを使ってPDFに変換してみるのもありかなと。TIFFの特性を活かしつつ、必要に応じてPDFに変換して使い分けると便利です。

ヘッドウォータース

Discussion