2012-06-02 4 views
1

byte array에 pdf를 받고 있습니다. pdf의 첫 번째 페이지를 image으로 변환하고 싶습니다.pdf의 바이트 배열에서 이미지로 pdf의 첫 페이지 가져 오기

PdfReader reader = new PdfReader(input); 
reader.selectPages("1"); 
File file = new File("D:/img1.jpg"); 
BufferedImage pdfImage = ImageIO.read(new ByteArrayInputStream(reader.getPageContent(1))); 
ImageIO.write(pdfImage, "jpg", file); 

이 나에게 ImageIO.write가 호출되는 예외를 제공 하 - 다음과 같이

나는 com.lowagie.text.pdf에서 제공하는 클래스를 피곤했다? reader.getPageContent (1)에 의해 반환 된 바이트 배열의 크기를 가져 오면 1000+ 값을 얻습니다. 저를 혼란스럽게하는 이유는 예외를 얻는 것입니다.

예외 -

java.lang.IllegalArgumentException: image == null! 

은 나뿐만 아니라 iText를 시도하지만 소용했다.

PDF 파일의 바이트 배열에서 첫 번째 페이지 (이미지로 첫 번째 페이지)의 이미지를 얻는 방법을 제안 해 주시겠습니까?

+0

'getPageContent'가 이미지를 반환하지 않는다고 생각합니다. 이 라이브러리가 그러한 기능을 제공한다고 확신합니까? –

+0

@Banthar -'getPageContent'는'ByteArrayInputStream'을 얻기 위해 전달한'byte 배열 '을 반환 한 다음'Image'를 작성하려고합니다. – JHS

답변

1

다른 사람들에게도 도움이되도록 제 질문에 답해주세요. 약간의 연구 끝에 나는 그것을 발견하고 해결책을 얻었다.

이것 좀보세요. link

PDFDocumentReader document = new PDFDocumentReader(<byteArraOfThePDF>); 
PageDetail pageDetail = new PageDetail("<docIDanything>", "", <pagenumber>, ""); 
ResourceDetail det = document.getPageAsImage(pageDetail); 

BufferedImage image = ImageIO.read(new ByteArrayInputStream(det.getBytes())); 
File file = new File("d:/img2.jpg"); 
ImageIO.write(image, "jpg", file); 
+2

do-pdf가 실제로 PDFBox를 기반으로 작성되었음을 알고 계십니까? – MaxArt

1

내가 아는 한, iText에서는 (비슷한 문제를 검색하는 동안 적어도 얼마 전에) iText를 사용할 수 없습니다.

하지만 당신은 PDFToImageApache PDFBox에서 사용할 수 있습니다 : 그것은 쉽게

String [] args = new String[7]; 
args[0] = "-startPage"; 
args[1] = "1"; 
args[2] = "-endPage"; 
args[3] = "1"; 
args[4] = "-outputPrefix"; 
args[5] = "MyJpgFile"; 
args[6] = "MyPdfFile"; 

PDFToImage.main(args); 

이 래퍼를 작성. 아마도 이와 같은 래퍼는 PDFBox에서 사용할 수 있습니다.