学习GroupDocs.Redaction的Docx实践
GroupDocsGroupDocs.Redaction
admin 发布于:2025-03-19 16:51:41
阅读:loading
前面在摸索了Aspose For Java的全量产品组件共计23款,闲来无事偶然又发现了在GroupDocs方向又存在一些产品,这些产品基本都是取自于一个又一个的组件,取自所有组件中的一个方向进行汇总,组成一个统一的产品包。本次摸索学习GroupDocs.Redaction产品,经过一些持续的分析和摸索,结合使用反射的形式来调用,也就是说在API的使用前进行一次特殊的代码注册,即可实现授权,全程不需要License之类的xml,或是文档无水印、或是文档页数限制、或是获取内容无限制,等等。
特别说明:只为单纯的学习摸索与自我突破,商业软件请勿直接使用于生产环境(购买商业授权)。
本次实践的是GroupDocs.Redaction for Java的24.9版本(当前最新版本),通过 Java API 编辑私人信息,使用 Java 编校 API 从文档、工作表、演示文稿、PDF 和光栅图像文件中排除或隐藏个人信息和元数据,换句话来说它可以根据规则擦除(抹掉)文档中的特定敏感内容,有效保障文档对外传输过程中的安全,也就是将传说中的数据脱敏换成了文件内容脱敏。相关的 API 为各种流行的文件格式提供可自定义的内容脱敏,支持的文档范围主要是Microsoft Office等格式,比如PDF、Word、Excel、PPT、图片文件(JPG, BMP, PNG, GIF, TIFF)等格式。至于图片格式的脱敏则是使用到了OCR实现的。
以官网提供的Github示例为准,分别从其中挑出几个简单的示例来演示,本次摸索了Word的docx类型文档的实践,详细参考如下:
读入一个Docx文档,① 指定将文档中内容为“John Doe”的替换为“[Client]”、② 将“Redaction”的文本进行正则匹配,匹配后替换为“[Product]”、③ 将“2位数字 + 空白 + 2位数字 + 空白 + 6位数字”的匹配结果转换为颜色背景的方块、④ 删除文档注释、⑤ 擦除元数据编校,参考代码如下:
public class ApplyMultipleRedactions
{
public static void run() throws java.lang.Exception
{
final Redactor redactor = new Redactor(Constants.SAMPLE_DOCX);
try
{
Redaction[] redactionList = new Redaction[]
{
new ExactPhraseRedaction("John Doe", new ReplacementOptions("[Client]")),
new RegexRedaction("[rR]edaction", new ReplacementOptions("[Product]")),
new RegexRedaction("\\d{2}\\s*\\d{2}[^\\d]*\\d{6}", new ReplacementOptions(java.awt.Color.BLUE)),
new DeleteAnnotationRedaction(),
new EraseMetadataRedaction(MetadataFilters.All)
};
RedactorChangeLog result = redactor.apply(redactionList);
if (result.getStatus() != RedactionStatus.Failed)
{
redactor.save();
}
else
{
for (RedactorLogEntry logEntry : result.getRedactionLog())
{
if (logEntry.getResult().getStatus() != RedactionStatus.Applied)
{
System.out.println(logEntry.getRedaction().getClass().getName() + " status is " +
logEntry.getResult().getStatus() + ", details: " + logEntry.getResult().getErrorMessage());
}
}
}
}
finally { redactor.close(); }
}
}
参考模板文件如下:
解析结果如下:
PS:
(1)该组件产品也支持对含密码的文档进行处理;
(2)关于第⑤点的擦除元素据的信息,猜测是文档中藏了一些用于防伪的元素据信息,可以通过API给抹掉,但是此部分的示例代码没有摸索明白,带后续专门实践元素据的产品时再实践吧,相关的类参考备忘一下:MetadataRedaction;
(1)`GroupDocx.xxx`不是开源免费的使用,Github上有示例项目,包含了大量的示例,示例的结果就是生成了一些《Evaluation Warning》警告、水印、内容页数限制、内容文本限制等;
(2)aspose旗下有许多的产品,都是商业付费版本,常见于各种文档格式文件的操作,都需要商业授权使用,也基本都是支持多种编程语言的,如有Java、C++、.NET等等,官网也有多种在线示例;
(3)示例与相关文件下载:《Docx格式文件示例.zip》,注:下载并不包含具体的科学实现部分,只是源文件与示例输出文件;
(4)科学实现分为两种情况,一种是使用反射,另一种是使用License.xml文件;
(5)aspose相关的各个产品组件为独立存在的各个产品,GroupDocs是提取全集产品中的某个功能的集合,提供了一个大类的功能操作,并且统一对外提供API;
(6)本次使用的GroupDocs.Redaction授权方案在以下文件类型中进行了验证:docx、xlsx、pptx、pdf、image等;
点赞
发表评论
评论列表
留言区
- 学习GroupDocs.Assembly的Word模板实践
- 学习GroupDocs.Assembly的Excel模板实践
- 学习GroupDocs.Assembly的PPT模板实践
- 学习GroupDocs.Assembly的其它模板实践
- 学习GroupDocs.Watermark的增加与删除文本水印实践
- 学习GroupDocs.Watermark的增加与删除图片水印实践
- 学习GroupDocs.Redaction的Xlsx实践
- 学习GroupDocs.Redaction的其它文件类型实践
- 学习GroupDocs.Annotation的简单实践
- 学习GroupDocs.Signature的简单实践
- 学习GroupDocs.Conversion的Spring版在线示例
- 学习GroupDocs.Conversion的简单实践
- 学习GroupDocs.Merger的简单实践
- 学习GroupDocs.Parser的简单实践
- 学习GroupDocs.Comparison的Spring版在线示例
- 学习GroupDocs.Comparison的简单实践