LoginSignup
1
0

PythonでPDFページを分割および結合する

Last updated at Posted at 2024-02-23

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ページに分割する手順は次のとおりです:

  1. PdfDocument クラスのオブジェクトを作成し、PdfDocument.LoadFromFile() メソッドを使用してPDFドキュメントをロードします。
  2. PdfDocument.Pages.get_Item() メソッドを使用して、ドキュメントの最初のページを取得します。
  3. PdfDocument クラスのオブジェクトを作成して新しいPDFドキュメントを作成します。
  4. PdfDocument.PageSettings.Margins.All プロパティを介して新しいドキュメントの余白を0に設定します。
  5. PdfPageBase.Size.Width プロパティと PdfPageBase.Size.Height プロパティを介して取得したページの幅と高さを取得します。
  6. PdfDocument.PageSettings.Width プロパティを取得したページと同じ幅に設定し、PdfDocument.PageSettings.Height プロパティを取得したページの高さの半分に設定します。
  7. PdfDocument.Pages.Add() メソッドを使用して新しいドキュメントに新しいページを追加します。
  8. PdfPageBase.CreateTemplate().Draw() メソッドを使用して、取得したページのコンテンツを新しいページ上に描画します。
  9. 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で1つのPDFページを複数のPDFページに分割する方法

Pythonで複数のPDFページを1つのページに結合する方法

同様に、開発者は異なるページを同じPDFページ上に描画することでPDFページを結合することができます。ただし、結合するページはできるだけ同じ幅または高さであることが好ましいです。そうでない場合は、正しい描画を保証するために最大値を取る必要があります。
2つのPDFページを1つのPDFページに結合するための詳細な手順は次のとおりです:

  1. PdfDocument クラスのオブジェクトを作成し、PdfDocument.LoadFromFile() メソッドを使用してPDFドキュメントをロードします。
  2. PdfDocument.Pages.get_Item() メソッドを使用して、ドキュメントの最初のページと2番目のページを取得します。
  3. PdfDocument クラスのオブジェクトを作成して新しいPDFドキュメントを作成します。
  4. PdfDocument.PageSettings.Margins.All プロパティを介して新しいドキュメントの余白を0に設定します。
  5. PdfPageBase.Size.Width プロパティと PdfPageBase.Size.Height プロパティを介して2つの取得したページの幅と高さを取得します。
  6. PdfDocument.PageSettings.Width プロパティを取得したページと同じ幅に設定し、PdfDocument.PageSettings.Height プロパティを2つの取得したページの高さの合計に設定します。
  7. PdfPageBase.CreateTemplate().Draw() メソッドを使用して、2つの取得したページのコンテンツを新しいページ上に描画します。
  8. 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()

結果:
Pythonで複数のPDFページを1つのページに結合する方法

結論

この記事では、PDFページを分割し、複数のPDFページを1つのPDFページに結合する方法を示しました。
このAPIには他にも多くの機能がありますので、詳細な情報についてはSpire.PDF for Pythonのチュートリアルをご覧ください。技術サポートについては、Spire.PDFフォーラムにアクセスしてください。

無料ライセンスの申請

1
0
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
0