PDFへのヘッダーとフッターの追加は、PDFドキュメントの視覚的な魅力、ブランディング、整理を向上させるための重要な機能となっています。
ヘッダーとフッターを組み込むことにより、ユーザーはドキュメントのタイトル、ページ番号、ロゴ、日付、著作権表示、機密性の免責事項など、重要な文脈情報をカスタマイズすることができます。これにより、プロフェッショナルな外観が確立されるだけでなく、ドキュメントのナビゲーションが改善され、法的要件の遵守が保証されます。
本記事では、Pythonを使用してPDFファイルにヘッダーとフッターをシームレスに追加するプロセスについて詳しく説明します。
この記事で使用する方法は、Spire.PDF for Pythonを必要とします。これはPyPI経由でインストールできます: pip install Spire.PDF
。
Pythonで既存のPDF文書にヘッダーを追加する
ヘッダーは、各ページの上部に表示されるセクションを指します。ヘッダーには通常、ロゴ、ドキュメントのタイトル、日付、またはドキュメントに関連する他の詳細情報が含まれます。これらの情報は、ドキュメントに文脈やブランディングを提供します。
テキスト、画像、ライン、セクション番号から構成されるヘッダーを PDF ドキュメントに追加するには、以下の手順に従うことができます:
- PdfDocument オブジェクトを作成します。
- 指定されたパスから既存の PDF ドキュメントを読み込みます。
- ヘッダーのコンテンツを定義します:
- ヘッダーに追加するテキストを指定します。
- ヘッダー用の画像を読み込みます。
- ヘッダーを各ページに追加します:PDF ドキュメントの各ページを反復処理し、指定された位置にヘッダーのコンテンツを Canvas.DrawString()、Canvas.DrawImage()、および Canvas.DrawLine() メソッドを使用して追加します。これらのメソッドを呼び出す際には、ページのサイズと余白を考慮して位置を決定する必要があります。
- 変更された PDF を新しいファイルに保存するか、既存のファイルを上書きします。
コード例
from spire.pdf.common import *
from spire.pdf import *
# PdfDocumentオブジェクトを作成します
pdf = PdfDocument()
# PDFファイルを読み込みます
pdf.LoadFromFile("サンプル.pdf")
# 画像を読み込みます
headerImage = PdfImage.FromFile("ヘッダー.png")
# 画像の幅をピクセル単位で取得します
width = headerImage.Width
# 画像の幅をポイント単位で取得します
unitCvtr = PdfUnitConvertor()
pointWidth = unitCvtr.ConvertUnits(width, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point)
# フォント、ブラシ、ペンを作成します
firstFont = PdfTrueTypeFont("HarmonyOS Sans SC", 18.0, PdfFontStyle.Bold, True)
brush = PdfBrushes.get_DarkBlue()
pen = PdfPen(PdfBrushes.get_Black(), 1.5)
# ヘッダに追加するテキストを指定します
headerText = "富士山"
# PdfSectionNumberFieldオブジェクトを作成します
sectionField = PdfSectionNumberField(firstFont, brush)
# ドキュメント内のページをイテレートします
for i in range(pdf.Pages.Count):
# 特定のページを取得します
page = pdf.Pages[i]
# 指定した位置に画像を描画します
page.Canvas.DrawImage(headerImage, page.ActualSize.Width - pointWidth - 72.0, 5.0)
# 指定した位置に文字列を描画します
page.Canvas.DrawString(headerText, firstFont, brush, 72.0, 25.0)
# 指定した位置に線を描画します
page.Canvas.DrawLine(pen, 72.0, 50.0, page.ActualSize.Width - 72.0, 50.0)
# 変更内容を別のPDFファイルに保存します
pdf.SaveToFile("Output/PDFヘッダー.pdf")
# リソースを解放します
pdf.Dispose()
Pythonで既存のPDF文書にフッターを追加する
フッターは、各ページの下部に表示されるセクションを指します。フッターには、ページ番号、著作権情報、著者名、日付、または読者に追加の文脈やナビゲーション支援を提供する他の関連情報が含まれる場合があります。
PDF ドキュメントに「Page X of Y」という行とページ番号を含むフッターを追加するには、以下の手順に従ってください。
- PdfDocument オブジェクトを作成します。
- 指定されたパスから既存の PDF ドキュメントを読み込みます。
- フッターのコンテンツを定義します:
現在のページ番号を取得するために PdfPageNumberField オブジェクトを作成します。
総ページ数を取得するために PdfPageCountField オブジェクトを作成します。「X / Y」の形式を作成するために、これらの2つの自動フィールドとテキストを組み合わせるために PdfCompositeField オブジェクトを利用することができます。 - フッターを各ページに追加します:PDF ドキュメントの各ページを反復処理し、Canvas.DrawLine() メソッドを使用してラインを追加します。PdfCompositeField.Draw() メソッドを使用して、ページ番号と総ページ数をフッター領域に追加します。これらのメソッドを呼び出す際には、ページのサイズと余白を考慮して位置を決定する必要があります。
- 変更された PDF を新しいファイルに保存するか、既存のファイルを上書きします。
コード例
from spire.pdf.common import *
from spire.pdf import *
# PdfDocumentオブジェクトを作成します
pdf = PdfDocument()
# PDFファイルを読み込みます
pdf.LoadFromFile("サンプル.pdf")
# フォント、ブラシ、ペンを作成します
font = PdfTrueTypeFont("HarmonyOS Sans SC", 12.0, PdfFontStyle.Bold, True)
brush = PdfBrushes.get_Black()
pen = PdfPen(brush, 1.5)
# PdfPageNumberFieldオブジェクトとPdfPageCountFieldオブジェクトを作成します
pageNumberField = PdfPageNumberField()
pageCountField = PdfPageCountField()
# ページ数フィールドとページ番号フィールドを1つの文字列に結合するPdfCompositeFieldオブジェクトを作成します
compositeField = PdfCompositeField(font, brush, "{0} / {1}", [pageNumberField, pageCountField])
# ページサイズを取得します
pageSize = pdf.Pages[0].Size
# コンポジットフィールドの位置を設定します
compositeField.Location = PointF(72.0, pageSize.Height - 45.0)
# ドキュメント内のページを反復処理します
for i in range(pdf.Pages.Count):
# 特定のページを取得します
page = pdf.Pages[i]
# 指定された位置に線を描画します
page.Canvas.DrawLine(pen, 72.0, pageSize.Height - 50.0, pageSize.Width - 72.0, pageSize.Height - 50.0)
# ページにコンポジットフィールドを描画します
compositeField.Draw(page.Canvas, 0.0, 0.0)
# 別のPDFファイルに保存します
pdf.SaveToFile("Output/PDFフッター.pdf")
# リソースを解放します
pdf.Dispose()
この記事では、Pythonを使ってPDF文書にヘッダーとフッターを挿入する方法を紹介しました。
より多くのPDF処理スキルについては、Spire.PDF for Pythonのチュートリアルをご覧ください。
このAPIを使用して何か問題が発生した場合は、Spire.PDFフォーラムで技術サポートを受けてください。