Невозможно добавить изображение в PDF с помощью PDFBox - PullRequest
28 голосов
/ 15 декабря 2011

Я пишу Java-приложение, которое создает PDF с нуля, используя библиотеку pdfbox.
Мне нужно разместить изображение jpg на одной из страниц.

Я использую этот код:

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");

Когда я запускаю код, он успешно завершается, но если я открываю сгенерированный файл PDF с помощью Acrobat Reader, страница становится полностью белой, и изображение не помещается в нее.вместо этого правильно размещается на странице.

Любой намек на то, как поместить мое изображение в PDF?

Ответы [ 2 ]

52 голосов
/ 22 декабря 2011

Определенно добавьте страницу в документ. Вы захотите это сделать, но я также заметил, что PDFBox не будет записывать изображение, если вы создадите PDPageContentStream ДО ПЕРЕД PDJpeg. Непонятно, почему это так, но если вы внимательно посмотрите на источник ImageToPDF, это то, что они делают. Создайте PDPageContentStream после PDJpeg, и он волшебным образом работает.

...
PDJpeg img = new PDJpeg(document, in);
PDPageContentStream stream = new PDPageContentStream( doc, page );
...
6 голосов
/ 22 декабря 2011

Похоже, вам не хватает только document.addPage(page) вызова.

См. Также пример класса ImageToPDF в PDFBox для примера кода.

...