add watermark to pdf file

首先需要的jar包为iText-2.1.2u.jar、iTextAsian.jar。

import java.awt.Color;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfGState;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfStamper;

public class TestWaterPrint {
public static void main(String[]args) throws DocumentException, IOException{
//The pdf file to be output
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File("E:/abc.pdf")));  
Calendar cal = Calendar.getInstance();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM -dd hh:mm:ss");    
//Watermark the pdf file first and then output
setWatermark(bos,"E:/pdf source file.pdf",format.format(cal.getTime()) + " Download user :" + "test user", 16); 
}

public static void setWatermark(BufferedOutputStream bos, String input,
String waterMarkName, int permission)
throws DocumentException, IOException {
PdfReader reader = new PdfReader(input);
PdfStamper stamper = new PdfStamper(reader , bos);
int total = reader.getNumberOfPages() + 1;
PdfContentByte content;
BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
BaseFont.EMBEDDED);
PdfGState gs = new PdfGState();
for (int i = 1; i < total; i++) {
content = stamper.getOverContent(i);//Add a watermark above the
content//content = stamper.getUnderContent(i);//Add a watermark below the content
gs.setFillOpacity(0.2f);
// content.setGState(gs);
content .beginText();
content.setColorFill(Color.LIGHT_GRAY);
content.setFontAndSize(base, 50);
content.setTextMatrix(70, 200);
content.showTextAligned(Element.ALIGN_CENTER, "Internal company files, please be careful!" , 300,
350, 55);
content.setColorFill(Color.BLACK);
content.setFontAndSize(base, 8);
content.showTextAligned(Element.ALIGN_CENTER, "Download time: "
+ waterMarkName + "", 300, 10, 0);
content.endText();


}
stamper.close();
}
}

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326914727&siteId=291194637