Pythonコードを使って画像をPDFに変換する

画像をPDFファイルに変換することは、画像コンテンツを保存、表示、共有する効率的な方法です。 スキャンした文書でも、撮影した写真でも、デジタル画像のコレクションでも、画像をPDFファイルに変換することで、整理や転送のプロセスが簡素化されます。 同時に、PDF文書は画質を保持し、ファイルサイズを縮小し、画像を表示する順序を最大化します。 この記事では、**Pythonコードを使って画像をPDFに変換する方法**を紹介します。

- **[Pythonで単一の画像をPDF文書に変換](#pythonで単一の画像をpdf文書に変換)**
- **[Pythonでフォルダ内の複数画像をPDFに変換](#pythonでフォルダ内の複数画像をpdfに変換)**

この記事で使用する方法には、[Spire.PDF for Python](https://www.e-iceblue.com/Introduce/pdf-for-python.html)が必要です。これは公式ウェブサイトからダウンロードするか、PyPIを使用してインストールできます： pip install Spire.PDF。

## Pythonで単一の画像をPDF文書に変換
PdfImage.LoadFromFile()メソッドを使用して画像を読み込み、画像と同じサイズのPDFページを作成し、そのページに画像を追加して、画像からPDF文書への変換を実現することができます。 以下に詳細な手順を示します：
- **PdfDocument** クラスのオブジェクトを作成します。
- **PdfDocument.PageSettings.SetMargins()** メソッドを使用して、ページの余白をゼロに設定します。
- **PdfImage.FromFile()** メソッドを使用して画像を読み込みます。
- **PdfImage.PhysicalDimension.Width** プロパティと **PdfImage.PhysicalDimension.Height** プロパティを使用して、画像の高さと幅を取得します。
- **PdfDocument.Pages.Add()** メソッドを使用して、PDF文書内に画像と同じサイズのページを作成します。
- **PdfPageBase.Canvas.DrawImage()** メソッドを使用して、ページに画像を描画します。
- **PdfDocument.SaveToFile()** メソッドを使用してPDF文書を保存します。

**コードの例**
```python
from spire.pdf.common import *
from spire.pdf import *

# PdfDocumentクラスのオブジェクトを作成する
pdf = PdfDocument()

# ドキュメントの余白をクリアする
pdf.PageSettings.SetMargins(0.0)

# 画像を読み込む
image = PdfImage.FromFile("Sample.jpg")

# 画像の高さと幅を取得する
width = image.PhysicalDimension.Width
height = image.PhysicalDimension.Height

# 画像と同じサイズのページを作成する
page = pdf.Pages.Add(SizeF(width, height))

# ページに画像を描画する
page.Canvas.DrawImage(image, 0.0, 0.0, width, height)

# PDFドキュメントを保存する
pdf.SaveToFile("output/画像をPDFに変換.pdf")
pdf.Close()
```

**生成されたPDFファイル**
![Pythonで単一の画像をPDF文書に変換](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/702f082f-7cad-c604-4903-e76471d1daeb.png)

## Pythonでフォルダ内の複数画像をPDFに変換
フォルダ内のすべての画像をPDF文書に変換するには、フォルダ内の各画像を繰り返し処理し、各画像をそれぞれ同じサイズのPDFページに追加する必要があります。 具体的な手順は以下の通りです：
- **PdfDocument** クラスのオブジェクトを作成します。
- **PdfDocument.PageSettings.SetMargins()** メソッドを使用して、ページの余白をゼロに設定します。
- 画像が保存されているフォルダを取得します。
- フォルダ内の各画像ファイルを繰り返し処理し、特定の画像の幅と高さを取得します。
- **PdfDocument.Pages.Add()** メソッドを使用して、画像と同じ幅と高さの新しいページをPDF文書に追加します。
- **PdfPageBase.Canvas.DrawImage()** メソッドを使用して、ページに画像を描画します。
- **PdfDocument.SaveToFile()** メソッドを使用して文書を保存します。

**コードの例**
```python
from spire.pdf.common import *
from spire.pdf import *
import os

# PdfDocumentクラスのオブジェクトを作成する
doc = PdfDocument()

# ページの余白を0に設定する
doc.PageSettings.SetMargins(0.0)

# 画像が保存されているフォルダのパスを取得する
path = '画像/'
files = os.listdir(path)

# フォルダ内のファイルを走査する
for root, dirs, files in os.walk(path):
    for file in files:

        # 特定の画像を読み込む
        image = PdfImage.FromFile(os.path.join(root, file))
    
        # 画像の幅と高さを取得する
        width = image.PhysicalDimension.Width
        height = image.PhysicalDimension.Height

        # 画像と同じサイズのページを追加する
        page = doc.Pages.Add(SizeF(width, height))

        # ページの (0, 0) の位置に画像を描画する
        page.Canvas.DrawImage(image, 0.0, 0.0, width, height)
      
# ファイルに保存する
doc.SaveToFile('output/複数の画像をPDFに変換.pdf')
doc.Dispose()
```

**生成されたPDFファイル**
![Pythonでフォルダ内の複数画像をPDFに変換](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/31635724-cbc6-4b09-6bd8-196caa407ce4.png)

---
### 無料ライセンスの申請
このAPIは、すべてのユーザーに無料のライセンスを提供する。制限を解除する必要がある場合は、[無料ライセンスを申請](https://www.e-iceblue.com/TemLicense.html)してください。

---

この記事では、Pythonプログラムを通してSpire.PDF for Pythonを使用し、単一または複数の画像をPDF文書に変換し、画像の内容のより良い整理、共有、表示を実現する方法について説明します。 このAPIを使用する過程で何らかの問題が発生した場合は、[Spire.PDFフォーラム](https://www.e-iceblue.com/forum/spire-pdf-f7.html)を通じて技術サポートを受けることができます。