Pdfbox-extracting-image

提供:Dev Guides
移動先:案内検索

PDFBox-画像の抽出

前の章では、複数のPDF文書をマージする方法を見てきました。 この章では、PDFドキュメントのページから画像を抽出する方法を理解します。

PDFドキュメントから画像を生成する

PDFBoxライブラリは、PDFドキュメントをAWT BufferedImageにレンダリングする PDFRenderer という名前のクラスを提供します。

以下は、PDFドキュメントから画像を生成する手順です。

ステップ1:既存のPDFドキュメントの読み込み

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

ステップ2:PDFRendererクラスのインスタンス化

*PDFRenderer* という名前のクラスは、PDFドキュメントを *AWT BufferedImage* にレンダリングします。 したがって、次のようにこのクラスをインスタンス化する必要があります。 このクラスのコンストラクターは、ドキュメントオブジェクトを受け入れます。以下に示すように、前の手順で作成したドキュメントオブジェクトを渡します。
PDFRenderer renderer = new PDFRenderer(document);

ステップ3:PDFドキュメントから画像をレンダリングする

Rendererクラスの* renderImage()*メソッドを使用して特定のページに画像をレンダリングできます。このメソッドに、レンダリングする画像があるページのインデックスを渡す必要があります。

BufferedImage image = renderer.renderImage(0);

ステップ4:イメージをファイルに書き込む

  • write()*メソッドを使用して、前のステップでレンダリングされたイメージをファイルに書き込むことができます。 この方法に、あなたは3つのパラメータを渡す必要があります-
  • レンダリングされた画像オブジェクト。
  • 画像のタイプ(jpgまたはpng)を表す文字列。
  • 抽出した画像を保存する必要があるファイルオブジェクト。
ImageIO.write(image, "JPEG", new File("C:/PdfBox_Examples/myimage.jpg"));

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

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

document.close();

パス C:\ PdfBox_Examples \sample.pdf のPDFドキュメントがあり、最初のページに次のように画像が含まれているとします。

サンプル画像

この例では、上記のPDFドキュメントを画像ファイルに変換する方法を示します。 ここでは、PDFドキュメントの1ページ目の画像を取得し、 myimage.jpg として保存します。 このコードを PdfToImage.java として保存します

import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
public class PdfToImage {

   public static void main(String args[]) throws Exception {

     //Loading an existing PDF document
      File file = new File("C:/PdfBox_Examples/sample.pdf");
      PDDocument document = PDDocument.load(file);

     //Instantiating the PDFRenderer class
      PDFRenderer renderer = new PDFRenderer(document);

     //Rendering an image from the PDF document
      BufferedImage image = renderer.renderImage(0);

     //Writing the image to a file
      ImageIO.write(image, "JPEG", new File("C:/PdfBox_Examples/myimage.jpg"));

      System.out.println("Image created");

     //Closing the document
      document.close();

   }
}

次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。

javac PdfToImage.java
java PdfToImage

実行時に、上記のプログラムは、指定されたPDFドキュメント内の画像を取得し、次のメッセージを表示します。

Image created

指定されたパスを検証すると、以下に示すように、画像が myimage.jpg として生成および保存されていることがわかります。

Generateimage