Apache PDFBoxを用いたPDFファイルの画像変換処理

はじめに

こんにちは。開発部のK.Sです。

今回はJavaでのPDFからJPGへの変換処理の実装方法についてご紹介いたします。

こちらの処理を活用すれば、GIFやPNGなどJPG以外の形式への変換も可能です。ぜひご活用ください!

以下Apache PDFBoxライブラリを使用して、PDFからJPGに変換する手順を詳しく説明します。

JARファイルの追加

まず、Apache PDFBoxライブラリをプロジェクトに追加する必要があります。

Maven等のビルドツールを使用してライブラリを管理することをお勧めします。

Mavenを使用する場合は以下資料を参考にしてください。

pdfbox.apache.org

またビルドツールを使用しない場合は、以下からpdfbox-x.x.x.jar、pdfbox-tools-x.x.x.jarを直接ダウンロードし、

ダウンロードしたJARファイルをビルドパスに追加してください。

Java互換性、依存関係などに注意してファイルを選択してください) pdfbox.apache.org

ソースコード

// PDFファイル読み込み
PDDocument doc = PDDocument.load(
        new File("C:/test/sample.pdf"),
        MemoryUsageSetting.setupTempFileOnly()
);
// PDFのレンダリング
PDFRenderer pdfRenderer = new PDFRenderer(doc);
BufferedImage image = pdfRenderer.renderImageWithDPI(0, 300, ImageType.RGB);
// 画像のJPG形式への変換、出力
String path = "C:/test/convert/"; // 出力先パス
String fileName = "output"; // ファイル名
String fileFormat = ".jpg"; // 拡張子
ImageIOUtil.writeImage(image, path+fileName+fileFormat , 300);

上記のように記述することで、取得したPDFをJPGに変換し、任意の場所に出力することができます。

以下、ソースコードの詳細について説明します。

PDFの読み込み

PDFファイルを読み込みます。

// PDFファイル読み込み
PDDocument doc = PDDocument.load(
        new File("C:/test/sample.pdf"),
        MemoryUsageSetting.setupTempFileOnly()
);

第二引数ではPDFファイル読み込み時のメモリ使用設定を指定することができます。 MemoryUsageSetting.setupTempFileOnly()の場合、一時ファイルのみを使用する設定になります。

PDDocument.loadには他にもいくつか引数の指定方法があり、File型以外にもInputStream型等の利用やパスワード付のPDFを読み込むことも可能です。

※引数の指定等APIの詳細については以下を参考にしてください。 pdfbox.apache.org

PDFのレンダリング

PDFをレンダリングします。

// PDFレンダリング
PDFRenderer pdfRenderer = new PDFRenderer(doc);
BufferedImage image = pdfRenderer.renderImageWithDPI(0, 300, ImageType.RGB);

0: レンダリングするページ番号(0は最初のページを示します)。

300: DPI(dots per inch)。DPIが高いほど、画像の解像度が高くなります。

ImageType.RGB: 出力画像のカラーモード。ImageType.RGBはフルカラーのRGB画像を指定します。

※引数の指定等APIの詳細については以下を参考にしてください。 pdfbox.apache.org

画像のJPG形式への変換、出力

レンダリングしたデータをjpgとして出力します。

// 画像のJPG形式への変換、出力
String path = "C:/test/convert/"; // 出力先パス
String fileName = "output"; // ファイル名
String fileFormat = ".jpg"; // 拡張子
ImageIOUtil.writeImage(image, path+fileName+fileFormat , 300);

上記の例の場合、第二引数にパスを指定することで任意の場所に、ファイル名を指定して出力することが可能です。

また、この拡張子を変更することでGIFやPNGなどJPG以外の形式への変換も可能です

※引数の指定等APIの詳細については以下を参考にしてください。 pdfbox.apache.org

おわりに

以上、PDFBoxを用いてPDFからJPGに変換する方法についての紹介です。

Apache PDFBoxを活用することで、さまざまな画像形式への変換が容易に行えます。

PDFから画像形式への変換が必要になった際にはぜひ活用してみてください!