PDF 文書にヘッダーを追加することは、文書のタイトル、作成者、ページ番号などの重要な情報を表示する便利な方法です。ヘッダーは、文書の各ページの上部に表示されるテキストまたはグラフィックのセクションで、必要に応じてカスタマイズできます。この機能は、レポートや契約書など、一貫した書式が求められる専門的な文書を作成する際に特に役立ちます。この記事では、Spire.PDF for Java を使用して、Java で既存の PDF ドキュメントにヘッダーを追加する方法を説明します。
Spire.PDF for Java をインストールします
まず、Spire.PDF for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>8.11.0</version>
</dependency>
</dependencies>
背景知識
Spire.PDF for Java によって既存の PDF ドキュメントが操作されると、座標系の原点はページの左上隅に配置され、x軸は右に、y軸は下に延びています。ページにヘッダーを追加するとは、テキスト、画像、自動フィールド、形状などのコンテンツを、ページの上部の空白領域の指定された場所に追加することを意味します。
空白領域が追加したいコンテンツを収容するのに十分でない場合は、PDF ページの余白を増やすことができます。
Java で既存の PDF 文書にヘッダーを追加する
Spire.PDF for Java では、PdfCanvas.drawString() メソッド、PdfCanvas.drawImage() メソッド、PdfCanvas.drawLine() メソッドやその他の類似メソッドを使用して、PDF ページ上にテキストや画像、図形を描画することができます。ヘッダーにページ番号、セクション、日付などの動的な情報を追加するには、自動フィールドに頼る必要があります。Spire.PDF for Java は、PdfPageNumberField クラス、PdfSectionNumberField クラス、PdfCreationDateField クラスなどを提供し、これらのデータの動的な追加を実現します。
以下は、Spire.PDF for Java を使用して、テキスト、画像、日付、行からなるヘッダーを PDF 文書に追加する手順です。
- PdfDocument オブジェクトを作成します。
- PdfDocument.loadFromFile() メソッドを使って PDF ドキュメントを読み込みます。
- テキストや図形を描画するために使用するフォント、ペン、ブラシオブジェクトを作成します。
- PdfPageBase.getCanvas().drawString() メソッドを使用して、ページの上部の空白領域にテキストを描画します。
- PdfPageBase.getCanvas().drawLine() メソッドを使用して、ページの上部の空白領域に線を描画します。
- PdfImage.fromFile() メソッドを使用して画像を読み込みます。
- PdfPageBase.getCanvas().drawImage() メソッドを使用して、ページの上部の空白領域に画像を描画します。
- ドキュメントの作成時刻を反映する PdfCreationDateField オブジェクトを作成します。
- PdfCreationDateField.draw() メソッドを使用して、ページの一番上の空白領域に作成時刻を描画します。
- PdfDocument.saveToFile() メソッドを使用してドキュメントを保存します。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.automaticfields.PdfCompositeField;
import com.spire.pdf.automaticfields.PdfCreationDateField;
import com.spire.pdf.graphics.*;
import java.awt.*;
public class AddHeaderToPdf {
public static void main(String[] args) {
//PdfDocumentオブジェクトを作成します
PdfDocument doc = new PdfDocument();
//PDFファイルをロードします
doc.loadFromFile("サンプル.pdf");
//ヘッダー用の画像をロードします
PdfImage headerImage = PdfImage.fromFile("Logo.png");
//画像の幅をピクセル単位で取得します
float width = headerImage.getWidth();
//ピクセルをポイントに変換します
PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
float pointWidth = unitCvtr.convertUnits(width, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);
//ヘッダーのテキストを指定します
String headerText = "E-iceblue Tech\nwww.e-iceblue.com";
//TrueTypeフォントを作成します
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Yu Gothic", Font.BOLD, 12),true);
//ブラシを作成します
PdfBrush brush = PdfBrushes.getPurple();
//ペンを作成します
PdfPen pen = new PdfPen(brush, 1.0f);
//作成日時フィールドを作成します
PdfCreationDateField creationDateField = new PdfCreationDateField(font, brush);
creationDateField.setDateFormatString("yyyy-MM-dd");
//静的な文字列と日付フィールドを組み合わせるための複合フィールドを作成します
PdfCompositeField compositeField = new PdfCompositeField(font, brush, "作成日時: {0}", creationDateField);
compositeField.setLocation(new Point(55, 48));
//ドキュメント内のページをループします
for (int i = 0; i < doc.getPages().getCount(); i++)
{
//特定のページを取得します
PdfPageBase page = doc.getPages().get(i);
//画像を上部の空白領域に描画します
page.getCanvas().drawImage(headerImage, page.getActualSize().getWidth() - pointWidth - 55, 20);
//テキストを上部の空白領域に描画します
page.getCanvas().drawString(headerText, font, brush, 55, 10);
//上部の空白領域に線を描画します
page.getCanvas().drawLine(pen, new Point(55, 70), new Point((int)page.getActualSize().getWidth() - 55, 70));
//複合フィールドを上部の空白領域に描画します
compositeField.draw(page.getCanvas());
}
//ファイルに保存します
doc.saveToFile("output/PDFにヘッダーを挿入.pdf");
doc.dispose();
}
}
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。