PDFBox-画像の挿入

前の章では、既存のPDFドキュメントからテキストを抽出する方法を見てきました。この章では、PDFドキュメントに画像を挿入する方法について説明します。

PDFドキュメントへの画像の挿入

を使用してPDFドキュメントに画像を挿入できます createFromFile() そして drawImage() クラスのメソッド PDImageXObject そして PDPageContentStream それぞれ。

以下は、既存のPDFドキュメントからテキストを抽出する手順です。

ステップ1:既存のPDFドキュメントをロードする

静的メソッドを使用して既存のPDFドキュメントをロードします load()PDDocumentクラス。このメソッドはファイルオブジェクトをパラメーターとして受け入れます。これは静的メソッドであるため、以下に示すようにクラス名を使用して呼び出すことができます。

File file = new File("path of the document")
PDDocument doc = PDDocument.load(file);

ステップ2:ページを取得する

PDFドキュメント内のページを選択し、を使用してそのページオブジェクトを取得します。 getPage() 以下に示す方法。

PDPage page = doc.getPage(0);

手順3:PDImageXObjectオブジェクトを作成する

クラス PDImageXObjectPDFBoxライブラリの画像を表します。画像の挿入、高さの設定、幅の設定など、画像に関連する操作を実行するために必要なすべてのメソッドを提供します。

メソッドを使用して、このクラスのオブジェクトを作成できます createFromFile()。このメソッドには、追加する画像のパスを文字列の形式で渡し、画像を追加する必要のあるドキュメントオブジェクトを渡す必要があります。

PDImageXObject pdImage = PDImageXObject.createFromFile("C:/logo.png", doc);

ステップ4:コンテンツストリームの準備

名前の付いたクラスのオブジェクトを使用して、さまざまな種類のデータ要素を挿入できます。 PDPageContentStream。ドキュメントオブジェクトとページオブジェクトをこのクラスのコンストラクターに渡す必要があるため、以下に示すように、前の手順で作成したこれら2つのオブジェクトを渡してこのクラスをインスタンス化します。

PDPageContentStream contentStream = new PDPageContentStream(doc, page);

ステップ5:PDFドキュメントに画像を描画する

を使用してPDFドキュメントに画像を挿入できます drawImage()方法。この方法では、上記の手順で作成した画像オブジェクトと、以下に示すように画像に必要な寸法(幅と高さ)を追加する必要があります。

contentstream.drawImage(pdImage, 70, 250);

手順6:PDPageContentStreamを閉じる

閉じます PDPageContentStream を使用するオブジェクト close() 以下に示す方法。

contentstream.close();

ステップ7:ドキュメントを保存する

必要なコンテンツを追加したら、を使用してPDFドキュメントを保存します save() の方法 PDDocument 次のコードブロックに示すクラス。

doc.save("Path");

ステップ8:ドキュメントを閉じる

最後に、を使用してドキュメントを閉じます close() の方法 PDDocument 以下に示すクラス。

doc.close();

名前の付いたPDFドキュメントがあるとします sample.pdf、パス内 C:/PdfBox_Examples/ 以下に示すように空のページがあります。

この例は、上記のPDFドキュメントの空白ページに画像を追加する方法を示しています。ここでは、という名前のPDFドキュメントをロードしますsample.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、以下のように画像が挿入されていることがわかります。