PDFBoxを使ってPDFファイルを画像ファイル(JPEG)に変換する
PDFBox2を使ってPDFファイルを画像ファイル(JPEG)に変換したいことがあったので、その時のメモになります。
目次
- 必要なライブラリ
- コード
- 参考リンク
必要なライブラリ
必要なライブラリは以下の通り。
- pdfbox-2.0.11.jar
- pdfbox-tools-2.0.11.jar
- fontbox-2.0.11.jar
- commons-logging-1.2.jar
PDFBox関連のライブラリは、Apache PDFBox | Downloadsから、loggingはDownload Apache Commons Loggingからダウンロードできるようです。
loggingのライブラリがない場合、実行時に以下のエラーが出力されます。
各ライブラリをダウンロードしたら、ビルド・パスを設定します。
コード
PDFファイルから画像ファイル(JPEG)に変換するコードは以下の通りです。
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.apache.pdfbox.tools.imageio.ImageIOUtil;
public class Example01 {
public static void main(String[] args) {
try {
File file = new File("test.pdf");
InputStream in = new FileInputStream(file);
PDDocument doc = PDDocument.load(in);
PDFRenderer pdfRenderer = new PDFRenderer(doc);
for (int i = 0; i < doc.getNumberOfPages(); i++) {
BufferedImage image = pdfRenderer.renderImageWithDPI(i, 180, ImageType.RGB);
ImageIOUtil.writeImage(image, "test.jpg", 180, 0.5f);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
上記のコードでは、解像度180dpi、品質50%で画像ファイルを出力しています。
普段は解像度(DPI)の指定はあまり使わないので、最終的な画像の大きさ(ピクセルサイズ)がどれくらいになるか分からないと思いますが、ピクセルと解像度(dpi)のサイズ計算式/サイズ早見表を利用すると簡単に計算できます。