0
0

More than 1 year has passed since last update.

【Java】 PDFドキュメントにリストを作成する方法

Last updated at Posted at 2022-10-14

関連する項目をリストでグループ化すると、情報が読みやすくなります。一般的なリストには、順序付きリスト(番号付きリストなど)、順序なしリスト(箇条書きリストなど)、入れ子リスト(複数レベルのリスト)という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をご覧ください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0