본문 바로가기

iText 워터마크 넣기

by 뚜벅초 2016. 11. 24.

iText5 PDF문서에 워터마크 넣기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
    manipulatePdf("PDF만든경로""워터마크가 포함된 PDF를 저장할 ", watermark);    
 
    public void manipulatePdf(String src, String dest, String imgsrc) throws IOException, DocumentException {
        PdfReader reader = new PdfReader(src);
        int n = reader.getNumberOfPages();
        PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
        
        // image watermark
        Image img = Image.getInstance(imgsrc);
        float w = img.getScaledWidth();
        float h = img.getScaledHeight();
        
        // transparency
        PdfGState gs1 = new PdfGState();
        gs1.setFillOpacity(0.5f);
        
        // properties
        PdfContentByte over;
        Rectangle pagesize;
        float x, y;
        
        // loop over every page
        for (int i = 1; i <= n; i++) {
            pagesize = reader.getPageSizeWithRotation(i);
            x = (pagesize.getLeft() + pagesize.getRight()) / 2;
            y = (pagesize.getTop() + pagesize.getBottom()) / 2;
            over = stamper.getOverContent(i);
            over.saveState();
            over.setGState(gs1);
            over.addImage(img, w, 00, h, x - (w / 2), y - (h / 2));
            over.restoreState();
        }
        stamper.close();
        reader.close();
    }
cs


PDF를 작성 하면서 워터마크를 넣고싶었지만, 

그러면 표의 배경색에 워터마크가 가려지는 일이(?) 생겨서, PDF생성 후 다시 워터마크를 넣는 작업을 진행함

*경로가 두 개인 이유는, 작성된 PDF(String src)가 열고 있어서, 새로운 경로를 정해줌.


참고사이트:

http://developers.itextpdf.com/examples/itext-action-second-edition/chapter-6