iText-テーブルへの画像の追加
この章では、iTextライブラリを使用してPDFドキュメントのテーブルに画像を追加する方法を説明します。
テーブルへの画像の追加
をインスタンス化することにより、空のPDFドキュメントを作成できます Documentクラス。このクラスをインスタンス化するときに、合格する必要がありますPdfDocumentコンストラクターへのパラメーターとしてのオブジェクト。次に、ドキュメントにテーブルを追加するには、インスタンス化する必要がありますTable クラスを作成し、を使用してこのオブジェクトをドキュメントに追加します add() 方法。
このテーブルに画像を追加するには、インスタンス化する必要があります Cell クラス、作成、および追加する必要のある画像のオブジェクト、画像をに追加します cell を使用するオブジェクト add() の方法 Cell クラス。
以下は、テーブルのセルに画像を挿入する手順です。
ステップ1:PdfWriterオブジェクトを作成する
ザ・ PdfWriter クラスはPDFのDocWriterを表し、このクラスはパッケージに属します com.itextpdf.kernel.pdf。このクラスのコンストラクターは、PDFが作成されるファイルのパスを表す文字列を受け入れます。
以下に示すように、PDFを作成する必要があるパスを表す文字列値をコンストラクターに渡すことにより、PdfWriterクラスをインスタンス化します。
// Creating a PdfWriter
String dest = "C:/itextExamples/addingImage.pdf";
PdfWriter writer = new PdfWriter(dest);
このタイプのオブジェクトがPdfDocument(クラス)に渡されると、このドキュメントに追加されたすべての要素が指定されたファイルに書き込まれます。
ステップ2:PdfDocumentオブジェクトを作成する
ザ・ PdfDocumentclassは、iTextでPDFドキュメントを表すクラスです。このクラスはパッケージに属していますcom.itextpdf.kernel.pdf。このクラスを(書き込みモードで)インスタンス化するには、クラスのオブジェクトを渡す必要がありますPdfWriter そのコンストラクタに。
インスタンス化する PdfDocument 以下に示すように、上記で作成したPdfWriterオブジェクトをコンストラクターに渡すことによってクラスを作成します。
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
PdfDocumentオブジェクトが作成されると、そのクラスによって提供されるそれぞれのメソッドを使用して、ページ、フォント、添付ファイル、イベントハンドラーなどのさまざまな要素を追加できます。
ステップ3:Documentオブジェクトを作成する
ザ・ Document パッケージのクラス com.itextpdf.layoutは、自給自足のPDFを作成する際のルート要素です。このクラスのコンストラクターの1つは、クラスのオブジェクトを受け入れますPdfDocument。
インスタンス化する Document クラスのオブジェクトを渡すことによるクラス PdfDocument 以下に示すように、前の手順で作成しました。
// Creating a Document
Document document = new Document(pdfDoc);
ステップ4:テーブルオブジェクトを作成する
ザ・ Tableクラスは、行と列で順序付けられた、セルで満たされた2次元グリッドを表します。パッケージに属していますcom.itextpdf.layout.element。
インスタンス化する Table 以下に示すクラス。
// Creating a table
float [] pointColumnWidths = {200F, 200F};
Table table = new Table(pointColumnWidths);
ステップ5:セルを作成する
作成する cell オブジェクトをインスタンス化して Cell パッケージのクラス com.itextpdf.layout、以下に示すように。
// Adding cell to the table
Cell cell = new Cell(); // Creating a cell
ステップ6:画像を作成する
を作成するには image オブジェクトは、まず第一に、作成します ImageData を使用するオブジェクト create() の方法 ImageDataFactoryクラス。このメソッドのパラメーターとして、以下に示すように、画像のパスを表す文字列パラメーターを渡します。
// Creating an ImageData object
String imageFile = "C:/itextExamples/javafxLogo.jpg";
ImageData data = ImageDataFactory.create(imageFile);
今、インスタンス化します Image のクラス com.itextpdf.layout.elementパッケージ。インスタンス化中に、ImageData 以下に示すように、コンストラクターへのパラメーターとして、上で作成されたオブジェクト。
// Creating an Image object
Image img = new Image(data);
追加します image を使用してセルにオブジェクト add() 以下に示すように、セルクラスのメソッド。
// Adding image to the cell
cell.add(img.setAutoScale(true));
ステップ7:テーブルにセルを追加する
最後に、このセルをテーブルに追加するには、 addCell() の方法 Table クラスと合格 cell 以下に示すように、このメソッドのパラメーターとしてのオブジェクト。
table.addCell(cell);
ステップ8:ドキュメントにテーブルを追加する
追加します table 前の手順で作成されたオブジェクト add() の方法 Document 以下に示すように、クラス。
// Adding list to the document
document.add(table);
ステップ9:ドキュメントを閉じる
を使用してドキュメントを閉じます close() の方法 Document 以下に示すように、クラス。
// Closing the document
document.close();
例
次のJavaプログラムは、iTextライブラリを使用してPDFドキュメントのテーブルのセルに画像を追加する方法を示しています。名前の付いたPDFドキュメントを作成しますaddingImage.pdf、それにテーブルを追加し、そのセルの1つに画像(javafxLogo.jpg)を挿入して、パスに保存します C:/itextExamples/。
このコードを名前のファイルに保存します AddingImageToTable.java。
import com.itextpdf.io.image.ImageData;
import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Image;
import com.itextpdf.layout.element.Table;
public class a3AddingImageToTable {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter object
String dest = "C:/itextExamples/addingImage.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfDocument object
PdfDocument pdfDoc = new PdfDocument(writer);
// Creating a Document object
Document doc = new Document(pdfDoc);
// Creating a table
float [] pointColumnWidths = {150f, 150f};
Table table = new Table(pointColumnWidths);
// Populating row 1 and adding it to the table
Cell cell1 = new Cell();
cell1.add("Tutorial ID");
table.addCell(cell1);
Cell cell2 = new Cell();
cell2.add("1");
table.addCell(cell2);
// Populating row 2 and adding it to the table
Cell cell3 = new Cell();
cell3.add("Tutorial Title");
table.addCell(cell3);
Cell cell4 = new Cell();
cell4.add("JavaFX");
table.addCell(cell4);
// Populating row 3 and adding it to the table
Cell cell5 = new Cell();
cell5.add("Tutorial Author");
table.addCell(cell5);
Cell cell6 = new Cell();
cell6.add("Krishna Kasyap");
table.addCell(cell6);
// Populating row 4 and adding it to the table
Cell cell7 = new Cell();
cell7.add("Submission date");
table.addCell(cell7);
Cell cell8 = new Cell();
cell8.add("2016-07-06");
table.addCell(cell8);
// Populating row 5 and adding it to the table
Cell cell9 = new Cell();
cell9.add("Tutorial Icon");
table.addCell(cell9);
// Creating the cell10
Cell cell10 = new Cell();
// Creating an ImageData object
String imageFile = "C:/itextExamples/javafxLogo.jpg";
ImageData data = ImageDataFactory.create(imageFile);
// Creating the image
Image img = new Image(data);
// Adding image to the cell10
cell10.add(img.setAutoScale(true));
// Adding cell110 to the table
table.addCell(cell10);
// Adding Table to document
doc.add(table);
// Closing the document
doc.close();
System.out.println("Image added to table successfully..");
}
}
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します-
javac AddingImageToTable.java
java AddingImageToTable
上記のプログラムを実行すると、PDFドキュメントが作成され、次のメッセージが表示されます。
Image added to table successfully..
指定されたパスを確認すると、以下に示すように、作成されたPDFドキュメントを見つけることができます。