Добавление водяных знаков с помощью PDFBox

Я пытаюсь добавить водяной знак в PDF с помощью PDFBox. Мне удалось заставить изображение появляться на каждой странице, но оно теряет прозрачность фона, потому что кажется, что PDJpeg преобразует его в JPG. Возможно, есть способ сделать это с помощью PDXObjectImage.

Вот что я написал до сих пор:

public static void watermarkPDF(PDDocument pdf) throws IOException
{
    // Load watermark
    BufferedImage buffered = ImageIO.read(new File("C:\\PDF_Test\\watermark.png"));
    PDJpeg watermark = new PDJpeg(pdf, buffered);

    // Loop through pages in PDF
    List pages = pdf.getDocumentCatalog().getAllPages();
    Iterator iter = pages.iterator();
    while(iter.hasNext())
    {
        PDPage page = (PDPage)iter.next();

        // Add watermark to individual page
        PDPageContentStream stream = new PDPageContentStream(pdf, page, true, false);
        stream.drawImage(watermark, 100, 0);
        stream.close();
    }

    try 
    {
        pdf.save("C:\\PDF_Test\\watermarktest.pdf");
    } 
    catch (COSVisitorException e) 
    {
        e.printStackTrace();
    }
}
19
задан aosmith 19 January 2012 в 16:50
поделиться