gpt4 book ai didi

java - 如何使用PDFBox向PDF添加背景图像?

转载 作者:行者123 更新时间:2023-12-01 04:51:53 25 4
gpt4 key购买 nike

我正在使用 Java PDFBox 2.0 版。我想知道如何在 pdf 中添加背景图像。我在 pdfbox.apache.org 中找不到任何好的示例

最佳答案

对每个页面执行此操作,即从 0 到 doc.getNumberOfPages():

    PDPage pdPage = doc.getPage(page);
InputStream oldContentStream = pdPage.getContents();
byte[] ba = IOUtils.toByteArray(oldContentStream);
oldContentStream.close();

// brings a warning because a content stream already exists
PDPageContentStream newContentStream = new PDPageContentStream(doc, pdPage, false, true);

// createFromFile is the easiest way with an image file
// if you already have the image in a BufferedImage,
// call LosslessFactory.createFromImage() instead
PDImageXObject pdImage = PDImageXObject.createFromFile(imagePath, doc);
newContentStream.saveGraphicsState();
newContentStream.drawImage(pdImage, 0, 0);
newContentStream.restoreGraphicsState();
newContentStream.close();

// append the saved existing content stream
PDPageContentStream newContentStream2 = new PDPageContentStream(doc, pdPage, true, true);
newContentStream2.appendRawCommands(ba); // deprecated... needs to be rediscussed among devs
newContentStream2.close();

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

关于java - 如何使用PDFBox向PDF添加背景图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14816112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com