iText : How do I insert background image in the same document to be flushed to response

前端 未结 3 1547
野趣味
野趣味 2021-01-12 21:19

I am creating a PDF and writing the stream in response. Before writing in the stream, I want to add a background image as watermark in all the pages so that PDF document flu

3条回答
  •  情深已故
    2021-01-12 21:50

    I solved this using Bruno's first (recommended) approach.

    1) Create a page event helper with an onEndPage event:

    class PDFBackground extends PdfPageEventHelper {
    
        @Override
        void onEndPage(PdfWriter writer, Document document) {
            Image background = Image.getInstance("myimage.png");
            // This scales the image to the page,
            // use the image's width & height if you don't want to scale.
            float width = document.getPageSize().getWidth();
            float height = document.getPageSize().getHeight();
            writer.getDirectContentUnder()
                    .addImage(background, width, 0, 0, height, 0, 0);
        }
    
    }
    

    2) When creating your writer, register your page event helper:

    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));
    writer.setPageEvent(new PDFBackground());
    

提交回复
热议问题