しおりは、テキストや画像、場所に印をつけることで、PDFドキュメント内の特定の場所に素早くジャンプできるようにするものです。ページ数の多いPDFドキュメントを処理する際、目的の場所に簡単にジャンプできるように、プログラム上でブックマークを追加、読み込み、修正、削除する必要がある場合があります。この記事では、以下の5つのパートから、無料のFree Spire.PDF for Javaを使用してPDFのブックマークを処理する方法を紹介します。
- PDFドキュメントにブックマークを追加する
- PDFドキュメントのブックマークを読み取る
- PDFドキュメントのブックマークのタイトルと色を変更する
- PDFドキュメントの特定のブックマークを削除する
- PDFドキュメント内のすべてのブックマークを削除する
【依存関係の追加】
この方法は、無料のFree Spire.PDF for Javaが必要ですので、先にjarファイルをインポートしてください。
1. Maven
Maven を使用している場合、プロジェクトの pom.xml ファイルに以下のコードを追加することで、簡単にアプリケーションに JAR ファイルをインポートすることができます。
<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.free</artifactId>
<version>5.1.0</version>
</dependency>
</dependencies>
2. 公式サイトよりJarファイルをダウンロード
まず、Free Spire.PDF for Java の公式サイトよりzipファイルをダウンロードします。zipファイルを解凍し、libフォルダの下にあるSpire.Pdf.jarファイルを依存関係としてプロジェクトにインポートしてください。
PDFドキュメントにブックマークを追加する
Spire.PDF for javaは、PDFファイルにしおりを追加するPdfDocument.getBookmarks().add() メソッドを提供しています。
以下は、その詳細な手順です。
- PdfDocumentクラスのインスタンスを作成し、PdfDocument.loadFromFile() メソッドを使用してPDFドキュメントを読み込みます。
- PDF内のページをループし、PdfPageBase.getPages().get(i) メソッドを使用してページ集を取得します。
- PdfDocument.getBookmarks().add() メソッドを使用してPDFにブックマークを追加します。
- ブックマークの対象ページと位置を設定します。
- ブックマークの色とテキストスタイルを設定します。
- PdfDocument.saveToFile() メソッドを使用して、ドキュメントを別のPDFファイルに保存します。
Java
import com.spire.pdf.*;
import com.spire.pdf.actions.PdfGoToAction;
import com.spire.pdf.bookmarks.PdfBookmark;
import com.spire.pdf.bookmarks.PdfTextStyle;
import com.spire.pdf.general.PdfDestination;
import com.spire.pdf.graphics.PdfRGBColor;
import java.awt.*;
import java.awt.geom.Point2D;
public class addBookmarks {
public static void main(String[] args) throws Exception {
//PdfDocumentクラスのインスタンスを作成する
PdfDocument pdf = new PdfDocument();
//PDFファイルを読み込む
pdf.loadFromFile("C:/Sample.pdf");
//PDFファイル内のページをループする
for (int i = 0; i < pdf.getPages().getCount(); i++) {
PdfPageBase page = pdf.getPages().get(i);
//ブックマークを追加する
PdfBookmark bookmark = pdf.getBookmarks().add(String.format("ブックマーク-%s", i + 1));
//目的ページと場所を設定する
PdfDestination destination = new PdfDestination(page, new Point2D.Float(0, 0));
bookmark.setAction(new PdfGoToAction(destination));
//文字色を設定する
bookmark.setColor(new PdfRGBColor(new Color(139, 69, 19)));
//テキストのスタイルを設定する
bookmark.setDisplayStyle(PdfTextStyle.Bold);
//結果ファイルを保存する
pdf.saveToFile("ブックマークの追加.pdf");
}
}
}
【出力されるPDFドキュメント】
PDFドキュメントのブックマークを読み取る
Spire.PDF for Javaを使用すると、PDFドキュメント内のブックマークのタイトルや書式などの情報を取得することができます。
具体的な手順は次のとおりです。
- PdfDocumentクラスのインスタンスを生成し、PdfDocument.loadFromFile() メソッドを使用してPDFドキュメントを読み込みます。
- PdfDocument.getBookmarks() メソッドを使用してPDFドキュメントのブックマーク集を取得します。
- カスタムメソッド GetBookmarks() を使ってブックマークの内容を取得し、TXTファイルに保存します。
Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.bookmarks.PdfBookmark;
import com.spire.pdf.bookmarks.PdfBookmarkCollection;
import java.io.FileWriter;
import java.io.IOException;
public class getBookmarks {
public static void main(String[] args) throws Exception {
//PdfDocumentクラスのインスタンスを作成する
PdfDocument pdf = new PdfDocument();
//PDFファイルを読み込む
pdf.loadFromFile("ブックマークの追加.pdf");
//ブックマークコレクションを取得する
PdfBookmarkCollection bookmarks = pdf.getBookmarks();
String result = "ブックマークの取得.txt";
GetBookmarks(bookmarks, result);
}
private static void GetBookmarks(PdfBookmarkCollection bookmarks, String result) throws IOException {
//StringBuilderクラスのインスタンスを宣言する
StringBuilder content = new StringBuilder();
//PDFブックマーク情報を取得する
if (bookmarks.getCount() > 0) {
content.append("Pdf bookmarks:");
for (int i = 0; i < bookmarks.getCount(); i++) {
PdfBookmark parentBookmark = bookmarks.get(i);
content.append(parentBookmark.getTitle() + "\r\n");
//テキストのスタイルを取得する
String textStyle = parentBookmark.getDisplayStyle().toString();
content.append(textStyle + "\r\n");
}
}
writeStringToTxt(content.toString(),result);
}
public static void writeStringToTxt(String content, String txtFileName) throws IOException {
FileWriter fWriter = new FileWriter(txtFileName, true);
try {
fWriter.write(content);
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
fWriter.flush();
fWriter.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
【出力されるTXTファイル】
PDFドキュメントのブックマークのタイトルと色を変更する
PDFファイル内の既存のブックマークを編集することができます。例えば、ブックマークのタイトル、フォントの色、テキストの表示スタイルなどを変更します。
以下は、その詳細な手順です。
- PdfDocumentクラスのインスタンスを生成し、PdfDocument.loadFromFile() メソッドを使用してPDFドキュメントを読み込みます。
- PdfDocument.getBookmarks().get(0) メソッドを使用してPDFドキュメントの最初のブックマークを取得します。
- bookmark.setTitle() メソッドを使用して、ブックマークのタイトルを設定します。
- ブックマークの色と表示スタイルを設定します。
- PdfDocument.saveToFile() メソッドを使用して、ドキュメントを別のPDFファイルに保存します。
Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.bookmarks.PdfBookmark;
import com.spire.pdf.bookmarks.PdfTextStyle;
import com.spire.pdf.graphics.PdfRGBColor;
import java.awt.*;
public class editBookmark {
public static void main(String[] args) throws Exception {
//PdfDocumentクラスのインスタンスを作成する
PdfDocument pdf = new PdfDocument();
//PDFファイルを読み込む
pdf.loadFromFile("ブックマークの追加.pdf");
//最初のブックマークを取得する
PdfBookmark bookmark = pdf.getBookmarks().get(0);
//ブックマークのタイトルを変更する
bookmark.setTitle("新しいタイトル");
//ブックマークの文字色を変更する
bookmark.setColor(new PdfRGBColor(new Color(255,0,0)));
//ブックマークのテキストスタイルを変更する
bookmark.setDisplayStyle(PdfTextStyle.Italic);
//結果ファイルを保存する
pdf.saveToFile("ブックマークの編集.pdf");
}
}
【出力されるPDFドキュメント】
PDFドキュメントの特定のブックマークを削除する
Spire.PDF for javaは、PDFドキュメントから特定のブックマークを削除することをサポートしています。
詳細な手順は以下の通りです。
- PdfDocumentクラスのインスタンスを作成し、PdfDocument.loadFromFile() メソッドを使用してPDFドキュメントを読み込みます。
- PdfDocument.getBookmarks().removeAt() メソッドを使用してPDFドキュメントの特定のブックマークを削除します。
- PdfDocument.saveToFile() メソッドを使用して、ドキュメントを別のPDFファイルに保存します。
Java
import com.spire.pdf.PdfDocument;
public class deleteBookmarks {
public static void main(String[] args) throws Exception {
//PdfDocumentクラスのインスタンスを作成する
PdfDocument pdf = new PdfDocument();
//PDFファイルを読み込む
pdf.loadFromFile("ブックマークの追加.pdf");
//2つめのブックマークを削除する
pdf.getBookmarks().removeAt(1);
//結果ファイルを保存する
pdf.saveToFile("ブックマークの削除.pdf");
}
}
【出力されるPDFドキュメント】
PDFドキュメント内のすべてのブックマークを削除する
Spire.PDF for javaは、PDFファイルからすべてのブックマークを削除する PdfDocument.getBookmarks().clear() メソッドを提供しています。
ここでは、その詳細な手順を説明します。
- PdfDocumentクラスのインスタンスを生成し、PdfDocument.loadFromFile() メソッドを使用してPDFドキュメントを読み込みます。
- PdfDocument.getBookmarks().clear() メソッドを使用して、PDFドキュメントのすべてのブックマークを削除します。
- PdfDocument.saveToFile() メソッドを使用して、ドキュメントを別のPDFファイルに保存します。
Java
import com.spire.pdf.PdfDocument;
public class deleteBookmarks {
public static void main(String[] args) throws Exception {
//PdfDocumentクラスのインスタンスを作成する
PdfDocument pdf = new PdfDocument();
//PDFファイルを読み込む
pdf.loadFromFile("ブックマークの追加.pdf");
//2つめのブックマークを削除する
pdf.getBookmarks().removeAt(1);
//結果ファイルを保存する
pdf.saveToFile("ブックマークの削除.pdf");
}
}
【出力されるPDFドキュメント】
この記事では、PDFのブックマークの追加、読み込み、変更、削除の手順を紹介します。PDFドキュメントの処理についての詳細は、Spire.PDF Forumをご覧ください。