如何在java中使用iText同时在pdf中的固定位置添加背景色和图像?

如何在java中使用iText同时在pdf中的固定位置添加背景色和图像?,java,itext7,Java,Itext7,我不熟悉itext图书馆。我想在我的pdf中的每个页面的固定位置添加背景色和图像。我试图在工作中使用itext社区提供的以下代码- 这张图片以背景色出现在每一页上,但其他内容如段落和单元格则被隐藏。请帮助我了解如何使用此概念?您为哪些事件注册了事件侦听器?您是否尝试过newContentStreamBefore()而不是newContentStreamAfter()?Image img=newimage(ImageDataFactory.create(Image));img.可标度溶质(100,

我不熟悉itext图书馆。我想在我的pdf中的每个页面的固定位置添加背景色和图像。我试图在工作中使用itext社区提供的以下代码-


这张图片以背景色出现在每一页上,但其他内容如段落和单元格则被隐藏。请帮助我了解如何使用此概念?

您为哪些事件注册了事件侦听器?您是否尝试过
newContentStreamBefore()
而不是
newContentStreamAfter()
Image img=newimage(ImageDataFactory.create(Image));img.可标度溶质(100,50);ImageEventHandler=新的ImageEventHandler(img);pdfDoc.addEventHandler(PdfDocumentEvent.END_页面,处理程序)我正在使用addEventHandler监听。另外,当我使用newContentStreamBefore()时,我得到的是不平衡的保存还原状态运算符
错误。“当我使用newContentStreamBefore()时,我得到的是不平衡的保存还原状态运算符错误。”-这也难怪,您以前没有保存它就执行了
restoreState()
pdfDoc.addEventHandler(PdfDocumentEvent.END_PAGE,handler);
-如果在页面结束后添加内容,则在之前添加的内容上进行绘制。@mkl非常感谢。这解决了我的问题。
public static class ImageEventHandler implements IEventHandler {
        protected Image img;

        public ImageEventHandler(Image img) {
            this.img = img;
        }
        @Override
        public void handleEvent(Event event) {
            PdfDocumentEvent docEvent = (PdfDocumentEvent) event;
            PdfDocument pdfDoc = docEvent.getDocument();
            PdfPage page = docEvent.getPage();
            Rectangle area = page.getPageSize();
            PdfCanvas aboveCanvas = new PdfCanvas(page.newContentStreamAfter(),
                    page.getResources(), pdfDoc)
                    .setStrokeColor(ColorConstants.BLACK)
                    .setFillColor(new DeviceRgb(240, 230, 140))
                    .rectangle(area)
                    .fillStroke()
                    .restoreState();
            new Canvas(aboveCanvas, pdfDoc, area)
                    .add(img);
        }
    }