Подтвердить что ты не робот

Невозможно добавить изображение в pdf с помощью PDFBox

Я пишу приложение 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?

4b9b3361

Ответ 1

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

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

Ответ 2

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

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