PDF文書を扱っていると、元のPDF文書が私たちの読書習慣に合わない、あるいは異なる表示デバイスに適応する必要がある、といった状況に遭遇することがあります。この時、異なるアプリケーションシナリオのニーズを満たすために、適時にPDF文書のページサイズを調整する必要があります。
この記事では、PythonでPDFのページサイズを変更する2つの方法を紹介します:
Python PDF API -インストール
PDFのページサイズを設定または変更するには、Spire.PDF for Pythonライブラリを使用する必要があります。以下のpipでインストールできます:
pip install Spire.PDF
または、製品パッケージをダウンロードしてローカルパスからインストールすることもできます。
PythonでPDFのページサイズを調整する手順
Spire.PDF for Pythonライブラリは、元のPDF文書の内容を新しいPDF文書内の指定されたサイズのページにコピーすることにより、PDFページのサイズを変更する方法を提供します。主な手順は以下の通りです:
- 元のPDF文書を読み込み、新しいPDF文書を作成します;
- 元のPDF文書の各ページをループします;
-
PdfDocument.Pages.Add()
メ ソ ッ ド を通 じ て、 指定 し たサ イ ズのページ を新 し い PDF 文書内に追加; - 元の PDF 文書内のページに基づいてテ ンプ レー ト を作成;
-
PdfTemplate.Draw()
メ ソ ッ ド を使っ て、 テ ンプ レー ト を新 し い PDF 文書のページに描 き ます; - 新しい PDF 文書を保存します。
Spire.PDF for PythonはA1, A2, A3, A4, B1, B2, B3, B4などの標準ページサイズをサポートしています。また、カスタムページサイズもサポートしています。以下は参考のための2つのサンプルコードです。
PythonでPDFのページサイズを標準の用紙サイズに変更する
from spire.pdf.common import *
from spire.pdf import *
# 元のPDF文書を読み込む
originalPdf = PdfDocument()
originalPdf.LoadFromFile("input.pdf")
# 新しいPDF文書を作成する
newPdf = PdfDocument()
# 元のPDFのページを繰り返し処理する
for i in range(originalPdf.Pages.Count):
page = originalPdf.Pages.get_Item(i)
# 新しいPDFにA4サイズのページを追加する
newPage = newPdf.Pages.Add(PdfPageSize.A4(), PdfMargins(0.0))
# PdfTextLayoutインスタンスの作成
layout = PdfTextLayout()
# テキストレイアウトを1ページに設定し、ページサイズに合わせてコンテンツが拡大縮小されるようにする
layout.Layout = PdfLayoutType.OnePage
# 元のPDFのページに基づいてテンプレートを作成する
template = page.CreateTemplate()
# 新しいPDFのページにテンプレートを描く
template.Draw(newPage, PointF.Empty(), layout)
# PDF文書を保存する
newPdf.SaveToFile("ChangeToA4Size.pdf")
newPdf.Close()
PythonでPDFのページサイズをカスタム用紙サイズに変更する
from spire.pdf.common import *
from spire.pdf import *
# 元のPDF文書を読み込む
originalPdf = PdfDocument()
originalPdf.LoadFromFile("报告.pdf")
# 新しいPDF文書を作成する
newPdf = PdfDocument()
# PdfUnitConvertor のインスタンスを作成します
unitCvtr = PdfUnitConvertor()
# カスタムサイズをミリメートルからポイントに変換する
width = unitCvtr.ConvertUnits(180, PdfGraphicsUnit.Millimeter, PdfGraphicsUnit.Point)
height = unitCvtr.ConvertUnits(225, PdfGraphicsUnit.Millimeter, PdfGraphicsUnit.Point)
# カスタムサイズから新しいSizeFインスタンスを作成する
size = SizeF(width, height)
# 元のPDFのページを繰り返し処理する
for i in range(originalPdf.Pages.Count):
page = originalPdf.Pages.get_Item(i)
# カスタムサイズ(180*225mm)のページを新しいPDFに追加します
newPage = newPdf.Pages.Add(size, PdfMargins(0.0))
# PdfTextLayoutインスタンスの作成
layout = PdfTextLayout()
# テキストレイアウトを1ページに設定し、ページサイズに合わせてコンテンツが拡大縮小されるようにする
layout.Layout = PdfLayoutType.OnePage
# 元のPDFのページに基づいてテンプレートを作成する
template = page.CreateTemplate()
# 新しいPDFのページにテンプレートを描く
template.Draw(newPage, PointF.Empty(), layout)
# PDF文書を保存する
newPdf.SaveToFile("CustomizePageSize.pdf")
newPdf.Close()
出力ファイル(ここではカスタマイズされたサイズは180mm x 225mm):
上記の2つのサンプルコードを通して、我々は様々なニーズに応じてPDFページを希望のサイズに調整することができます。さらに、Spire.PDF for PythonライブラリはPDFの余白や用紙の向きなどの調整もサポートしています。
PythonでPDFを処理する他のデモについては、こちらをご覧ください: