整天下午困扰着我。 我遇到很多问题,到现在为止我无法克服它们。
我的代码:
public void pdf2jpg(){
try {
File pdfFile =new File("c://tmp//1.pdf");
PDFDocument document = new PDFDocument();
document.load(pdfFile);
SimpleRenderer renderer = new SimpleRenderer();
renderer.setResolution(300);
List<Image> images = renderer.render(document);
for (int i = 0; i < images.size(); i++) {
Image img= images.get(i);
ImageIO.write((RenderedImage)img, "jpg", new File(i+".jpg"));
}
} catch (IOException | RendererException | DocumentException e) {
e.printStackTrace();
}
}
我的框:Windows 7,jdk:1.7.0_45(64位),GPL ghostscript 9.0.4。
当我使用ghost4j 0.4.4时,我收到错误“net.sf.ghost4j.renderer.RendererException: net.sf.ghost4j.GhostscriptException: Cannot initialize Ghostscript interpreter. Error code is -20
”
on List<Image> images = renderer.render(document);
这里的一些帖子提到它是关于ghost4j版本的。所以我改为0.4.6,error 20
消失了,但Warning: An error occurred while reading an XREF table.
出现在同一个句子上。
我无法弄清楚如何摆脱这种'泥',
非常感谢你的帮助。
答案 0 :(得分:1)
我猜测返回的位图对于内存来说太大了,因为你得到内存不足的错误。
您应该尝试直接从命令行使用Ghostscript有两个原因,首先您将能够看到是否有关于外部参照的真实错误消息,这表明您的PDF文件已损坏,其次您可能会合理地运行一个shell命令,用于调用GhostScript将PDF直接呈现为JPEG,而不是通过内存中的位图。除了其他任何东西,它可能更快。
gswin32c -sDEVICE=jpeg -o out.jpg input.pdf