如何使用Java向PDF中的影象新增水印?

2019-10-16 22:25:13

如何使用Java向PDF中的影象新增水印?

註:iText開發環境設定,下載iText7 jar(社群版:http://github.com/itext/itext7/releases/tag/7.0.4 ) ,建立一個工程:java_itext,並將下載的itext7 jar包和slf4j( http://www.slf4j.org/download.html )工具包新增到構建路徑中。專案結構如下圖所示 -

以下是使用Java向PDF中的影象新增水印的程式。

package com.yiibai;

import com.itextpdf.io.image.ImageDataFactory;

import com.itextpdf.kernel.color.DeviceGray;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.xobject.PdfFormXObject;

import com.itextpdf.layout.Canvas;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Image;
import com.itextpdf.layout.property.TextAlignment;

public class AddingToImagesInPDF {
    public static void main(String args[]) throws Exception {
        String file = "addingImageToPDF.pdf";

        // Creating a PdfDocument object
        PdfDocument pdfDoc = new PdfDocument(new PdfWriter(file));

        // Creating a Document object
        Document doc = new Document(pdfDoc);

        // Creating an Image
        Image image = new Image(ImageDataFactory.create("zhonglou.jpg"));
        image.scaleToFit(400, 700);

        // Creating template
        PdfFormXObject template = new PdfFormXObject(
                new Rectangle(image.getImageScaledWidth(), image.getImageScaledHeight()));

        Canvas canvas = new Canvas(template, pdfDoc).add(image);
        String watermark = "Welcome to tw511.com";
        canvas.setFontColor(DeviceGray.RED).showTextAligned(watermark, 100, 160, TextAlignment.CENTER);

        // Adding template to document
        Image image1 = new Image(template);
        doc.add(image1);

        // Closing the document
        doc.close();
        System.out.println("Watermark added successfully..");
    }
}

執行上面範例程式碼,得到以下結果 -

Watermark added successfully..

輸出檔案內容如下所示 -