Appearance
文件水印工具
分包
模块 | 作用 | 备注 |
---|---|---|
watermark-controller | 水印接口 | 独立部署时,对外提供的接口 |
watermark-core | 加水印核心包 | 核心包 |
支持文件
文件类型 | 本文件类型 | 是否 |
---|---|---|
doc | doc | ✅ |
docx | docx | ✅ |
✅ | ||
xls | xls | ✅ |
xlsx | xlsx | ✅ |
ppt | ppt | ✅ |
pptx | pptx | ✅ |
png | png | ✅ |
jpg | jpg | ✅ |
jpeg | jpeg | ✅ |
tif | tif | ✅ |
bmp | bmp | ✅ |
gif | gif | ✅ |
使用示例
配置项
启动项 application.yml 中增加
yml
# 水印配置
watermark:
# 原文件地址,上传文件存储地址
sourcePath: 'public/watermark/source/'
# 目标文件地址,生成的水印文件磁盘地址,二进制字节不生成水印文件
targetPath: 'public/watermark/target/'
# 水印文件网络地址
fileUrl: 'http://127.0.0.1:81/'
接口模式
获取加水印文件字节数组
- 地址: api/tool/kit/watermark/add/getBytes
- 请求方式:post
- 参数
参数 | 类型 | 默认值 | 是否必须 | 备注 |
---|---|---|---|---|
file | MultipartFile | ⛔️ | ✅ | 待加水印文件 |
text | String | System.currentTimeMillis() | 水印文字 | |
fontSize | Integer | 16 | 水印字体大小 | |
opacity | Float | 0.15 | 透明度,pdf 类型需要适当调高 | |
degree | Float | -15 | 倾斜角,水平顺时针 | |
xMove | Integer | 20 | 水印间 x 轴偏移 | |
yMove | Integer | 10 | 水印间 y 轴偏移 | |
isRepeat | Boolean | true | 是否铺满 | |
color | String | black | 颜色,支持 black、#000000、0,0,0 3 种模式 |
请求示例 java
java
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("file","设备.xls",
RequestBody.create(MediaType.parse("application/octet-stream"),
new File("/Users/demo/Desktop/设备.xls")))
.addFormDataPart("text","postman")
.addFormDataPart("color","#00ff00")
.build();
Request request = new Request.Builder()
.url("http://127.0.0.1:13099/api/tool/kit/watermark/add/getBytes")
.method("POST", body)
.build();
Response response = client.newCall(request).execute();
响应
json
{
"code": 200,
"msg": "Success",
"data": "UEsDBBQACAgIAHVHe1kAAAAAAAAAAAAAAAATAA......"
}
postman 示例
获取加水印文件
- 地址: api/tool/kit/watermark/add/getFilePath
- 请求方式:post
- 参数
参数 | 类型 | 默认值 | 是否必须 | 备注 |
---|---|---|---|---|
file | MultipartFile | ⛔️ | ✅ | 待加水印文件 |
text | String | System.currentTimeMillis() | 水印文字 | |
fontSize | Integer | 16 | 水印字体大小 | |
opacity | Float | 0.15 | 透明度,pdf 类型需要适当调高 | |
degree | Float | -15 | 倾斜角,水平顺时针 | |
xMove | Integer | 20 | 水印间 x 轴偏移 | |
yMove | Integer | 10 | 水印间 y 轴偏移 | |
isRepeat | Boolean | true | 是否铺满 | |
color | String | black | 颜色,支持 black、#000000、0,0,0 3 种模式 |
请求示例 java
java
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("file","设备.xls",
RequestBody.create(MediaType.parse("application/octet-stream"),
new File("/Users/demo/Desktop/设备.xls")))
.addFormDataPart("text","postman")
.addFormDataPart("color","#00ff00")
.build();
Request request = new Request.Builder()
.url("http://127.0.0.1:13099/api/tool/kit/watermark/add/getFilePath")
.method("POST", body)
.build();
Response response = client.newCall(request).execute();
响应
json
{
"code": 200,
"msg": "Success",
"data": {
"path": "/Users/demo/code/svn/ztgis-boot/trunk/code_unit/code/back/ztgis-java-boot/ztgis-plugin-modules/ztgis-tool-kit/public/watermark/target/2024-11-27/设备_20241127085632_w.xls",
"url": "http://127.0.0.1:81/public/watermark/target/2024-11-27/设备_20241127085632_w.xls"
}
}
postman 示例
工具模式
- 链式参数方式
java
//需要加水印的文件
SrcFile srcFile = SrcFile.builder().file(new File('需加水印文件')).build();
//水印图片
ImageFile imageFile = ImageFile
.builder()
.text(param.getText())
.build();
//水印参数
WatermarkParam buildParam = WatermarkParam.builder()
.file(srcFile)
.imageFile(imageFile)
.degree("倾角,顺时针")
.opacity("透明度")
.fontSize("字体大小")
.color("字体颜色")
.repeat("是否铺满")
.xMove("水印X轴位移")
.yMove("水印Y轴位移")
.build();
//加水印,返回数组
WatermarkUtils.addWatermark(buildParam);
//加水印,水印写入文件
WatermarkUtils.addWatermark(buildParam, new File('输出文件'));
- 普通参数方式
java
//水印参数
SimpleWatermarkParam simpleParam = new SimpleWatermarkParam();
simpleParam.setSourceFile(new File('需加水印文件'));
simpleParam.setText('水印文字');
simpleParam.setColor("字体颜色");
simpleParam.setFontSize("字体大小");
simpleParam.setOpacity("透明度");
simpleParam.setDegree("倾角,顺时针");
simpleParam.setXMove("水印X轴位移");
simpleParam.setYMove("水印Y轴位移");
simpleParam.setIsRepeat("是否铺满");
//加水印,返回字节数组
WatermarkUtils.addWatermark(simpleParam);
//加水印,水印写入文件
WatermarkUtils.addWatermark(simpleParam, new File('输出文件'));