学习GroupDocs.Watermark的简单实践
GroupDocs
admin 发布于:2025-02-24 15:48:16
阅读:loading
前面在摸索了Aspose For Java的全量产品组件共计23款,闲来无事偶然又发现了在GroupDocs方向又存在一些产品,这些产品基本都是取自于一个又一个的组件,取自所有组件中的一个方向进行汇总,组成一个统一的产品包。本次摸索学习GroupDocs.Watermark产品,经过一些持续的分析和摸索,结合使用反射的形式来调用,也就是说在API的使用前进行一次特殊的代码注册,即可实现授权,全程不需要License之类的xml,或是文档无水印、或是文档页数限制、或是获取内容无限制,等等。
特别说明:只为单纯的学习摸索与自我突破,商业软件请勿直接使用于生产环境(购买商业授权)。
本次实践的是GroupDocs.Watermark for Java的24.11版本(当前最新版本),在 Java 个项目中轻松实现文档水印,借助 GroupDocs.Watermark 库为文件增加、修改、删除、查询水印的功能,增强Java个应用程序。相关的 API 为各种流行的文件格式提供可自定义的水印,支持的文档范围主要是Microsoft Office和OpenDocument格式,比如PDF、Word、Excel、PPT等,参考如下图所示:
通俗的来说,GroupDocs.Watermark for Java 为水印提供了大量的自定义选项,参考如下:
(1)通过 Java 为文件添加水印:使用 GroupDocs.Watermark for Java 保护您的商业文档。将文本、图像、图表或电子邮件附件作为水印添加到各种文件格式;
(2)根据特定需求自定义水印:GroupDocs.Watermark for Java 为水印提供了大量的自定义选项。调整文本样式(粗体、斜体、字体)和图像属性(旋转等),根据您的特定目标定制水印流程;
(3)广泛格式支持:GroupDocs.Watermark for Java 可与多种文件格式无缝集成,包括:PDF、Microsoft Office(Word、Excel、Excel、PowerPoint)、图像(JPEG、PNG、GIF、BMP)、Visio 图表和电子邮件。增强不同文件类型的文档安全性;
(4)轻松的水印搜索和管理:高效管理文档中的现有水印。找到特定的水印,修改其文本、样式或图像,或将其完全删除。GroupDocs.Watermark for Java 简化了水印工作流程;
以官网提供的Github示例为准,分别从其中挑出几个简单的示例来演示,比如有:“增加文本水印”、“删除文档水印”等。
演示给 5 种不同类型的文档增加文本水印,分别是:PDF、Xlsx、Docx、Png、Vsdx,如果某个文档中包含多页内容,也是支持每个页面均增加水印的,参考示例代码如下:
public static void main(String[] args) throws Exception {
RegisterWatermark.registerWatermark2411();
addWatermarker("document.pdf");
addWatermarker("document.xlsx");
addWatermarker("image.png");
addWatermarker("source.docx");
addWatermarker("presentation.pptx");
addWatermarker("diagram.vsdx");
}
private static void addWatermarker(String fileName) throws Exception {
File folder = new File(WatermarkerCreate.class.getResource("/").getFile());
Watermarker watermarker = new Watermarker(new File(folder , fileName).getPath());
TextWatermark watermark = new TextWatermark("Hello World", new Font("Arial", 36));
watermark.setForegroundColor(Color.getBlue());
watermark.setHorizontalAlignment(HorizontalAlignment.Center);
watermark.setVerticalAlignment(VerticalAlignment.Center);
watermark.setOpacity(0.6);
watermarker.add(watermark);
watermarker.save(new File(folder , "add_" + fileName).getPath());
watermarker.close();
}
示例输出结果参考如下:
(PDF文档两页均存在水印)
(Docx文件每一页均有水印)
演示给 5 种不同类型的文档删除文本水印,分别是:PDF、Xlsx、Docx、Png、Vsdx,如果某个文档中包含多页内容,也是支持每个页面均删除水印的,注意了Png格式的图片中的水印并不是文本水印,所以示例未能删除,参考示例代码如下:
public class WatermarkerRemove {
public static void main(String[] args) throws Exception {
RegisterWatermark.registerWatermark2411();
removeWatermarker("add_document.pdf");
removeWatermarker("add_document.xlsx");
removeWatermarker("add_image.png");
removeWatermarker("add_source.docx");
removeWatermarker("add_diagram.vsdx");
}
public static void removeWatermarker(String fileName) {
File folder = new File(WatermarkerCreate.class.getResource("/").getFile());
Watermarker watermarker = new Watermarker(new File(folder , fileName).getPath());
PossibleWatermarkCollection watermarks = watermarker.search(new TextSearchCriteria(Pattern.compile("Hello World")));
for (int i = watermarks.getCount() - 1; i >= 0; i--) {
watermarks.removeAt(i);
}
watermarker.save(new File(folder , "remove_" + fileName).getPath());
watermarker.close();
}
}
注意:PDF文档为只读类型,但是也可以删除其中的水印。
(1)`GroupDocx.xxx`不是开源免费的使用,Github上有示例项目,包含了大量的示例,示例的结果就是生成了一些《Evaluation Warning》警告、水印、内容页数限制、内容文本限制等;
(2)aspose旗下有许多的产品,都是商业付费版本,常见于各种文档格式文件的操作,都需要商业授权使用,也基本都是支持多种编程语言的,如有Java、C++、.NET等等,官网也有多种在线示例;
(3)示例与相关文件下载:《示例文件.zip》,注:下载并不包含具体的科学实现部分,只是源文件与示例输出文件;
(4)科学实现分为两种情况,一种是使用反射,另一种是使用License.xml文件;
(5)aspose相关的各个产品组件为独立存在的各个产品,GroupDocs是提取全集产品中的某个功能的集合,提供了一个大类的功能操作,并且统一对外提供API;
点赞