1

午後は丸一日悩みました。私は多くの問題に遭遇し、今ではそれらを克服することはできません。

私のコード:

  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<Image> images = renderer.render(document);

ここのいくつかのスレッドは、ghost4j バージョンに関するものであると述べています。だから私は0.4.6に変更し、error 20消えますがWarning: An error occurred while reading an XREF table.、同じ文になります。

この「泥」から抜け出す方法がわかりません。

どうもありがとうございました。

4

1 に答える 1

2

メモリ不足エラーが発生した場合、返されたビットマップは単にメモリに対して大きすぎると思います。

2 つの理由から、コマンド ラインから Ghostscript を直接使用してみてください。1 つ目は、PDF ファイルが破損していることを示す、xref に関する実際のエラー メッセージがあるかどうかを確認できることです。2 つ目は、合理的にシェル コマンドを実行することですGhostScript を呼び出して、メモリ内のビットマップを経由するのではなく、PDF を直接 JPEG にレンダリングします。おそらく他の何よりも高速です。

gswin32c -sDEVICE=jpeg -o out.jpg input.pdf
于 2014-03-28T10:59:39.647 に答える