チュートリアル
簡単にライブラリーを使用するためのチュートリアルコレクション
PDFファイルを受け取ったりダウンロードしたりした際、一部のページが横向きや上下逆など、正しくない向きで表示されることがあります。そのような場合、PDFページを回転させることで、読みやすく適切な表示に修正できます。
本記事では、Spire.PDF for Python を使用して、PDFページをプログラムから回転する方法を紹介します。
この機能を使用するには、Spire.PDF for Python と plum-dispatch v1.7.4 が必要です。Windows 環境では、以下の pip コマンドで簡単にインストールできます。
pip install Spire.PDF
または、Spire.PDF for Pythonのダウンロードページから直接ダウンロードして、プロジェクトに追加することもできます。
PDFページの回転は 90 度単位で行われ、0/90/180/270 度を指定できます。以下は、PDF内の特定ページを回転する手順です。
Pythonコード:PDF内の特定ページを回転
from spire.pdf.common import *
from spire.pdf import *
# PdfDocument オブジェクトを作成します
pdf = PdfDocument()
# PDFファイルを読み込みます
pdf.LoadFromFile("Sample.pdf")
# 1ページ目を取得します
page = doc.Pages.get_Item(0)
# 現在の回転角度を取得します
rotation = int(page.Rotation.value)
# 元の角度を基準に、時計回りに180度回転します
rotation += int(PdfPageRotateAngle.RotateAngle180.value)
if rotation >= 4:
rotation -= 4
# PdfPageRotateAngle は 0~3 の循環する列挙型(0/90/180/270度)のため、
# 値が範囲を超えた場合は回り込み処理を行います
page.Rotation = PdfPageRotateAngle(rotation)
# 結果を保存します
pdf.SaveToFile("RotatePDFPage.pdf")
pdf.Close()
以下は、処理後のPDFファイルのプレビューです。

Spire.PDF for Python を使用すると、PDFファイル内のすべてのページをループ処理し、一括で回転させることもできます。手順は以下のとおりです。
Pythonコード:PDF内のすべてのページを回転
from spire.pdf.common import *
from spire.pdf import *
# PdfDocument オブジェクトを作成します
pdf = PdfDocument()
# PDFファイルを読み込みます
pdf.LoadFromFile("Sample.pdf")
# すべてのページをループ処理します
for i in range(pdf.Pages.Count):
page = pdf.Pages.get_Item(i)
# 現在の回転角度を取得します
rotation = int(page.Rotation.value)
# 元の角度を基準に、時計回りに180度回転します
rotation += int(PdfPageRotateAngle.RotateAngle180.value)
rotation += int(PdfPageRotateAngle.RotateAngle180.value)
if rotation >= 4:
rotation -= 4
page.Rotation = PdfPageRotateAngle(rotation)
# 結果を保存します
pdf.SaveToFile("RotatePDF.pdf")
pdf.Close()
生成されたドキュメントから評価版のメッセージを削除したい場合や、機能制限を解除したい場合は、30日間の試用ライセンス を申請できます。

PDF ドキュメントには、まれに空白ページが含まれていることがあります。こうしたページは閲覧体験を損なうだけでなく、ファイルサイズを無駄に大きくしたり、印刷時に紙の無駄を生む原因にもなります。
PDF の品質とプロフェッショナリズムを高めるためには、空白ページを検出して削除することが重要です。
この記事では、Python と Spire.PDF for Python、さらに Pillow を利用して、見た目にも正確に空白ページを検出・削除する方法を解説します。
見た目は空白でも実際には不可視要素(透明オブジェクトや白文字など)が含まれているケースにも対応します。
記事の構成
このチュートリアルでは、以下の2つの Python ライブラリを使用します:
インストールは次のコマンドで簡単に行えます:
pip install Spire.PDF Pillow
Spire.PDF には、ページが完全に空であるかどうかを確認できる PdfPageBase.IsBlank() メソッドが用意されています。 しかし、ページによっては一見空白に見えても、白文字のテキストや透過画像、透かしなどが含まれている場合があります。 そのため、このメソッドだけでは正確に空白ページを検出できないケースがあります。
より精度を高めるために、この記事では次の2段階の検出方法を採用します:
注意点: PDF を画像に変換する際、有効なライセンスを適用していないと評価版の透かしが画像に追加されます。 これが検出結果に影響する可能性があるため、テスト時は一時ライセンスの取得をおすすめします。
一時ライセンスは E-iceblue セールスチーム へお問い合わせください。
また、小規模な処理であれば、透かしなしで基本機能を利用できる Free Spire.PDF for Python を使うこともできます。
以下の手順で空白ページの検出と削除を実装します。
空白画像を判定する関数 is_blank_image() を定義する Pillow を使用して、ページを画像に変換した結果が真っ白(全ピクセルが白)かどうかを判定します。
PDFドキュメントを読み込む PdfDocument.LoadFromFile() メソッドを使って PDF ファイルを読み込みます。
ページを順に確認する 各ページをループ処理で確認し、次の2つの条件をチェックします:
処理結果のPDFを保存する PdfDocument.SaveToFile() メソッドを使って、空白ページを削除した新しいPDFを保存します。
サンプルコード:
import io
from spire.pdf import PdfDocument
from PIL import Image
# ライセンスキーの適用
License.SetLicenseKey("License-Key")
# 画像が空白かどうかを確認する関数
def is_blank_image(image):
img = image.convert("RGB")
white_pixel = (255, 255, 255)
return all(pixel == white_pixel for pixel in img.getdata())
# PDFを読み込む
pdf = PdfDocument()
pdf.LoadFromFile("Sample1111.pdf")
# 削除時のインデックスずれを防ぐため、逆順でページを確認
for i in range(pdf.Pages.Count - 1, -1, -1):
page = pdf.Pages[i]
if page.IsBlank():
pdf.Pages.RemoveAt(i)
else:
with pdf.SaveAsImage(i) as image_data:
image_bytes = image_data.ToArray()
pil_image = Image.open(io.BytesIO(image_bytes))
if is_blank_image(pil_image):
pdf.Pages.RemoveAt(i)
# 結果を保存
pdf.SaveToFile("RemoveBlankPages.pdf")
pdf.Close()
以下は、空白ページ削除後のプレビューです:

A:完全に何もないページのほか、白文字や透過オブジェクト、透かしなど見えない要素を含むページも空白ページとみなされます。 このソリューションでは、2段階の検出で両方のケースに対応します。
A:はい、ライセンスなしでも動作します。ただし、PDFを画像に変換する際に評価版の透かしが追加されるため、空白ページ検出の精度に影響する可能性があります。 テスト用途の場合は、無料の一時ライセンスを申請するのがおすすめです。
A:Spire.PDF for Python は Python 3.7以降 に対応しています。画像解析を行う場合は、Pillow も併せてインストールしてください。
A:可能です。pdf.Pages.RemoveAt(i) の行をコメントアウトし、print() や logging で空白ページのリストを出力するだけでOKです。
PDF から不要な空白ページを削除することは、可読性の向上やファイルサイズの削減、そしてよりプロフェッショナルな仕上がりに欠かせない工程です。 Spire.PDF for Python と Pillow を組み合わせることで、完全に空のページだけでなく、見た目は空白でも内部に不可視要素を含むページも正確に検出できます。
レポート生成、スキャン文書の整理、印刷前の最終調整など、あらゆるシーンで役立つ実用的な Python ソリューションです。