散在する画像のコレクションを単一の検索可能なPDFに変換することは、レポートツール、請求書ジェネレーター、アーカイブシステムで頻繁に求められる要件です。Aspose.PDF for Python via .NETは、Python アプリケーションでこの変換を高速かつ信頼性の高いものにする強力な SDK です。このガイドでは、SDK のインストール、Python Imaging Library を使用した画像の読み込み、ページ単位での PDF の構築、圧縮設定の調整、そして最終的な保存までを、明確なコード例とともに順を追って説明します。

開始する前に: 前提条件とインストール

このチュートリアルを実行するには、次のものが必要です:

  • 開発マシンに Python 3.8 以上がインストールされていること。
  • お好みの IDE またはエディタ (VS Code、PyCharm など)。
  • SDK パッケージをダウンロードするためのインターネット接続。

pip を使用して Aspose.PDF SDK と Pillow ライブラリ(事実上の Python Imaging Library)をインストールします:

pip install aspose-pdf pillow

公式リリースページから SDK を手動でダウンロードすることもできます: Aspose.PDF for Python via .NET Download。インストール後、スクリプトで必要な名前空間をインポートします。

環境の準備ができたので、実装に取り掛かりましょう。

Pythonで画像からPDFを生成する: ステップバイステップのウォークスルー

ステップ 1: ソース画像を読み込む

まず、Pillow を使用して各画像ファイルを開き、リストに保持します。これにより、PDF ビルダー用の画像データが準備されます。

from PIL import Image
import os

image_folder = "input_images"
image_paths = [os.path.join(image_folder, f) for f in os.listdir(image_folder)
               if f.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif'))]

images = [Image.open(p) for p in image_paths]

ステップ 2: 新しい PDF ドキュメントを作成する

ページを保持する Aspose.PDF Document オブジェクトをインスタンス化します。

import aspose.pdf as ap

pdf_doc = ap.Document()

Document クラスの詳細については、API リファレンスをご覧ください。

ステップ 3: 各画像を別々のページとして追加

ロードされた画像をループ処理し、ページを作成して画像を埋め込みます。SDKは画像を自動的にスケーリングしてページサイズに合わせます。

for img in images:
    page = pdf_doc.pages.add()
    # Convert Pillow image to a byte stream compatible with Aspose.PDF
    with io.BytesIO() as img_stream:
        img.save(img_stream, format='PNG')
        img_stream.seek(0)
        page.resources.images.add(ap.Image(img_stream))
        # Fit the image to the page dimensions
        page.page_info.width = img.width
        page.page_info.height = img.height

ステップ 4: 圧縮オプションの設定

画像圧縮レベルを調整して、品質を犠牲にせずに最終的な PDF のサイズを削減します。

# Set JPEG compression for all images (if using JPEG format)
for img_res in pdf_doc.resources.images:
    img_res.compression = ap.ImageCompression.JPEG
    img_res.jpeg_quality = 80  # Quality range: 0‑100

ステップ 5: PDF ファイルを保存

最後に、組み立てたドキュメントをディスクに書き込みます。

output_path = "output/result.pdf"
pdf_doc.save(output_path)
print(f"PDF generated successfully at {output_path}")

これらの手順に従うことで、Python で画像から PDF を生成するという完全に機能するワークフローが得られます。

Python で画像コレクションから PDF を作成 - 完全なコード例

次のスクリプトは、すべてのパーツを 1 つの実行可能なプログラムにまとめます。

import os
import io
from PIL import Image
import aspose.pdf as ap

# -------------------- Configuration --------------------
image_folder = "input_images"          # Folder containing source images
output_pdf = "output/result.pdf"       # Destination PDF file
jpeg_quality = 80                      # Compression quality (0‑100)

# -------------------- Load Images --------------------
image_paths = [os.path.join(image_folder, f) for f in os.listdir(image_folder)
               if f.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif'))]

images = [Image.open(p) for p in image_paths]

# -------------------- Create PDF Document --------------------
pdf_doc = ap.Document()

for img in images:
    page = pdf_doc.pages.add()
    with io.BytesIO() as img_stream:
        img.save(img_stream, format='PNG')
        img_stream.seek(0)
        pdf_image = page.resources.images.add(ap.Image(img_stream))
        page.page_info.width = img.width
        page.page_info.height = img.height
        # Apply compression if the original is JPEG
        if img.format == 'JPEG':
            pdf_image.compression = ap.ImageCompression.JPEG
            pdf_image.jpeg_quality = jpeg_quality

# -------------------- Save PDF --------------------
pdf_doc.save(output_pdf)
print(f"PDF generated successfully at {output_pdf}")

注: このコード例はコア機能を示しています。プロジェクトで使用する前に、ファイルパス(input_imagesoutput/result.pdf)を更新し、すべての必須依存関係が正しくインストールされていることを確認し、開発環境で徹底的にテストしてください。問題が発生した場合は、公式ドキュメントをご参照いただくか、サポートチームにお問い合わせください。

高度な PDF 生成設定: オプションと構成

基本的なワークフローを超えて、Aspose.PDF は出力を微調整するためのいくつかのプロパティを提供します。

画像圧縮レベル

品質とファイルサイズのトレードオフを制御します。

pdf_image.compression = ap.ImageCompression.JPEG
pdf_image.jpeg_quality = 70   # Lower value = smaller file, lower quality

ページサイズと余白

均一なレイアウトが必要な場合は、カスタムページサイズを設定してください。

page.page_info.width = 595   # A4 width in points
page.page_info.height = 842  # A4 height in points
page.page_info.margin = ap.MarginInfo(10, 10, 10, 10)

解像度 (DPI)

高い DPI は、より鮮明な画像を提供しますが、PDF のサイズが大きくなります。

pdf_doc.page_info.dpi = 300

構成可能なプロパティの完全なリストについては、API リファレンスをご参照ください。

結論

今、Pythonで画像からPDFを生成するための完全なプログラム的ソリューションが手に入ります。 Aspose.PDF for Python via .NET を使用します。 SDKは画像の読み込み、ページ作成、圧縮、保存を数行のコードで処理し、低レベルのPDF操作ではなくビジネスロジックに集中できるようにします。 本番環境に移行する際は、適切なライセンスを取得することを忘れないでください。詳細はpricing pageにあり、評価用にtemporary licenseで開始できます。 コーディングを楽しんで、画像コレクションを洗練されたPDFに変換するシンプルさを体験してください!

よくある質問

  • PythonでAspose.PDFを使用して画像からPDFを生成するにはどうすればよいですか?
    Aspose.PDF SDKを使用してDocumentを作成し、Pillowで読み込んだ各画像に対してページを追加し、必要に応じて圧縮を設定し、save()を呼び出してPDFを書き出します。完全な例は上記に含まれています。

  • PDF生成でサポートされている画像フォーマットは何ですか?
    SDKはPNGJPGJPEGBMPGIF、およびTIFF を直接受け付けます。Pillow はサポートされていないフォーマットをこれらのいずれかに変換してから PDF に追加することもできます。

  • 商用利用にライセンスは必要ですか?
    はい。製品の本番展開のために、一時ライセンスページから一時評価ライセンスを取得し、価格ページでフルライセンスを購入してください。

  • PDFページサイズと解像度を調整できますか?
    もちろんです。page.page_info.widthpage.page_info.height、および pdf_doc.page_info.dpi を使用して、寸法と DPI を制御できます。構成 / オプションセクションに示されています。

読み続き