Skip to content

文件水印工具

分包

模块作用备注
watermark-controller水印接口独立部署时,对外提供的接口
watermark-core加水印核心包核心包

支持文件

文件类型本文件类型是否
docdoc
docxdocx
pdfpdf
xlsxls
xlsxxlsx
pptppt
pptxpptx
pngpng
jpgjpg
jpegjpeg
tiftif
bmpbmp
gifgif

使用示例

配置项

启动项 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
  • 参数
参数类型默认值是否必须备注
fileMultipartFile⛔️待加水印文件
textStringSystem.currentTimeMillis()水印文字
fontSizeInteger16水印字体大小
opacityFloat0.15透明度,pdf 类型需要适当调高
degreeFloat-15倾斜角,水平顺时针
xMoveInteger20水印间 x 轴偏移
yMoveInteger10水印间 y 轴偏移
isRepeatBooleantrue是否铺满
colorStringblack颜色,支持 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 示例

getBytes

获取加水印文件

  • 地址: api/tool/kit/watermark/add/getFilePath
  • 请求方式:post
  • 参数
参数类型默认值是否必须备注
fileMultipartFile⛔️待加水印文件
textStringSystem.currentTimeMillis()水印文字
fontSizeInteger16水印字体大小
opacityFloat0.15透明度,pdf 类型需要适当调高
degreeFloat-15倾斜角,水平顺时针
xMoveInteger20水印间 x 轴偏移
yMoveInteger10水印间 y 轴偏移
isRepeatBooleantrue是否铺满
colorStringblack颜色,支持 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 示例

getFilePath

工具模式

  • 链式参数方式
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('输出文件'));