Java PDF内で表の作成

<p><strong>PDF文書でデータを処理する時がよくあると思います。PDF内で表やテーブルを作ったり、データを編集したりすることで、スキルがアップされますよね。だからこの記事では、<a href="https://www.e-iceblue.com/Introduce/pdf-for-java.html">Spire.PDF for Java</a>というライブラリを活用して、PDF内で表の作成法を紹介致します！</strong></p>
<h1><strong>Spire.PDF for Javaとは？</strong></h1>
><p><strong><a href="https://www.e-iceblue.com/Introduce/pdf-for-java.html">Spire.PDF for Java</a> is a PDF API that enables Java applications to<a href="https://www.e-iceblue.com/Tutorials/Spire.PDF-for-JAVA/Spire.PDF-Program-Guide-JAVA/Document-Operation/Create-a-PDF-Document-in-Java.html"> create</a>, edit and <a href="https://www.e-iceblue.com/Tutorials/Java/Spire.PDF-for-Java/Program-Guide/Conversion/Convert-PDF-to-Excel-in-Java.html">convert 》</a>PDF documents without using Adobe Acrobat.</strong></p>

><p><strong>和訳：<a href="https://www.e-iceblue.com/Introduce/pdf-for-java.html">Spire.PDF for Java</a>は、<a href="https://www.e-iceblue.com/">Eiceblue社</a>が開発され、開発者が JavaプラットホームでPDFのドキュメントを迅速かつ高品質で<a href="https://www.e-iceblue.com/Tutorials/Spire.PDF-for-JAVA/Spire.PDF-Program-Guide-JAVA/Document-Operation/Create-a-PDF-Document-in-Java.html">作成</a>・編集・<a href="https://www.e-iceblue.com/Tutorials/Java/Spire.PDF-for-Java/Program-Guide/Conversion/Convert-PDF-to-Excel-in-Java.html">変換</a>・<a href="https://www.e-iceblue.com/Tutorials/Java/Spire.PDF-for-Java/Program-Guide/Print/How-to-print-PDF-document-in-Java.html">印刷</a>するために設計された専門的なPDF処理APIです。</strong></p>

