无法使用 PDFBox 将图像添加到 PDF

2022-09-01 12:44:57

我正在编写一个java应用程序,该应用程序使用pdfbox库从头开始创建pdf。
我需要在其中一个页面中放置一个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");

当我运行代码时,它成功终止,但是如果我使用Acrobat Reader打开生成的pdf文件,页面将完全变白,并且图像不会放置在其中。
相反,文本被正确放置在页面中。

关于如何将我的图像放入PDF中的任何提示?


答案 1

一定要将页面添加到文档中。你会想这样做,但我也注意到,如果你在PDJpeg之前创建PDPageContentStream,PDFBox不会写出图像。这是无法解释为什么会这样,但如果你仔细看看ImageToPDF的来源,那就是他们所做的。在PDJpeg之后创建PDPageContentStream,它神奇地工作。

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

答案 2

看起来你错过了一个电话。document.addPage(page)

另请参阅 PDFBox 中的 ImageToPDF 示例类,了解一些示例代码。


推荐