関連する項目をリストでグループ化すると、情報が読みやすくなります。一般的なリストには、順序付きリスト(番号付きリストなど)、順序なしリスト(箇条書きリストなど)、入れ子リスト(複数レベルのリスト)という3つのタイプがあります。今回は、Free Spire.PDF for Javaを使って、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ファイルを依存関係としてプロジェクトにインポートしてください。
【予備知識】
Free Spire.PDF for Javaは、PDFドキュメント内で順序付きリストと順序なしリストを扱うために、PdfSortedList クラスと PdfUnorderedList クラスを提供します。次の表は、この記事に関わる重要なクラス、メソッド、およびプロパティを一覧にしています。
クラス・メソッド | 説明 |
---|---|
PdfDocument クラス | PDF ドキュメントモデルを表す。 |
PdfMargins クラス | PDFドキュメントの左、右、上、下の余白を表します。 |
PdfPageBase クラス | PDF ドキュメントのページを表します。 |
PdfBrush クラス | 領域やテキストを塗りつぶすために使用されるブラシを表します。 |
PdfTrueTypeFont クラス | テキストの特定の形式を定義するフォントを表し、フォントの書体、サイズ、スタイル属性が含まれます。 |
PdfSortedList クラス | PDF ドキュメント内の整理されたリストを表します。 |
PdfUnsortedList クラス | PDF ドキュメント内の未整理リストを表します。 |
PdfSortedList.Draw() メソッド | PDF ドキュメントのページ上の指定した位置に整理されたリストを描画します。 |
PdfUnsortedList.Draw() メソッド | PDF ドキュメントのページ上の特定の位置に未整理リストを描画する。 |
PdfOrderedMarker クラス | 順序付きリストのマーカーを表します。 |
PdfSortedList.getItems() メソッド | 指定されたリストの項目を取得する。 |
PdfListItem クラス | 指定されたリストの項目を表します。 |
PdfListItem.setSubList() メソッド | リストの項目にサブリストを追加する。 |
PdfDocument.saveToFile() メソッド | PdfDocument クラスのオブジェクトを PDF ドキュメントに保存します。 |
番号付きリストを作成する
番号付きリストの作成手順は次のとおりです。
- PdfDocument クラスのオブジェクトを作成します。
- PdfMargins クラスでマージンを設定する。
- PdfDocument.getPages().add() メソッドを使用して、ドキュメントにページを追加する。
- PdfBrush クラスのオブジェクトと PdfTrueTypeFont クラスのオブジェクトを作成します。
- PdfSortedList クラスのインスタンスを作成し、リストの内容、フォント、インデント、ブラシを指定します。
- PdfSortedList.draw() メソッドを使用して、ページの指定された位置にリストを描画します。
- PdfDocument.saveToFile() メソッドを使用してPDFドキュメントを保存します。
Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.PdfPageSize;
import com.spire.pdf.graphics.*;
import com.spire.pdf.lists.PdfSortedList;
import java.awt.*;
public class createNumberedList {
public static void main(String[] args) {
//PdfDocument クラスのオブジェクトを作成する
PdfDocument doc = new PdfDocument();
//余白を設定する
PdfMargins margins = new PdfMargins(30);
//ページを追加する
PdfPageBase page = doc.getPages().add(PdfPageSize.A4, margins);
//初期座標を指定する
float x = 0;
float y = 0;
//タイトルを描く
PdfBrush brush = PdfBrushes.getBrown();
PdfTrueTypeFont titleFont = new PdfTrueTypeFont(new Font("Yu Mincho", Font.BOLD, 20));
String title = "Javaを簡単に学ぶための4つのヒント";
page.getCanvas().drawString(title, titleFont, brush, x, y);
y = y + (float) titleFont.measureString(title).getHeight();
y = y + 5;
//番号付きリストを描く
PdfBrush brush1 = PdfBrushes.getBlack();
PdfTrueTypeFont listFont = new PdfTrueTypeFont(new Font("Yu Mincho", Font.PLAIN, 12));
String listContent = "基礎から学び始める。\n"
+"こまめにメモを取る。\n"
+"小さなプロジェクトに挑戦してみる。\n"
+"毎日、コーディングの練習をする。";
PdfSortedList list = new PdfSortedList(listContent);
list.setFont(listFont);
list.setIndent(8);
list.setTextIndent(5);
list.setBrush(brush1);
list.draw(page, 0, y);
//ドキュメントを保存する
doc.saveToFile("番号付きリスト.pdf");
}
}
【出力されるPDFドキュメント】
箇条書きリストを作成する
箇条書きリストの作成手順は、以下の通りです。
- PdfDocument クラスのオブジェクトを作成します。
- PdfMargins クラスでマージンを設定する。
- PdfDocument.getPages().add() メソッドを使用して、ドキュメントにページを追加する。
- PdfBrush クラスのオブジェクトと PdfTrueTypeFont クラスのオブジェクトを作成します。
- PdfUnsortedList クラスのインスタンスを作成し、リストの内容、フォント、インデント、およびブラシを指定します。
- PdfUnorderedList.draw() メソッドを用いて、ページの指定された位置にリストを描画します。
- PdfDocument.saveToFile() メソッドを使用して、ドキュメントを保存します。
Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.PdfPageSize;
import com.spire.pdf.graphics.*;
import com.spire.pdf.lists.PdfUnorderedList;
import java.awt.*;
public class createBulletedList {
public static void main(String[] args) {
//PdfDocument オブジェクトを作成する
PdfDocument doc = new PdfDocument();
//余白を設定する
PdfMargins margin = new PdfMargins(30);
//ページを追加する
PdfPageBase page = doc.getPages().add(PdfPageSize.A4, margin);
//初期座標を指定する
float x = 0;
float y = 0;
//タイトルを描く
PdfBrush brush = PdfBrushes.getCyan();
PdfTrueTypeFont titleFont = new PdfTrueTypeFont(new Font("Yu Mincho", Font.BOLD, 20));
String title = "減量に最も向かない果物";
page.getCanvas().drawString(title, titleFont, brush, x, y);
y = y + (float) titleFont.measureString(title).getHeight();
y = y + 5;
//箇条書きリストを描く
PdfBrush brush1 = PdfBrushes.getBlack();
PdfTrueTypeFont listFont = new PdfTrueTypeFont(new Font("Yu Mincho", Font.PLAIN, 12));
String listContent = "バナナ\n"
+"ブドウ\n"
+"ザクロ\n"
+"林檎\n"
+"ブルーベリー";
PdfUnorderedList list = new PdfUnorderedList(listContent);
list.setFont(listFont);
list.setIndent(8);
list.setTextIndent(5);
list.setBrush(brush1);
list.draw(page, 0, y);
//ドキュメントを保存する
doc.saveToFile("箇条書きリスト.pdf");
}
}
【出力されるPDFドキュメント】
ネストされたリストを作成する
複数レベルのリストを作成する主な手順は次のとおりです。
- PdfDocument クラスのオブジェクトを作成します。
- PdfMargins クラスでマージンを設定する。
- PdfDocument.getPages().add() メソッドを使用して、ドキュメントにページを追加する。
- PdfBrush クラスのオブジェクトと PdfTrueTypeFont クラスのオブジェクトを作成します。
- レベル1のリストを作成します。
- 2つのレベル2のリストを作成し、それらを子リストとしてレベル1のリストに追加します。
- レベル3のリストを作成し、子リストとしてレベル2のリストに追加します。
- PdfSortedList.draw() メソッドを使用して、リストを描画します。
- PdfDocument.saveToFile() メソッドを使用して、ドキュメントを保存します。
Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfNumberStyle;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.PdfPageSize;
import com.spire.pdf.graphics.*;
import com.spire.pdf.lists.PdfListItem;
import com.spire.pdf.lists.PdfOrderedMarker;
import com.spire.pdf.lists.PdfSortedList;
import java.awt.*;
import java.awt.geom.Point2D;
public class createMultiLevelList {
public static void main(String[] args) {
//PdfDocument クラスのオブジェクトを作成する
PdfDocument doc = new PdfDocument();
//余白を設定する
PdfMargins margin = new PdfMargins(30);
//ページを追加する
PdfPageBase page = doc.getPages().add(PdfPageSize.A4, margin);
//初期座標を指定する
float x = 0;
float y = 0;
//2つのPdfBrushクラスのオブジェクトを作成する
PdfBrush blackBrush = PdfBrushes.getBlack();
PdfBrush purpleBrush = PdfBrushes.getPurple();
//2つのPdfTrueTypeFontクラスのオブジェクトを作成する
PdfTrueTypeFont titleFont = new PdfTrueTypeFont(new java.awt.Font("Yu Gothic UI Semibold", Font.BOLD, 20));
PdfTrueTypeFont listFont = new PdfTrueTypeFont(new java.awt.Font("Yu Mincho Demibold", Font.PLAIN, 12));
//タイトルを描く
String title = "複数レベルのリスト";
page.getCanvas().drawString(title, titleFont, blackBrush, x, y);
y = y + (float) titleFont.measureString(title).getHeight();
y = y + 5;
//整理されたリストの番号スタイルを定義するために使用される、2つの順序付きリストのマーカーを作成する
PdfOrderedMarker marker1 = new PdfOrderedMarker(PdfNumberStyle.Numeric, listFont);
PdfOrderedMarker marker2 = new PdfOrderedMarker(PdfNumberStyle.Numeric, listFont);
//レベル1のリストを作成する
String parentListContent = "項目 1\n"
+ "項目 2";
PdfSortedList parentList = new PdfSortedList(parentListContent);
parentList.setFont(listFont);
parentList.setIndent(8);
parentList.setBrush(purpleBrush);
parentList.setMarker(marker1);
//レベル2のリストを作成する
String subListContent_1 = "子項目 1-1\n"
+ "子項目 1-2";
PdfSortedList subList_1 = new PdfSortedList(subListContent_1);
subList_1.setIndent(16);
subList_1.setFont(listFont);
subList_1.setBrush(purpleBrush);
subList_1.setMarker(marker2);
subList_1.setMarkerHierarchy(true);
//別のレベル2のリストを作成する
String subListContent_2 = "子項目 2-1\n"
+ "子項目 2-2\n"
+ "子項目 2-3";
PdfSortedList subList_2 = new PdfSortedList(subListContent_2);
subList_2.setIndent(16);
subList_2.setFont(listFont);
subList_2.setBrush(purpleBrush);
subList_2.setMarker(marker2);
subList_2.setMarkerHierarchy(true);
//レベル3のリストを作成する
String subSubListContent = "子項目 1-1-1\n"
+ "子項目 1-1-2";
PdfSortedList subSubList = new PdfSortedList(subSubListContent);
subSubList.setIndent(24);
subSubList.setFont(listFont);
subSubList.setBrush(purpleBrush);
subSubList.setMarker(marker2);
subSubList.setMarkerHierarchy(true);
//最初のレベル2のリストをレベル1のリストの最初の項目の子リストとして設定する
PdfListItem item_1 = parentList.getItems().get(0);
item_1.setSubList(subList_1);
//第2のレベル2のリストをレベル1のリストの第2項目の子リストとして設定する
PdfListItem item_2 = parentList.getItems().get(1);
item_2.setSubList(subList_2);
//レベル3のリストを最初のレベル2のリストの子リストとして設定する
PdfListItem item_1_1 = subList_1.getItems().get(0);
item_1_1.setSubList(subSubList);
//リストを描く
PdfTextLayout textLayout = new PdfTextLayout();
textLayout.setBreak(PdfLayoutBreakType.Fit_Page);
textLayout.setLayout(PdfLayoutType.Paginate);
parentList.draw(page,new Point2D.Float(x,y),textLayout);
//ドキュメントを保存する
doc.saveToFile("複数レベルのリスト.pdf");
}
}
【出力されるPDFドキュメント】
この記事では、PDFドキュメントにリストを作成する方法について説明します。PDFドキュメントでは、リストは非常に便利です。もっと詳しく知りたい方は、Spire.PDF Forumをご覧ください。