Apache PDFBox将pdf转换为图像

use*_*568 49 pdfbox

有人可以给我一个例子,说明如何使用Apache PDFBox在不同的图像中转换pdf(pdf的每一页一个).提前致谢

Til*_*err 97

1.8.*版本的解决方案:

PDDocument document = PDDocument.loadNonSeq(new File(pdfFilename), null);
List<PDPage> pdPages = document.getDocumentCatalog().getAllPages();
int page = 0;
for (PDPage pdPage : pdPages)
{ 
    ++page;
    BufferedImage bim = pdPage.convertToImage(BufferedImage.TYPE_INT_RGB, 300);
    ImageIOUtil.writeImage(bim, pdfFilename + "-" + page + ".png", 300);
}
document.close();
Run Code Online (Sandbox Code Playgroud)

在构建之前,不要忘记阅读1.8依赖关系页面.

2.0版本的解决方案:

PDDocument document = PDDocument.load(new File(pdfFilename));
PDFRenderer pdfRenderer = new PDFRenderer(document);
for (int page = 0; page < document.getNumberOfPages(); ++page)
{ 
    BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB);

    // suffix in filename will be used as the file format
    ImageIOUtil.writeImage(bim, pdfFilename + "-" + (page+1) + ".png", 300);
}
document.close();
Run Code Online (Sandbox Code Playgroud)

ImageIOUtil类位于单独的下载/工件(pdf-tools)中.在进行构建之前,请阅读2.0依赖关系页面,您将需要额外的带有jbig2图像的PDF文件,用于保存到tiff图像以及读取加密文件.

确保使用您正在使用的任何JDK版本的最新版本,即如果您使用的是jdk8,则不要使用版本1.8.0_5,请使用1.8.0_191或您阅读时的最新版本.早期版本非常慢.

  • 请注意,要在2.0中使用ImageIOUtil,您需要在pdfbox-tools上添加依赖项. (9认同)
  • 好例子!谢谢.但是有两个评论:*在2.0版本中,第五行中缺少`BufferedImage bim =`*请注意,"300"是缩放级别而不是(如我所假设的)dpi值等.在我收到大量的OutOfMemory异常之前我没想过检查API! (2认同)
  • @Aeseir你需要pdfbox工具.加上levigo jbig2解码器和jai_imageio.jar. (2认同)

chr*_*s01 14

我今天用 PdfBox 2.0.15 试过了。

import org.apache.pdfbox.pdmodel.*;
import org.apache.pdfbox.rendering.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;


public static void PDFtoJPG (String in, String out) throws Exception
{
    PDDocument pd = PDDocument.load (new File (in));
    PDFRenderer pr = new PDFRenderer (pd);
    BufferedImage bi = pr.renderImageWithDPI (0, 300);
    ImageIO.write (bi, "JPEG", new File (out)); 
}
Run Code Online (Sandbox Code Playgroud)

  • 就像一种魅力,只是一件事。如果 pdf 文档有多页,请使用: pd.getNumberOfPages() 为每一页执行循环。 (2认同)