当前位置 : 主页 > 网络编程 > 其它编程 >

java如何给pdf加水印_javapdf加水印的方法

来源:互联网 收集:自由互联 发布时间:2023-07-02
本文实例为大家分享了javapdf加水印的具体代码供大家参考具体内容如下引入依赖com.itextpdf.toolxmlworker5.5.10co 本文实例为大家分享了java pdf加水印的具体代码供大家参考具体内容如下 引入
本文实例为大家分享了javapdf加水印的具体代码供大家参考具体内容如下引入依赖com.itextpdf.toolxmlworker5.5.10co

本文实例为大家分享了java pdf加水印的具体代码供大家参考具体内容如下

引入依赖

com.itextpdf.tool

xmlworker

5.5.10

com.itextpdf

itextpdf

5.5.10

‘/static/fonts/SIMYOU.TTF 字体 本机没有的话, 可以百度下载

/**

* pdf 加水印

*

* return

*/

public byte[] pdfAddWaterMark(byte[] byes) {

String fileName UUID.randomUUID().toString() ".pdf";

String courseFile "";

try {

// 第二种获取项目路径 D:\git\daotie\daotie

//生成临时文件 , 读取完删除

File directory new File("");// 参数为空

courseFile directory.getCanonicalPath() "/";

} catch (IOException e) {

e.printStackTrace();

}

byte[] returnBytes null;

// 待加水印的文件

PdfReader reader null;

PdfStamper stamper null;

// ByteArrayOutputStream baos null;

FileOutputStream os null;

try {

reader new PdfReader(byes);

// 加完水印的文件

// baos new ByteArrayOutputStream();

// stamper new PdfStamper(reader, baos);

// 加完水印的文件

os new FileOutputStream(courseFile fileName);

stamper new PdfStamper(reader, os);

int total reader.getNumberOfPages() 1;

PdfContentByte content;

// BaseFont font BaseFont.createFont();

BaseFont basefont BaseFont.createFont("/static/fonts/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

//这里的字体设置比较关键这个设置是支持中文的写法

/*BaseFont base BaseFont.createFont("STSong-Light",

"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);// 使用系统字体*/

/*//设置透明度

PdfGState gs new PdfGState();

gs.setFillOpacity(1f);

gs.setStrokeOpacity(1f);*/

PdfContentByte under;

com.itextpdf.text.Rectangle pageRect null;

// 循环对每页插入水印

for (int i 1; i

pageRect stamper.getReader().getPageSizeWithRotation(i);

// 计算水印X,Y坐标

float x (float) (pageRect.getWidth() / 1.98);

float y (float) (pageRect.getHeight() / 2.8);

// 获得PDF最顶层

under stamper.getOverContent(i);

under.saveState();

// set Transparency

PdfGState gs new PdfGState();

// 设置透明度为0.2

gs.setFillOpacity(1.f);

under.setGState(gs);

under.restoreState();

under.beginText();

under.setFontAndSize(basefont, pageRect.getHeight() / 17);

under.setColorFill(BaseColor.RED);

// 水印文字成45度角倾斜

System.out.println("width" pageRect.getWidth());

System.out.println("height" pageRect.getHeight());

System.out.println("x" x);

System.out.println("y" y);

under.showTextAligned(Element.ALIGN_CENTER, "图片仅供预览不可用于商业用途", x, y, 45);

// 添加水印文字

under.endText();

under.setLineWidth(1f);

under.stroke();

}

// returnBytes baos.toByteArray();

} catch (IOException e) {

e.printStackTrace();

} catch (DocumentException e) {

e.printStackTrace();

} finally {

try {

stamper.close();

if (os ! null) {

os.close();

}

if (reader ! null) {

reader.close();

}

} catch (DocumentException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

上一篇:vuecli添加lessloader
下一篇:没有了
网友评论