PythonでPDFページのサイズ、向き、回転角を取得する方法

ドキュメント管理や自動化の分野では、**PDFドキュメントのページサイズ、向き、回転角**などの基本的な特性を理解することが、文書の一貫した処理とレイアウトの忠実性を確保するために重要です。これらの属性は、コンテンツの再利用やアーカイブから、PDFをWeb環境や他のデジタルワークフローにシームレスに統合するまで、さまざまなアプリケーションで重要な役割を果たします。Pythonを活用することで、開発者はこれらのプロパティを効率的に抽出し、回転したページの自動修正などのタスクを容易に行うことができます。

この記事では、Pythonコードを使用して**PDFドキュメントのページのサイズ、向き、および回転角を取得する方法**を紹介します。

- **[PythonでPDFページのサイズを取得](#pythonでpdfページのサイズを取得)**
- **[PythonでPDFページの向きを取得](#pythonでpdfページの向きを取得)**
- **[PythonでPDFページの回転角を取得・設定](#pythonでpdfページの回転角を取得設定)**

この記事で使用する方法は、[Spire.PDF for Python](https://jp.e-iceblue.com/download/spire-pdf-for-python.html)を必要とします。PyPIでインストール: `pip install Spire.PDF`

[無料ライセンスの申請](https://www.e-iceblue.com/TemLicense.html)

## PythonでPDFページのサイズを取得

`PdfPageBase.Size.Width`と`PdfPageBase.Size.Height`を使用して、ポイント単位でPDFページの幅と高さを取得できます。その後、`PdfUnitConvertor`クラスを使用して、幅と高さをミリメートルなどの他の単位に変換できます。詳細な手順は以下の通りです：
- 必要なモジュールをインポートします。
- `PdfDocument`オブジェクトを作成し、`PdfDocument.LoadFromFile()`メソッドを使用してPDFドキュメントをロードします。
- `PdfDocument.Pages.get_Item()`メソッドを使用してドキュメント内のページを取得します。
- `PdfPageBase.Size.Width`と`PdfPageBase.Size.Height`プロパティを通じてページの幅と高さをポイントで取得します。
- `PdfUnitConvertor`オブジェクトを作成します。
- `PdfUnitConvertor.Convert()`メソッドを使用して幅と高さをミリメートルに変換します。
- 結果を出力します。
- リソースを解放します。

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

# PdfDocumentのインスタンスを作成
pdf = PdfDocument()

# PDFドキュメントを読み込む
pdf.LoadFromFile("Sample.pdf")

# 最初のページを取得
page = pdf.Pages.get_Item(0)

# ページの幅と高さをポイント単位で取得
width = page.Size.Width
height = page.Size.Height

# PdfUnitConvertorのインスタンスを作成
converter = PdfUnitConvertor()

# 幅と高さをポイントからミリメートルに変換
mmWidth = converter.ConvertUnits(width, PdfGraphicsUnit.Point, PdfGraphicsUnit.Millimeter)
mmHeight = converter.ConvertUnits(height, PdfGraphicsUnit.Point, PdfGraphicsUnit.Millimeter)

# 幅と高さを出力
print("幅: " + str(round(mmWidth, 1)) + " mm")
print("高さ: " + str(round(mmHeight, 1)) + " mm")

# リソースを解放
pdf.Close()
```

結果
![PythonでPDFページのサイズを取得](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/a5c81bd0-007c-7394-1b1d-5b8f6cf63aac.png)

## PythonでPDFページの向きを取得

ページの高さと幅を比較して、PDFページが横向き（ランドスケープ）か縦向き（ポートレート）かを判断できます。手順は以下の通りです：
- 必要なモジュールをインポートします。
- `PdfDocument`オブジェクトを作成し、`PdfDocument.LoadFromFile()`メソッドを使用してPDFドキュメントをロードします。
- `PdfDocument.Pages.get_Item()`メソッドを使用してドキュメント内のページを取得します。
- `PdfPageBase.Size.Width`と`PdfPageBase.Size.Height`プロパティを通じてページの幅と高さを取得します。
- 高さと幅を比較して、ページがランドスケープかポートレートかを判断し、結果を出力します。
- リソースを解放します。

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

# PdfDocumentのインスタンスを作成
pdf = PdfDocument()

# PDFドキュメントを読み込む
pdf.LoadFromFile("Sample.pdf")

# 最初のページを取得
page = pdf.Pages.get_Item(0)

# ページの幅と高さを取得
width = page.Size.Width
height = page.Size.Height

# ページの向きを確認して結果を出力
if width > height:
    print("横向き")
else:
    print("縦向き")

# リソースを解放
pdf.Close()
```

結果
![PythonでPDFページの向きを取得](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/b864d524-70b9-4b85-920b-ac37e839009c.png)

## PythonでPDFページの回転角を取得・設定

PDFページの回転角は、`PdfPageBase.Rotation`プロパティを使用して直接取得できます。次に、その値を使って文字列を作り、それを表示することもできるし、回転角度を変えることもできる。詳細な手順は以下の通りです：
- 必要なモジュールをインポートします。
- `PdfDocument`オブジェクトを作成し、`PdfDocument.LoadFromFile()`メソッドを使用してPDFドキュメントをロードします。
- `PdfDocument.Pages.get_Item()`メソッドを使用してドキュメント内のページを取得します。
- `PdfPageBase.Rotation`プロパティを通じて回転角を取得します。
- 回転角を出力するか、他の操作を行います。
- リソースを解放します。

**コード例**
```python
import re

from spire.pdf import *

# PdfDocumentのインスタンスを作成
pdf = PdfDocument()

# PDFドキュメントを読み込む
pdf.LoadFromFile("Sample1.pdf")

# 最初のページを取得
page = pdf.Pages.get_Item(0)

# ページの回転角度を取得
rotationAngle = page.Rotation

# 回転角度を出力
print("回転角度: " + re.search(r"\d+", rotationAngle.name).group() + " 度")

# 回転角度を変更
page.Rotation = PdfPageRotateAngle.RotateAngle0

# ドキュメントを保存
pdf.SaveToFile("output/ChangeRotationAngle.pdf")
pdf.Close()
```

結果
![PythonでPDFページの回転角を取得・設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/d0030811-50dd-4c00-51e9-1d0486dbfe11.png)

この記事では、Pythonを使用してPDFドキュメントのページのサイズ、向き、および回転角を取得する方法を示しました。

さらにPDFドキュメント処理スキルを学びたい方は、[Spire.PDF for Pythonのチュートリアル](https://www.e-iceblue.com/Tutorials/Python/Spire.PDF-for-Python/Program-Guide/Spire.PDF-for-Python-Program-Guide-Content.html)をご覧ください。