如何使用GhostScript将pdf转换为jpg

时间:2014-03-28 10:20:35

标签: java ghostscript ghost4j

整天下午困扰着我。 我遇到很多问题,到现在为止我无法克服它们。

我的代码:

  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.出现在同一个句子上。

我无法弄清楚如何摆脱这种'泥',

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

我猜测返回的位图对于内存来说太大了,因为你得到内存不足的错误。

您应该尝试直接从命令行使用Ghostscript有两个原因,首先您将能够看到是否有关于外部参照的真实错误消息,这表明您的PDF文件已损坏,其次您可能会合理地运行一个shell命令,用于调用GhostScript将PDF直接呈现为JPEG,而不是通过内存中的位图。除了其他任何东西,它可能更快。

gswin32c -sDEVICE=jpeg -o out.jpg input.pdf