Java 如何使用PDFBox将背景图像添加到PDF?

Java 如何使用PDFBox将背景图像添加到PDF?,java,pdfbox,Java,Pdfbox,我使用的是JavaPDFBox2.0版。我想知道如何将背景图像添加到pdf中。我在pdfbox.apache.org中找不到任何好的例子对每个页面都这样做,即从0到doc.getNumberOfPages(): 还有另一种更痛苦的方法,使用getContentStreams()从页面获取PDStream对象的迭代器,构建列表,并在开始处插入新流,然后使用setContents()将此PDStream列表重新分配给页面。如果需要,我可以将其添加为替代解决方案。调用PDPageContentStre

我使用的是JavaPDFBox2.0版。我想知道如何将背景图像添加到pdf中。我在pdfbox.apache.org中找不到任何好的例子

对每个页面都这样做,即从0到doc.getNumberOfPages():


还有另一种更痛苦的方法,使用getContentStreams()从页面获取PDStream对象的迭代器,构建列表,并在开始处插入新流,然后使用setContents()将此PDStream列表重新分配给页面。如果需要,我可以将其添加为替代解决方案。

调用
PDPageContentStream.drawImage

val document = PDDocument()
val page = PDPage()
document.addPage(page)
val contentStream = PDPageContentStream(document, page)

val imageBytes = this::class.java.getResourceAsStream("/image.jpg").readAllBytes()
val image = PDImageXObject.createFromByteArray(document, imageBytes, "background")
contentStream.drawImage(image, 0f, 0f, page.mediaBox.width, page.mediaBox.height)

contentStream.close()
page.close()

在我看来,如果还有一个
PDPageContentStream
构造函数将流添加为第一页内容流,那就太好了。@mkl我对构造函数API的添加没有什么好主意。已经有很多构造函数了。我不知道如何添加构造函数API。-可能是一个具有枚举选项集的构造函数,而不是另一个布尔值。请创建一个问题。。。我对改变API持怀疑态度,因为我们即将发布2.0。。。嗯,在写这篇文章时(慢慢醒来),新方法可以与旧方法并行,因此不会破坏任何东西。请创建一个问题-cf。
val document = PDDocument()
val page = PDPage()
document.addPage(page)
val contentStream = PDPageContentStream(document, page)

val imageBytes = this::class.java.getResourceAsStream("/image.jpg").readAllBytes()
val image = PDImageXObject.createFromByteArray(document, imageBytes, "background")
contentStream.drawImage(image, 0f, 0f, page.mediaBox.width, page.mediaBox.height)

contentStream.close()
page.close()