<p><strong>そして、商用版と無料版の<a href="https://www.e-iceblue.com/Introduce/free-pdf-for-java.html">Free.Spire.Pdf for java</a>があります。<a href="https://www.e-iceblue.com/Introduce/pdf-for-java.html">Spire.PDF for Java</a>は商用版ではありますが、基本的な機能を搭載しているので、無料試用で日常の仕事にもう結構だと思います。</strong></p>
<h1><strong>下準備</strong></h1>
<p><strong>1.E-iceblueの公式サイトから<a href="https://www.e-iceblue.com/Download/pdf-for-java.html">Spire.PDF for Java</a>をダウンロードしてください。</strong></p>
<p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/lendoris/20210927/20210927154630.png" alt="f:id:lendoris:20210927154630p:plain" width="551" height="200" loading="lazy" title="" class="hatena-fotolife" itemprop="image" /></p>
<p><strong>2.IDEを起動して新規プロジェクトを作成してから、インストールされたファイルにある相応しいSpire.PDF.jarを参照に追加してください。</strong></p>
<h1><strong>Mavenの側なら？</strong></h1>
<p><span style="color: #ff5252;"><strong>もしMavenの利用者だったら、pom.xmlファイルに下記のようなコードを追加することで、JARを簡単にインポートできます。</strong></span></p>
```java
<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <url>http://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.PDF</artifactId>
        <version>4.8.7</version>
    </dependency>
</dependencies>
```
<h1><strong>サンプルコード</strong></h1>
```java
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;
import com.spire.pdf.tables.*;
import java.awt.*;
import java.awt.geom.Point2D;

public class PDF {
    public static void main(String[] args) {
        // PdfDocument オブジェクトを作成します。
        PdfDocument doc = new PdfDocument();

        //マージンを設定します。
        PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
        PdfMargins margin = new PdfMargins();
        margin.setTop(unitCvtr.convertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point));
        margin.setBottom(margin.getTop());
        margin.setLeft(unitCvtr.convertUnits(3.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point));
        margin.setRight(margin.getLeft());

        //Add one page
        PdfPageBase page = doc.getPages().add(PdfPageSize.A4, margin);

        float y = 10;

        //タイトルを書きます
        PdfBrush brush1 = PdfBrushes.getBlack();
        PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Ms mincho", Font.BOLD, 16));
        PdfStringFormat format1 = new PdfStringFormat(PdfTextAlignment.Center);
        page.getCanvas().drawString("世界国家", font1, brush1, page.getCanvas().getClientSize().getWidth() / 2, y, format1);
        y = y + (float) font1.measureString("世界国家", format1).getHeight();
        y = y + 5;

        //データを追加します。
        String[] data = {"Name;Capital;Continent;Area;Population", "Argentina;Buenos Aires;South America;2777815;32300003", "Bolivia;La Paz;South America;1098575;7300000", "Brazil;Brasilia;South America;8511196;150400000", "Canada;Ottawa;North America;9976147;26500000", "Chile;Santiago;South America;756943;13200000", "Colombia;Bagota;South America;1138907;33000000", "Cuba;Havana;North America;114524;10600000", "Ecuador;Quito;South America;455502;10600000", "El Salvador;San Salvador;North America;20865;5300000", "Guyana;Georgetown;South America;214969;800000", "Jamaica;Kingston;North America;11424;2500000", "Mexico;Mexico City;North America;1967180;88600000", "Nicaragua;Managua;North America;139000;3900000", "Paraguay;Asuncion;South America;406576;4660000", "Peru;Lima;South America;1285215;21600000", "United States of America;Washington;North America;9363130;249200000", "Uruguay;Montevideo;South America;176140;3002000", "Venezuela;Caracas;South America;912047;19700000"};

        String[][] dataSource = new String[data.length][];
        for (int i = 0; i < data.length; i++) {
            dataSource[i] = data[i].split("[;]", -1);
        }

        //データソースをつくります。
        PdfTable table = new PdfTable();
        table.getStyle().setCellPadding(2);
        table.getStyle().setHeaderSource(PdfHeaderSource.Rows);
        table.getStyle().setHeaderRowCount(1);
        table.getStyle().setShowHeader(true);
        table.setDataSource(dataSource);

        //テーブルをつくります
        PdfLayoutResult result = table.draw(page, new Point2D.Float(0, y));
        y = y + (float) result.getBounds().getHeight() + 5;
        PdfBrush brush2 = PdfBrushes.getGray();
        PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Ms mincho", 0, 9));
        page.getCanvas().drawString(String.format("* %1$s ヶ国が含まれます.", data.length - 1), font2, brush2, 5, y);

        //保存します。
        doc.saveToFile("output/Table.pdf");
    }
    
}
```

<h1><strong>実行結果</strong><?h1>

<p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/lendoris/20210927/20210927154841.png" alt="f:id:lendoris:20210927154841p:plain" width="554" height="443" loading="lazy" title="" class="hatena-fotolife" itemprop="image" /></p>

<h1><strong>以下の関連記事もご参照</strong></h1>
><p><strong>PDF変換機能：<a href="https://www.e-iceblue.com/Tutorials/Java/Spire.PDF-for-Java/Program-Guide/Conversion/Convert-PDF-to-Excel-in-Java.html">Convert PDF to Excel in Java</a></strong></p>
<p><strong>PDFの作成法：<a href="https://www.e-iceblue.com/Tutorials/Spire.PDF-for-JAVA/Spire.PDF-Program-Guide-JAVA/Document-Operation/Create-a-PDF-Document-in-Java.html">Create a PDF Document in Java</a></strong></p>
<p><strong>PDFを印刷：<a href="https://www.e-iceblue.com/Tutorials/Java/Spire.PDF-for-Java/Program-Guide/Print/How-to-print-PDF-document-in-Java.html">Create a PDF Document in Java</a></strong></p>

<h1><strong>終わりに</strong></h1>
<p><strong><a href="https://www.e-iceblue.com/Introduce/pdf-for-java.html">Spire.PDF for Java</a>は、パワフルな機能を満載しているので、使いやすいし、開発者にとってかなり便利なツールですね。もし完全な機能を使いたいのなら、直接<a href="https://www.e-iceblue.com/">E-iceblue</a>に連絡していいんですよ。</strong></p>
<p> </p>