PDFページの分割および結合は、PDFコンテンツの印刷や組版などの再構成に役立ちます。Pythonプログラムを使用することで、開発者は簡単にPDFドキュメントから1ページを複数のページに分割したり、複数のPDFページを1ページに結合したりすることができます。この記事では、PythonプログラムでPDFページを分割および結合する方法を示します。
この記事の方法には、Spire.PDF for Pythonが必要です。公式ウェブサイトからダウンロードするか、PyPIを介してインストールできます:pip install Spire.PDF
。
Pythonで1つのPDFページを複数のPDFページに分割する方法
開発者は、PdfPageBase.CreateTemplate().Draw(newPage PdfPageBase, PointF) メソッドを使用して、新しいPDFページ上にPDFページを描画します。描画時、現在の新しいページに元のページのコンテンツが完全に収まらない場合、自動的に新しいページが作成され、残りのコンテンツがそれに描画されます。したがって、新しいPDFドキュメントを作成し、ページサイズを指定してPDFページを水平または垂直に指定の分割を実現することができます。
PDFページを垂直に2つの別々のPDFページに分割する手順は次のとおりです:
- PdfDocument クラスのオブジェクトを作成し、PdfDocument.LoadFromFile() メソッドを使用してPDFドキュメントをロードします。
- PdfDocument.Pages.get_Item() メソッドを使用して、ドキュメントの最初のページを取得します。
- PdfDocument クラスのオブジェクトを作成して新しいPDFドキュメントを作成します。
- PdfDocument.PageSettings.Margins.All プロパティを介して新しいドキュメントの余白を0に設定します。
- PdfPageBase.Size.Width プロパティと PdfPageBase.Size.Height プロパティを介して取得したページの幅と高さを取得します。
- PdfDocument.PageSettings.Width プロパティを取得したページと同じ幅に設定し、PdfDocument.PageSettings.Height プロパティを取得したページの高さの半分に設定します。
- PdfDocument.Pages.Add() メソッドを使用して新しいドキュメントに新しいページを追加します。
- PdfPageBase.CreateTemplate().Draw() メソッドを使用して、取得したページのコンテンツを新しいページ上に描画します。
- PdfDocument.SaveToFile() メソッドを使用して新しいドキュメントを保存します。
コード例:
from spire.pdf import *
from spire.pdf.common import *
# PdfDocumentクラスのオブジェクトを作成し、PDFドキュメントをロードします
pdf = PdfDocument()
pdf.LoadFromFile("Sample.pdf")
# ドキュメントの最初のページを取得します
page = pdf.Pages.get_Item(0)
# 新しいPDFドキュメントを作成します
newPdf = PdfDocument()
# 新しいPDFドキュメントの余白を0に設定します
newPdf.PageSettings.Margins.All = 0.0
# 取得したページの幅と高さを取得します
width = page.Size.Width
height = page.Size.Height
# 新しいPDFドキュメントの幅を取得したページと同じに設定し、高さを取得したページの高さの半分に設定します
newPdf.PageSettings.Width = width
newPdf.PageSettings.Height = height / 2
# 新しいPDFドキュメントに新しいページを追加します
newPage = newPdf.Pages.Add()
# 取得したページの内容を新しいページに描画します
page.CreateTemplate().Draw(newPage, PointF(0.0, 0.0))
# 新しいPDFドキュメントを保存します
newPdf.SaveToFile("output/SplitPDFPage.pdf")
pdf.Close()
newPdf.Close()
Pythonで複数のPDFページを1つのページに結合する方法
同様に、開発者は異なるページを同じPDFページ上に描画することでPDFページを結合することができます。ただし、結合するページはできるだけ同じ幅または高さであることが好ましいです。そうでない場合は、正しい描画を保証するために最大値を取る必要があります。
2つのPDFページを1つのPDFページに結合するための詳細な手順は次のとおりです:
- PdfDocument クラスのオブジェクトを作成し、PdfDocument.LoadFromFile() メソッドを使用してPDFドキュメントをロードします。
- PdfDocument.Pages.get_Item() メソッドを使用して、ドキュメントの最初のページと2番目のページを取得します。
- PdfDocument クラスのオブジェクトを作成して新しいPDFドキュメントを作成します。
- PdfDocument.PageSettings.Margins.All プロパティを介して新しいドキュメントの余白を0に設定します。
- PdfPageBase.Size.Width プロパティと PdfPageBase.Size.Height プロパティを介して2つの取得したページの幅と高さを取得します。
- PdfDocument.PageSettings.Width プロパティを取得したページと同じ幅に設定し、PdfDocument.PageSettings.Height プロパティを2つの取得したページの高さの合計に設定します。
- PdfPageBase.CreateTemplate().Draw() メソッドを使用して、2つの取得したページのコンテンツを新しいページ上に描画します。
- PdfDocument.SaveToFile() メソッドを使用して新しいドキュメントを保存します。
コード例:
from spire.pdf import *
from spire.pdf.common import *
# PdfDocumentクラスのオブジェクトを作成し、PDFドキュメントをロードします
pdf = PdfDocument()
pdf.LoadFromFile("Sample1.pdf")
# ドキュメントの最初のページと2番目のページを取得します
page = pdf.Pages.get_Item(0)
page1 = pdf.Pages.get_Item(1)
# 新しいPDFドキュメントを作成します
newPdf = PdfDocument()
# 新しいPDFドキュメントの余白を0に設定します
newPdf.PageSettings.Margins.All = 0.0
# 新しいドキュメントのページ幅を取得したページと同じに設定します
newPdf.PageSettings.Width = page.Size.Width
# 新しいドキュメントのページ高さを取得した2つのページの高さの合計に設定します
newPdf.PageSettings.Height = page.Size.Height + page1.Size.Height
# 新しいPDFドキュメントに新しいページを追加します
newPage = newPdf.Pages.Add()
# 取得したページの内容を新しいページに描画します
page.CreateTemplate().Draw(newPage, PointF(0.0, 0.0))
page1.CreateTemplate().Draw(newPage, PointF(0.0, page.Size.Height))
# 新しいドキュメントを保存します
newPdf.SaveToFile("output/MergePDFPages.pdf")
pdf.Close()
newPdf.Close()
結論
この記事では、PDFページを分割し、複数のPDFページを1つのPDFページに結合する方法を示しました。
このAPIには他にも多くの機能がありますので、詳細な情報についてはSpire.PDF for Pythonのチュートリアルをご覧ください。技術サポートについては、Spire.PDFフォーラムにアクセスしてください。