JAVA 给PDF添加水印
接上一篇,利用ureport生成了PDF文件,现在给PDF加上水印或者在某一位置加上图片
废话不多说,直接上代码
1.定位
WatermarkPosition.java
package org.springboot.demo.util;public enum WatermarkPosition {CENTER("center"),TOP("top"),RIGHT("right"),BOTTOM("bottom"),LEFT("left"),LEFT_BOTTOM("left_bottom"),RIGHT_BOTTOM("right_bottom");private String value;public String getValue() {return this.value;}private WatermarkPosition(String value) {this.value = value;}
}
2.定义图片宽度、高度等
PdfImageWatermark.java
package org.springboot.demo.util;public class PdfImageWatermark {private String imagePath;private int imgWidth;private int imgHeight;private float opacity;private WatermarkPosition position;private float x;private float y;private boolean watermark;private boolean append;PdfImageWatermark(String imagePath, int imgWidth, int imgHeight, float opacity, WatermarkPosition position, float x, float y, boolean watermark, boolean append) {this.imagePath = imagePath;this.imgWidth = imgWidth;this.imgHeight = imgHeight;this.opacity = opacity;this.position = position;this.x = x;this.y = y;this.watermark = watermark;this.append = append;}public static PdfImageWatermarkBuilder builder() {return new PdfImageWatermarkBuilder();}public String getImagePath() {return this.imagePath;}public int getImgWidth() {return this.imgWidth;}public int getImgHeight() {return this.imgHeight;}public float getOpacity() {return this.opacity;}public WatermarkPosition getPosition() {return this.position;}public float getX() {return this.x;}public float getY() {return this.y;}public boolean iswatermark() {return this.watermark;}public boolean isAppend() {return this.append;}public void setImagePath(String imagePath) {this.imagePath = imagePath;}public void setImgWidth(int imgWidth) {this.imgWidth = imgWidth;}public void setImgHeight(int imgHeight) {this.imgHeight = imgHeight;}public void setOpacity(float opacity) {this.opacity = opacity;}public void setPosition(WatermarkPosition position) {this.position = position;}public void setX(float x) {this.x = x;}public void setY(float y) {this.y = y;}public void setwatermark(boolean watermark) {this.watermark = watermark;}public void setAppend(boolean append) {this.append = append;}public static class PdfImageWatermarkBuilder {private String imagePath;private int imgWidth;private int imgHeight;private float opacity;private WatermarkPosition position;private float x;private float y;private boolean watermark;private boolean append;PdfImageWatermarkBuilder() {}public PdfImageWatermarkBuilder imagePath(String imagePath) {this.imagePath = imagePath;return this;}public PdfImageWatermarkBuilder imgWidth(int imgWidth) {this.imgWidth = imgWidth;return this;}public PdfImageWatermarkBuilder imgHeight(int imgHeight) {this.imgHeight = imgHeight;return this;}public PdfImageWatermarkBuilder opacity(float opacity) {this.opacity = opacity;return this;}public PdfImageWatermarkBuilder position(WatermarkPosition position) {this.position = position;return this;}public PdfImageWatermarkBuilder x(float x) {this.x = x;return this;}public PdfImageWatermarkBuilder y(float y) {this.y = y;return this;}public PdfImageWatermarkBuilder watermark(boolean watermark) {this.watermark = watermark;return this;}public PdfImageWatermarkBuilder append(boolean append) {this.append = append;return this;}public PdfImageWatermark build() {return new PdfImageWatermark(this.imagePath, this.imgWidth, this.imgHeight, this.opacity, this.position, this.x, this.y, this.watermark, this.append);}}
}
3.添加水印
PdfImageUtil.java
package org.springboot.demo.util;import org.springboot.demo.entity.FileDO;public class PdfImageUtil {//在PDF插入图片/**** @param fileDO* @param filePath* @param page 可以指定某一页盖水印*/public static void InsertImage(FileDO fileDO, String filePath, int page){String sourcePath = filePath;String targetPath = filePath;PdfImageWatermark pdfImageWatermark = PdfImageWatermark.builder().imagePath(fileDO.getImgFileName()).imgWidth(fileDO.getImgWidth()).imgHeight(fileDO.getImgHeight()).opacity(fileDO.getOpacity()).x(fileDO.getX()).y(fileDO.getY()).append(true).watermark(fileDO.isWatermark()).build();try {PdfUtils.addImageWatermark(sourcePath,targetPath,pdfImageWatermark,page);} catch (Exception e) {e.printStackTrace();}}
}
4.测试类
test.java
import org.springboot.demo.entity.FileDO;
import org.springboot.demo.util.PdfImageUtil;public class test {public static void main(String args[]){String filePath="D:/2.pdf";//PDF文件String imgpath="D:/1.png";//图片文件FileDO fileDO=new FileDO();fileDO.setImgFileName(imgpath);fileDO.setImgHeight(300);fileDO.setImgWidth(300);fileDO.setWatermark(true);fileDO.setX(200);fileDO.setY(400);fileDO.setOpacity(0.8f);int page=1;//setWatermark(true)会每页都改水印、如果设置为false,则需要指定某一页page添加水印PdfImageUtil.InsertImage(fileDO,filePath,page);}
}
5.运行结果:

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
