2014-03-28 2 views
1

하루 종일 오후에 나를 귀찮게했습니다. 나는 많은 문제를 겪었으며 지금은 그것을 극복 할 수 없다.고스트 스크립트를 사용하여 pdf를 jpg로 변환하는 방법

내 코드 :

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(); 
    } 

    } 

내 상자 : 윈도우 7, JDK : 1.7.0_45 (64 비트), GPL 고스트 9.0.4. 내가 ghost4j 0.4.4을 사용하는 경우 , 나는 List<Image> images = renderer.render(document);

에 오류 "net.sf.ghost4j.renderer.RendererException: net.sf.ghost4j.GhostscriptException: Cannot initialize Ghostscript interpreter. Error code is -20"

있어 일부 스레드는 여기가 ghost4j 버전에 관하여 언급하고있다. 그래서 나는 0.4.6으로 바뀌고, error 20은 사라지지만 같은 문장에 Warning: An error occurred while reading an XREF table.이 나온다. 나는이 '진흙'에서 얻을 방법을 알아낼 수 없습니다

,

도와 주셔서 감사합니다 아주 많이.

+0

그것은 이상합니다. 그것은 pdf 파일에서 jpg로 변환하는데 성공합니다. 하지만 오류가있는 java.lang.reflect에서 sun.reflect.GeneratedMethodAccessor4.invoke (알 수없는 소스) sun.reflect.DelegatingMethodAccessorImpl.invoke (알 수없는 소스) \t에서 \t에서 \t을 remain.'java.lang.reflect.InvocationTargetException. Method.invoke (알 수없는 소스) \t .... 발생 원인 : java.lang.OutOfMemoryError : Java 힙 공간'. 뭐가 문제 야. 어떤 충고. – Ron

+1

ghost4j에 묶여 있습니까? PDFBox를 시도하지 않을 경우 : http://stackoverflow.com/questions/7063324/extract-image-from-pdf-using-java. – PeterMmm

+0

그게 대단한 !!!! 나는 그것을 시도 할 것이다. 감사!!! – Ron

답변

1

반환 된 비트 맵은 단순히 메모리가 부족하여 메모리 부족 오류가 발생한다고 가정합니다.

Ghostscript를 명령 줄에서 직접 사용해보십시오. 두 가지 이유가 있습니다. 첫째, 외부 참조에 대한 실제 오류 메시지가 있는지, 즉 PDF 파일이 손상되었다는 것을 알 수 있습니다. 둘째, 셸 명령을 실행하여 GhostScript를 호출하여 메모리 내 비트 맵을 거치지 않고 PDF를 JPEG로 직접 렌더링합니다. 아마도 다른 어떤 것들보다 빠를 것입니다.

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