当前位置: 首页 > news >正文

基于Aspose依赖添加自定义文本水印——Word、Pdf、Cell

基于Aspose依赖添加自定义文本水印——Word、Pdf、Cell

  • 所需依赖
  • Word水印
  • Pdf水印——( 注意 pdf 存在找不到字体的问题)
  • Excel水印

所需依赖

    <dependency><groupId>com.aspose</groupId><artifactId>aspose-pdf</artifactId><version>22.11</version></dependency><dependency><groupId>com.aspose</groupId><artifactId>aspose-cells</artifactId><version>22.12</version></dependency><dependency><groupId>com.aspose</groupId><artifactId>aspose-slides</artifactId><version>22.11</version><classifier>jdk16</classifier></dependency><dependency><groupId>com.aspose</groupId><artifactId>aspose-words</artifactId><version>22.12</version><classifier>jdk17</classifier></dependency>

Word水印

// 先获取文件流 (这边先随意读取文件流)
InputStream in =  new FileInputStream("E:/demo/demo.docx");
// 注意document包,每种类型都有一个document
com.aspose.words.Document doc = new com.aspose.words.Document(in);
TextWatermarkOptions textWatermarkOptions = new TextWatermarkOptions();
textWatermarkOptions.setFontFamily("宋体");
textWatermarkOptions.setFontSize(24f);
textWatermarkOptions.setColor(java.awt.Color.RED);
textWatermarkOptions.setLayout(WatermarkLayout.DIAGONAL);
textWatermarkOptions.isSemitrasparent(false);
doc.getWatermark().setText("水印内容",textWatermarkOptions);
ByteArrayOutputStream out = new ByteArrayOutputStream();
doc.save(out, com.aspose.words.SaveFormat.DOCX);
out.close();
// 输出流用于下载
return out.toByteArray();

Pdf水印——( 注意 pdf 存在找不到字体的问题)

// 先获取文件流 (这边先随意读取文件流)
InputStream in =  new FileInputStream("E:/demo/demo.pdf");
// 注意document包,每种类型都有一个document
com.aspose.pdf.Document doc = new com.aspose.pdf.Document(in);
FormattedText formattedText = new FormattedText("水印内容", java.awt.Color.RED, FontStyle.HelveticaBold, EncodingType.Identity_h, true, 24f);
for (Page page : doc.getPages()) {WatermarkArtifact artifact = new WatermarkArtifact();artifact.setText(formattedText);artifact.getTextState().setFont(FontRepository.findFont(getFontName("宋体"),true));artifact.setArtifactHorizontalAlignment(HorizontalAlignment.Center);artifact.setArtifactVerticalAlignment(VerticalAlignment.Center);artifact.setRotation(45); // 设置旋转角度artifact.setOpacity(0.9); // 设置透明度artifact.setBackground (true);page.getArtifacts().add(artifact);
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
doc.save(out, com.aspose.pdf.SaveFormat.Pdf);
out.close();
return out.toByteArray();// 注意 pdf 存在找不到字体的问题 因为字体库是以文件名查找 而不是字体名
private static String getFontName(String font){switch (font.trim().toLowerCase()){case "宋体":return "simsun";case "微软雅黑":return "simhei";default:return font;}
}

Excel水印

// 先获取文件流 (这边先随意读取文件流)
InputStream in =  new FileInputStream("E:/demo/demo.xls");
// 注意document包,每种类型都有一个document
Workbook workbook = new Workbook(in);
for(Object worksheet: workbook.getWorksheets()){Worksheet sheet = (Worksheet) worksheet;int coloums = sheet.getCells().getColumns().getCount();int rows = sheet.getCells().getRows().getCount();com.aspose.cells.Shape wordart = sheet.getShapes().addTextEffect(MsoPresetTextEffect.TEXT_EFFECT_1,"水印内容","宋体",24f,true,false,rows,rows/2,coloums/2,0,100,800);MsoFillFormat wordArtFormat = wordart.getFillFormat();wordArtFormat.setTransparency(0.9);int r= java.awt.Color.getRed();int g= java.awt.Color.getGreen();int b= java.awt.Color.getBlue();wordArtFormat.setForeColor(com.aspose.cells.Color.fromArgb(r,g,b));wordart.setHasLine(false);wordart.setLocked(true);wordart.setLockedProperty(ShapeLockType.SELECTION, true);wordart.setLockedProperty(ShapeLockType.SHAPE_TYPE, true);wordart.setLockedProperty(ShapeLockType.MOVE, true);wordart.setLockedProperty(ShapeLockType.RESIZE, true);wordart.setLockedProperty(ShapeLockType.TEXT, true);
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
workbook.save(out, com.aspose.cells.SaveFormat.XLSX);
out.close();
return out.toByteArray();
http://www.lryc.cn/news/469275.html

相关文章:

  • 【C++】—掌握STL string类:字符串操作的得力助手
  • 【Java笔记】第十四章:异常
  • Python游戏开发超详细(基础理论知识篇)
  • Python开发日记 -- 实现bin文件的签名
  • 微软运用欺骗性策略大规模打击网络钓鱼活动
  • 小程序无法获取头像昵称以及手机号码的深度剖析与解决方案
  • 从0到1,搭建vue3项目
  • Mybatis mapper文件 resultType和resultMap的区别
  • 文件下载漏洞
  • 【Flutter】状态管理:Provider状态管理
  • 来个Oracle一键检查
  • C语言中的分支与循环(中 1)
  • Git_GitLab
  • 如何自定义一个自己的 Spring Boot Starter 组件(从入门到实践)
  • CSS伪元素以及伪类和CSS特性
  • 【论文笔记】Instantaneous Perception of Moving Objects in 3D
  • Segugio:一款针对恶意软件的进程执行跟踪与安全分析工具
  • 互联网系统的微观与宏观架构
  • 数据库、数据仓库、数据湖和数据中台有什么区别
  • vscode配色主题与图标库推荐
  • 深度学习模型入门教程:从基础到应用
  • 数据结构 软考
  • colcon构建ros2功能包时,出现exited with code 2报错的解决方案(bug)
  • 【大模型LLM面试合集】大语言模型架构_位置编码
  • FLINK 分流
  • 从零开始:构建一个高效的开源管理系统——使用 React 和 Ruoyi-Vue-Plus 的实战指南
  • windows下pycharm社区版2024下载与安装(包含新建第一个工程)
  • 重构案例:将纯HTML/JS项目迁移到Webpack
  • 表格编辑demo
  • 企业自建邮件系统选U-Mail ,功能强大、安全稳定