Java での PDF ブックマークの追加および削除

ドキュメントのアウトライン コレクションを使用して、ブックマークをプログラムで管理します。

トップレベルのブックマークの追加

ドキュメントに単一のトップレベルアウトライン エントリを含める必要がある場合は、この例を使用してください。

  1. ソース PDF の Document を開いてください。
  2. OutlineItemCollection を作成し、そのタイトル、スタイル、およびアクションを設定してください。
  3. ブックマークをドキュメントのアウトラインに追加し、ファイルを保存してください。
public static void addBookmark(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        OutlineItemCollection pdfOutline = new OutlineItemCollection(document.getOutlines());
        pdfOutline.setTitle("Test Outline");
        pdfOutline.setItalic(true);
        pdfOutline.setBold(true);
        pdfOutline.setAction(new GoToAction(document.getPages().get_Item(1)));

        document.getOutlines().add(pdfOutline);
        document.save(outputFile.toString());
    }
}

子ブックマークの追加

この例では、親ブックマークを作成し、その下に子ブックマークをネストします。

  1. ソース PDF の Document を開いてください。
  2. 親と子の OutlineItemCollection オブジェクトを作成してください。
  3. 子を親に追加し、親をアウトライン コレクションに追加して、ドキュメントを保存してください。
public static void addChildBookmark(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        OutlineItemCollection pdfOutline = new OutlineItemCollection(document.getOutlines());
        pdfOutline.setTitle("Parent Outline");
        pdfOutline.setItalic(true);
        pdfOutline.setBold(true);

        OutlineItemCollection pdfChildOutline = new OutlineItemCollection(document.getOutlines());
        pdfChildOutline.setTitle("Child Outline");
        pdfChildOutline.setItalic(true);
        pdfChildOutline.setBold(true);

        pdfOutline.add(pdfChildOutline);
        document.getOutlines().add(pdfOutline);
        document.save(outputFile.toString());
    }
}

すべてのブックマークの削除

ドキュメントからアウトライン コレクション全体を削除する必要がある場合にこの方法を使用します。

  1. ソース PDF の Document を開いてください。
  2. 完全なアウトライン コレクションを削除してください。
  3. クリーンアップされた出力ファイルを保存してください。
public static void deleteBookmarks(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        document.getOutlines().delete();
        document.save(outputFile.toString());
    }
}

特定のブックマークの削除

名前付きブックマークを1つだけ削除し、アウトライン ツリー全体をクリアしない場合にこの例を使用します。

  1. ソース PDF の Document を開いてください。
  2. アウトライン コレクションからタイトルでブックマークを削除してください。
  3. 更新されたドキュメントを保存してください。
public static void deleteBookmark(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        document.getOutlines().delete("Child Outline");
        document.save(outputFile.toString());
    }
}