1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonでPDFのページサイズを変更する

Posted at

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ページのサイズを変更する方法を提供します。主な手順は以下の通りです:

  1. 元のPDF文書を読み込み、新しいPDF文書を作成します;
  2. 元のPDF文書の各ページをループします;
  3. PdfDocument.Pages.Add() メ ソ ッ ド を通 じ て、 指定 し たサ イ ズのページ を新 し い PDF 文書内に追加;
  4. 元の PDF 文書内のページに基づいてテ ンプ レー ト を作成;
  5. PdfTemplate.Draw() メ ソ ッ ド を使っ て、 テ ンプ レー ト を新 し い PDF 文書のページに描 き ます;
  6. 新しい 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()

出力ファイル(A4用紙サイズは210mm×297mm):
A4PDF.png

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):
CustomizePDF.png

上記の2つのサンプルコードを通して、我々は様々なニーズに応じてPDFページを希望のサイズに調整することができます。さらに、Spire.PDF for PythonライブラリはPDFの余白や用紙の向きなどの調整もサポートしています。

PythonでPDFを処理する他のデモについては、こちらをご覧ください:

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?