【JAVA】PDFBoxで複数ページあるPDFを画像に変換する
Posted on 2023/8/5 at 06:30
Update on 2023/8/5 at 6:30
PDFBoxライブラリの準備
Mavenを使用する場合
Mavenプロジェクトのpom.xmlのdependenciesに以下を追記します。
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.29</version>
</dependency>
jarライブラリを直接ダウンロードする場合
こちらのページからライブラリをダウンロードしてクラスパスに追加します。 最新版は3.0.0でしたがベータ版だったため今回は2.0.29のスタンドアロン版である「pdfbox-app-2.0.29.jar」をダウンロードしました。
サンプルコード
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;
public class Pdf2JpgSample {
public static void main(String[] args) {
try {
PDDocument doc = PDDocument.load(new File("input.pdf"));
PDFRenderer pdfRenderer = new PDFRenderer(doc);
int pageCount = doc.getPages().getCount();
for (int i=0; i<pageCount; i++) {
BufferedImage bim = pdfRenderer.renderImageWithDPI(i, 300, ImageType.RGB);
String jpg = "output_" + Integer.toString(i+1) + ".jpg";
ImageIO.write(bim, "JPEG", new File(jpg));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
複数ページあるPDFでもそれぞれ画像に変換することが可能です。
renderImageWithDPIの第二引数はDPIですのでここの数値を増やせば、解像度もよくなります。色数の少ない文書などであれば200でも十分そうです。
第三引数はImageTypeを指定します。グレースケールでいいのであればここはImageType.GRAYにします。省略した場合はImageType.RGBとなります。
関連記事
PDFファイルのパスワードをパスワードなしの状態で保存しておく方法
パスワードがかかっているPDFファイルをパスワードなしで保存する方法。Chromeを利用したお手軽4ステップの方法とJavaプログラミングで一発保存する方法について解説します。