2011-12-15 2 views
28

저는 pdfbox 라이브러리를 사용하여 처음부터 pdf를 만드는 Java 응용 프로그램을 작성하고 있습니다.
페이지 중 하나에 jpg 이미지를 넣어야합니다. 나는이 코드를 실행하면PDFBox를 사용하여 PDF에 이미지를 추가 할 수 없습니다.

PDDocument document = new PDDocument(); 
PDPage page = new PDPage(PDPage.PAGE_SIZE_A4); 
document.addPage(page); 
PDPageContentStream contentStream = new PDPageContentStream(document, page); 

/* ... */ 
/* code to add some text to the page */ 
/* ... */ 

InputStream in = new FileInputStream(new File("c:/myimg.jpg")); 
PDJpeg img = new PDJpeg(document, in); 
contentStream.drawImage(img, 100, 700); 
contentStream.close(); 
document.save("c:/mydoc.pdf"); 

가 성공적으로 종료,하지만 난 Acrobat Reader를 사용하여 생성 된 PDF 파일을 열 경우, 페이지가 완전히 흰색이며, 이미지가되지 않습니다 :

이 코드를 사용하고 있습니다 그 안에 배치.
대신 텍스트가 페이지에 올바르게 배치됩니다.

내 이미지를 PDF에 저장하는 방법에 대한 힌트가 있습니까?

답변

52

분명히 문서에 페이지를 추가하십시오. PDJpeg 전에 PDPageContentStream을 만들면 PDFBox가 이미지를 쓰지 않는 것으로 나타났습니다. 이유가 무엇인지는 설명 할 수 없지만, ImageToPDF의 근원지를 자세히 살펴보면됩니다. PDPageContentStream을 PDJpeg로 만든 다음 마술처럼 작동합니다.

... 
PDJpeg img = new PDJpeg(document, in); 
PDPageContentStream stream = new PDPageContentStream(doc, page); 
... 
+4

PDPageContentStream이 내 문제를 해결하기 전에 PDJpeg 생성을 이동하는 것은 대단히 감사합니다. –

+1

Dah, 나도 이걸로 싸우고 있었고, 이것으로 해결했습니다, 고마워요. 내 책에있는 버그 같아. 적어도 경고는해야 해! – berry120

+0

나를 구해 줬어! Tnx. 한 시간 동안 내 이미지가 ByteArrayInputStream에서 표시되지 않는 이유를 알아 냈습니다. PDJpeg 및 PDPageContentStream의 순서였습니다 ... –

6

document.addPage(page) 전화가 누락 된 것처럼 보입니다.

일부 샘플 코드는 PDFBox의 ImageToPDF 예제 클래스를 참조하십시오.

+0

페이지가 실제 코드로 문서에 추가되고 해당 코드 행을 붙여 넣는 것을 잊어 버렸습니다. 원래 게시물을 수정하고 있습니다. –

관련 문제