【问题标题】:how to use GhostScript to convert a pdf to jpg如何使用 GhostScript 将 pdf 转换为 jpg
【发布时间】:2025-05-25 14:50:01
【问题描述】:

困扰了我一整天。 我遇到了很多问题,现在我无法克服它们。

我的代码:

  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(64bit),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

List&lt;Image&gt; images = renderer.render(document);

这里的一些帖子提到它是关于 ghost4j 版本的。所以我改成 0.4.6,error 20 消失了,但是Warning: An error occurred while reading an XREF table. 出现在同一个句子里。

我不知道如何摆脱这种“泥泞”,

非常感谢您的帮助。

【问题讨论】:

  • 很奇怪,它成功地将pdf文件转换为jpg文件。但错误仍然存​​在。java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) .... Caused by: java.lang.OutOfMemoryError: Java heap space。有什么问题。任何建议。
  • 你绑定到 ghost4j 了吗?不尝试 PDFBox 时:*.com/questions/7063324/….
  • 太棒了!!!!我会试试看 。谢谢!!!

标签: java ghostscript ghost4j


【解决方案1】:

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

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

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

【讨论】: