Java实现对PDF文件添加水印
目录
Java实现对PDF文件添加水印导入依赖工具方法效果最近项目中遇到对PDF添加水印,实现有多种,采取的是itextpdf
导入依赖
<!-- 对PDF文件的操作 --><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13.1</version></dependency><!-- PDF文件 字体 防止中文乱码 --><dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version></dependency>
工具方法
/*** @description*给PDF文档添加水印* @author TianwYam* @date 4月28日上午10:00:05*/public static void addWaterMark(String pdfFilePath, String outputFilePath) {try {// 原PDF文件PdfReader reader = new PdfReader(pdfFilePath);// 输出的PDF文件内容PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(outputFilePath));// 字体 来源于 itext-asian JAR包BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", true);PdfGState gs = new PdfGState(); // 设置透明度gs.setFillOpacity(0.3f); gs.setStrokeOpacity(0.4f);int totalPage = reader.getNumberOfPages() + 1;for (int i = 1; i < totalPage; i++) {// 内容上层//PdfContentByte content = stamper.getOverContent(i);// 内容下层PdfContentByte content = stamper.getUnderContent(i);content.beginText();// 字体添加透明度content.setGState(gs);// 添加字体大小等content.setFontAndSize(baseFont, 50);// 添加范围content.setTextMatrix(70, 200);// 具体位置 内容 旋转多少度 共360度content.showTextAligned(Element.ALIGN_CENTER, "机密文件", 300, 350, 300);content.showTextAligned(Element.ALIGN_TOP, "机密文件", 100, 100, 5);content.showTextAligned(Element.ALIGN_BOTTOM, "机密文件", 400, 400, 75);content.endText();}// 关闭stamper.close();reader.close();} catch (Exception e) {e.printStackTrace();}}
主类调用
public static void main(String[] args) {addWaterMark("E:\\javaWork\\test.pdf", "E:\\javaWork\\test2.pdf");}
效果
原PDF文件
添加水印后的PDF文件
水印可以打印多个,并且位置、大小、旋转度数都可以根据实际情况调整
刚开始写微信公众号,请多多关注,欢迎,多谢!
微信公众号:《Java学习积累》
请关注一下,多谢!!!