Javaが既存のPDFドキュメントにページ番号を追加する


日常業務では、PDF文書の読み取り、検索、管理を容易にするために、PDF文書にページ番号を追加する必要があることがよくあります。 そこで、Free Spire.PDF for Javaを使用して、JavaプログラムでPDF文書にページ番号をすばやく追加する方法を紹介します。

まず、参照用に結果グラフを配置します:

基本的な手順:
1. Free Spire.PDF for Javaパッケージをダウンロードして解凍します。
2. libフォルダーのSpire.Pdf.jarパッケージを依存関係としてJavaアプリケーションにインポートします。(Mavenリポジトリから直接JARパッケージをインストールすることもできます(pom.xmlファイルを構成するコードについては、以下を参照してください))。。
3. Javaアプリケーションで、新しいJava Class(ここではAddPageNumbersという名前)を作成し、対応するJavaコードを入力して実行します。

pom.xmlファイルを構成します:

<repositories>
   <repository>
      <id>com.e-iceblue</id>
      <name>e-iceblue</name>
      <url>http://repo.e-iceblue.com/nexus/content/groups/public/</url>
   </repository>
</repositories>
<dependencies>
   <dependency>
      <groupId>e-iceblue</groupId>
      <artifactId>spire.pdf.free</artifactId>
      <version>2.6.3</version>
   </dependency>
</dependencies>

Javaコード例:

import com.spire.pdf.PdfDocument;
import com.spire.pdf.automaticfields.PdfCompositeField;
import com.spire.pdf.automaticfields.PdfPageCountField;
import com.spire.pdf.automaticfields.PdfPageNumberField;
import com.spire.pdf.graphics.*;

import java.awt.*;
import java.awt.geom.Dimension2D;
import java.awt.geom.Rectangle2D;

public class AddPageNumbers {

    public static void main(String[] args) {

        //PDFドキュメントをロード
        PdfDocument doc = new PdfDocument();
        doc.loadFromFile("file1.pdf");

        //フォントを作成
        PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("宋体", Font.PLAIN, 10),true);

        //ページサイズを取得する
        Dimension2D pageSize = doc.getPages().get(0).getSize();

        //y座標を初期化する
        float y = (float) pageSize.getHeight() - 40;

        //ドキュメントのページを反復処理します
        for (int i = 0; i < doc.getPages().getCount(); i++) {

            //ページ番号フィールドの初期化
            PdfPageNumberField number = new PdfPageNumberField();

            //総ページ数フィールドを初期化する
            PdfPageCountField count = new PdfPageCountField();

            //複合ドメインを作成する
            PdfCompositeField compositeField = new PdfCompositeField(font, PdfBrushes.getBlack(), "ページ{0}合計{1}", number, count);

            //设複合フィールドにテキストの配置を設定する
            compositeField.setStringFormat(new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Top));

            //文字サイズの測定
            Dimension2D textSize = font.measureString(compositeField.getText());

            //PDFページの複合フィールドの位置とサイズを設定する
            compositeField.setBounds(new Rectangle2D.Float(((float) pageSize.getWidth() - (float) textSize.getWidth())/2, y, (float) textSize.getWidth(), (float) textSize.getHeight()));

            //複合フィールドをPDFページに追加する
            compositeField.draw(doc.getPages().get(i).getCanvas());
        }

        //ドキュメントを保存します
        doc.saveToFile("Numbers.pdf");
    }
}