java给文件加水印工具类
提示:以下是本篇文章正文内容,下面案例可供参考
二、使用步骤
1.引入库
代码如下(
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itext-asian</artifactId> <version>5.2.0</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.4.3</version> </dependency>
2.代码
代码如下(示例):
package com.zscat.mallplus.utils;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.*;
import java.io.FileOutputStream;
import java.io.IOException;
/*
import com.fr.third.com.lowagie.text.DocumentException;
import com.fr.third.com.lowagie.text.Element;
import com.fr.third.com.lowagie.text.Rectangle;
import com.fr.third.com.lowagie.text.pdf.BaseFont;
import com.fr.third.com.lowagie.text.pdf.PdfContentByte;
import com.fr.third.com.lowagie.text.pdf.PdfGState;
import com.fr.third.com.lowagie.text.pdf.PdfReader;
import com.fr.third.com.lowagie.text.pdf.PdfStamper;
*/
/**
* @Author lyc
* @Date 2021/9/29 15:49
* @Version 1.0
*/
public class WaterMarkUtilPDF {
/**
* @param inputFile 原文件路径
* @param outputFile 水印文件路径
* @Param waterMarkName 水印内容
*/
public static boolean setWater (String inputFile, String outputFile, String waterMarkName) throws Exception {
/* PdfReader pdfReader = new PdfReader("D:/测试项目/TFT-LCD.pdf");
// Get the PdfStamper object
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileOutputStream("f:/22.pdf"));
addWatermark(pdfStamper, "HK RUISKY");*/
PdfReader pdfReader = new PdfReader(inputFile);
// Get the PdfStamper object
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileOutputStream(outputFile));
boolean result = addWatermark(pdfStamper, waterMarkName);
pdfStamper.close();
if (result) {
return true;
}else {
return false;
}
}
private static boolean addWatermark(PdfStamper pdfStamper, String waterMarkName) {
boolean flag = false;
PdfContentByte content = null;
BaseFont base = null;
Rectangle pageRect = null;
PdfGState gs = new PdfGState();
try {
// 设置字体
base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.EMBEDDED);
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
if (base == null || pdfStamper == null) {
return flag;
}
// 设置透明度为0.4
gs.setFillOpacity(0.4f);
gs.setStrokeOpacity(0.4f);
int toPage = pdfStamper.getReader().getNumberOfPages();
for (int i = 1; i <= toPage; i++) {
pageRect = pdfStamper.getReader().getPageSizeWithRotation(i);
// 计算水印X,Y坐标
float x = pageRect.getWidth() / 2;
float y = pageRect.getHeight() / 2;
//获得PDF最顶层
content = pdfStamper.getOverContent(i);
content.saveState();
// set Transparency
content.setGState(gs);
content.beginText();
// content.setColorFill(Color.GRAY);
content.setFontAndSize(base, 80);
// 水印文字成45度角倾斜
content.showTextAligned(Element.ALIGN_CENTER, waterMarkName, x,y, 315);
content.endText();
flag = true;
}
} catch (Exception ex) {
flag = false;
ex.printStackTrace();
} finally {
content = null;
base = null;
pageRect = null;
}
return flag;
}
}
该处使用的url网络请求的数据。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。