学习GroupDocs.Redaction的Xlsx实践
GroupDocsGroupDocs.Redaction
admin 发布于:2025-03-18 16:09:18
阅读: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示例为准,分别从其中挑出几个简单的示例来演示,本次摸索了Excel的Xlsx类型文档的实践,详细参考如下:
(1)读入一个Xlsx文档,指定将Sheet名称为“Customers”页中第【2】列的数据中符合条件为“[a-zA-Z]+@”(邮箱前缀为全部字母且包含@字符)部分的规则替换为固定的字符串“@[email]”,参考代码如下:
public class FilterBySpreadsheetAndColumn
{
public static void run() throws java.lang.Exception
{
final Redactor redactor = new Redactor(Constants.SAMPLE_XLSX);
try
{
CellFilter filter = new CellFilter();
filter.setColumnIndex(1);
filter.setWorkSheetName("Customers");
Pattern expression = Pattern.compile("[a-zA-Z]+@");
RedactorChangeLog result = redactor.apply(new CellColumnRedaction(filter, expression,
new ReplacementOptions("@[email]")));
if (result.getStatus() != RedactionStatus.Failed)
{
SaveOptions so = new SaveOptions();
so.setAddSuffix(true);
so.setRasterizeToPDF(false);
redactor.save(so);
};
}
finally { redactor.close(); }
}
}
参考模板文件如下:
解析结果如下:
(2)读入一个Xlsx文档,对文档的注释(批注)内容进行脱敏,指定将注释中内容的数字替换为固定文本`[redacted]`,参考代码如下:
public class RedactAnnotations
{
public static void run() throws java.lang.Exception
{
final Redactor redactor = new Redactor(Constants.ANNOTATED_XLSX);
try
{
redactor.apply(new AnnotationRedaction("\\d+", "[redacted]"));
SaveOptions tmp0 = new SaveOptions();
tmp0.setAddSuffix(true);
tmp0.setRasterizeToPDF(false);
redactor.save(tmp0);
}
finally { redactor.close(); }
}
}
参考模板文件如下:
解析结果如下:
(3)读入一个Xlsx文档,对文档的注释(批注)内容进行脱敏,指定将匹配到注释进行删除,匹配规则为注释中包含有“use、show、describe”任何一个,参考代码如下:
public class RemoveAnnotations
{
public static void run() throws java.lang.Exception
{
final Redactor redactor = new Redactor(Constants.ANNOTATED_XLSX);
try
{
// Delete all annotations, matching these criteria
redactor.apply(new DeleteAnnotationRedaction("(?im:(use|show|describe))"));
SaveOptions tmp0 = new SaveOptions();
tmp0.setAddSuffix(true);
tmp0.setRasterizeToPDF(false);
// Save the document to "*_Redacted.*" file in original format
redactor.save(tmp0);
}
finally { redactor.close(); }
}
}
参考模板文件如下:
解析结果如下:
PS:该组件产品也支持对含密码的文档进行处理。
(1)`GroupDocx.xxx`不是开源免费的使用,Github上有示例项目,包含了大量的示例,示例的结果就是生成了一些《Evaluation Warning》警告、水印、内容页数限制、内容文本限制等;
(2)aspose旗下有许多的产品,都是商业付费版本,常见于各种文档格式文件的操作,都需要商业授权使用,也基本都是支持多种编程语言的,如有Java、C++、.NET等等,官网也有多种在线示例;
(3)示例与相关文件下载:《Xlsx格式文件示例.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的Docx实践
- 学习GroupDocs.Redaction的其它文件类型实践
- 学习GroupDocs.Annotation的简单实践
- 学习GroupDocs.Signature的简单实践
- 学习GroupDocs.Conversion的Spring版在线示例
- 学习GroupDocs.Conversion的简单实践
- 学习GroupDocs.Merger的简单实践
- 学习GroupDocs.Parser的简单实践
- 学习GroupDocs.Comparison的Spring版在线示例
- 学习GroupDocs.Comparison的简单实践