现在实现一个功能,在设计器中打开报表时解密,保存报表时对报表文件内容AES加密后再保存。
这里需要用到TemplateEncryptProvider扩展。这里特别注意的一个类就com.fr.io.FineEncryptUtils,设计器打开报表时会调用该类的decode方法,保存报表时调用encode方法,这两个方法都会调用我们的扩展类TemplateEncryptProvider的实现,看下FineEncryptUtils源码:
package com.fr.io;
import com.fr.general.CommonIOUtils;
import com.fr.plugin.injectable.PluginModule;
import com.fr.report.fun.TemplateEncryptProvider;
import com.fr.stable.bridge.ObjectHolder;
import com.fr.stable.plugin.ExtraReportClassManagerProvider;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.Iterator;
import java.util.Set;
public class FineEncryptUtils {
public FineEncryptUtils() {
}
public static InputStream encode(InputStream in) {
ExtraReportClassManagerProvider pluginProvider =