我是靠谱客的博主 谨慎仙人掌,最近开发中收集的这篇文章主要介绍java给pdf加水印_java pdf添加水印,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

spring boot pdf添加水印以下代码仅供参考

导入jar包(pdfbox)

org.apache.pdfbox

pdfbox

2.0.12

代码如下

package com.watermark.utils;

import org.apache.pdfbox.pdmodel.PDDocument;

import org.apache.pdfbox.pdmodel.PDPage;

import org.apache.pdfbox.pdmodel.PDPageContentStream;

import org.apache.pdfbox.pdmodel.PDResources;

import org.apache.pdfbox.pdmodel.font.PDFont;

import org.apache.pdfbox.pdmodel.font.PDType0Font;

import org.apache.pdfbox.pdmodel.graphics.state.PDExtendedGraphicsState;

import org.apache.pdfbox.util.Matrix;

import org.springframework.util.ResourceUtils;

import java.io.File;

import java.io.InputStream;

public class PDFWatermark {

public static void main(String[] args) {

try {

watermark(new File("E:\xx.pdf"));

} catch (Exception e) {

e.printStackTrace();

}

}

private static void watermark(File file) throws Exception {

//创建新pdf文件

File tmpPDF = new File("E:\demo_" + file.getName());

//打开pdf文件

PDDocument doc = PDDocument.load(file);

doc.setAllSecurityToBeRemoved(true);

//遍历pdf所有页

for (PDPage page : doc.getPages()) {

PDPageContentStream cs = new PDPageContentStream(doc, page, PDPageContentStream.AppendMode.APPEND, true, true);

String ts = "测试水印测试";

//引入字体文件 解决中文汉字乱码问题

PDFont font = PDType0Font.load(doc, new FileInputStream("E:\微软雅黑.ttf"), true);

float fontSize = 30;

PDResources resources = page.getResources();

PDExtendedGraphicsState r0 = new PDExtendedGraphicsState();

// 水印透明度

r0.setNonStrokingAlphaConstant(0.2f);

r0.setAlphaSourceFlag(true);

cs.setGraphicsStateParameters(r0);

//水印颜色

cs.setNonStrokingColor(200, 0, 0);

cs.beginText();

cs.setFont(font, fontSize);

//根据水印文字大小长度计算横向坐标需要渲染几次水印

float h = ts.length() * fontSize;

for (int i = 0; i <= 10; i++) {

// 获取旋转实例

cs.setTextMatrix(Matrix.getRotateInstance(-150, i * 100, 0));

cs.showText(ts);

for (int j = 0; j < 20; j++) {

cs.setTextMatrix(Matrix.getRotateInstance(-150, i * 100, j * h));

cs.showText(ts);

}

}

cs.endText();

cs.restoreGraphicsState();

cs.close();

}

doc.save(tmpPDF);

}

}

最终效果

6221d0a53e97

image

最后

以上就是谨慎仙人掌为你收集整理的java给pdf加水印_java pdf添加水印的全部内容,希望文章能够帮你解决java给pdf加水印_java pdf添加水印所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部