Pdfbox-inserting-image
PDFBox-画像の挿入
前の章では、既存のPDFドキュメントからテキストを抽出する方法を見てきました。 この章では、PDFドキュメントに画像を挿入する方法について説明します。
PDFドキュメントへの画像の挿入
クラス PDImageXObject および PDPageContentStream の* createFromFile()および drawImage()*メソッドをそれぞれ使用して、PDFドキュメントに画像を挿入できます。
以下は、既存のPDFドキュメントからテキストを抽出する手順です。
ステップ1:既存のPDFドキュメントの読み込み
*PDDocument* クラスの静的メソッド* load()*を使用して、既存のPDFドキュメントを読み込みます。 このメソッドは、以下に示すようにクラス名を使用して呼び出すことができる静的メソッドであるため、パラメーターとしてファイルオブジェクトを受け入れます。
File file = new File("path of the document")
PDDocument doc = PDDocument.load(file);
ステップ2:ページを取得する
以下に示すように、PDFドキュメント内のページを選択し、* getPage()*メソッドを使用してそのページオブジェクトを取得します。
PDPage page = doc.getPage(0);
ステップ3:PDImageXObjectオブジェクトを作成する
PDFBoxライブラリの PDImageXObject クラスは画像を表します。 画像の挿入、高さの設定、幅の設定など、画像に関連する操作を実行するために必要なすべてのメソッドを提供します。
メソッド* createFromFile()*を使用して、このクラスのオブジェクトを作成できます。 このメソッドには、文字列の形式で追加する画像のパスと、画像を追加する必要があるドキュメントオブジェクトを渡す必要があります。
PDImageXObject pdImage = PDImageXObject.createFromFile("C:/logo.png", doc);
ステップ4:コンテンツストリームの準備
*PDPageContentStream* という名前のクラスのオブジェクトを使用して、さまざまな種類のデータ要素を挿入できます。 したがって、ドキュメントオブジェクトとページオブジェクトをこのクラスのコンストラクターに渡す必要があります。以下に示すように、前の手順で作成したこれら2つのオブジェクトを渡すことにより、このクラスをインスタンス化します。
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
ステップ5:PDFドキュメントに画像を描画する
- drawImage()*メソッドを使用して、PDFドキュメントに画像を挿入できます。 このメソッドには、上記の手順で作成した画像オブジェクトと、以下に示すように画像の必要な寸法(幅と高さ)を追加する必要があります。
contentstream.drawImage(pdImage, 70, 250);
ステップ6:PDPageContentStreamを閉じる
以下に示すように、* close()メソッドを使用して *PDPageContentStream オブジェクトを閉じます。
contentstream.close();
ステップ7:ドキュメントを保存する
必要なコンテンツを追加したら、次のコードブロックに示すように、 PDDocument クラスの* save()*メソッドを使用してPDFドキュメントを保存します。
doc.save("Path");
ステップ8:ドキュメントを閉じる
最後に、以下に示すように PDDocument クラスの* close()*メソッドを使用してドキュメントを閉じます。
doc.close();
例
パス C:/PdfBox_Examples/ に sample.pdf という名前のPDFドキュメントがあり、以下に示すように空のページがあるとします。
この例は、上記のPDFドキュメントの空白ページに画像を追加する方法を示しています。 ここでは、 sample.pdf という名前のPDFドキュメントをロードし、それに画像を追加します。 このコードを* InsertingImage.java。*という名前のファイルに保存します
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
public class InsertingImage {
public static void main(String args[]) throws Exception {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument doc = PDDocument.load(file);
//Retrieving the page
PDPage page = doc.getPage(0);
//Creating PDImageXObject object
PDImageXObject pdImage = PDImageXObject.createFromFile("C:/PdfBox_Examples/logo.png",doc);
//creating the PDPageContentStream object
PDPageContentStream contents = new PDPageContentStream(doc, page);
//Drawing the image in the PDF document
contents.drawImage(pdImage, 70, 250);
System.out.println("Image inserted");
//Closing the PDPageContentStream object
contents.close();
//Saving the document
doc.save("C:/PdfBox_Examples/sample.pdf");
//Closing the document
doc.close();
}
}
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
javac InsertingImage.java
java InsertingImage
実行時に、上記のプログラムは、指定されたPDFドキュメントの指定されたページに画像を挿入し、次のメッセージを表示します。
Image inserted
ドキュメント sample.pdf を検証すると、下に示すように画像が挿入されていることがわかります。