很久没在CSDN发博客了,最近遇到个需求找资料很痛苦,记录下希望能帮到有需要的朋友
apose-cell-22.6无水印包下载
链接:https://pan.baidu.com/s/10ve6w77G4yl8u0T5oIgeLg?pwd=yyb4
提取码:yyb4
①、借鉴其他博客对aspose-words 21.5水印去除思路
原文博客:https://blog.csdn.net/ren7wei/article/details/116852876
搜索License类,可直接new出来单击进去
//结论:我们只需要在第一次转换pdf前,通过反射将zzZDQ.zzYAC的值修改掉,这样水印即可消除
public static void xmlToPdf(File xmlFile, File pdfFile) throws Exception {
Document document=new Document(xmlFile.getAbsolutePath());
document.save(pdfFile.getAbsolutePath());
}
public static void main(String[] args) throws Exception {
Class<?> aClass = Class.forName("com.aspose.words.zzZDQ");
Field zzYAC = aClass.getDeclaredField("zzYAC");
zzYAC.setAccessible(true);
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(zzYAC, zzYAC.getModifiers() & ~Modifier.FINAL);
zzYAC.set(null,new byte[]{76, 73, 67, 69, 78, 83, 69, 68});
File xmlFile=new File("D:\\tmp\\wd.xml");
File pdfFile=new File("D:\\tmp\\wd.pdf");
XmlToPdfUtils.xmlToPdf(xmlFile,pdfFile);
}
② ok,上面是其他博客的破解思路,下载自己需要的jar包并引入,我这里需要的aspose-cells-22.6.jar(用到其中的自定义纸张尺寸功能,后面会说,需要的可借鉴)
//一切就绪,开整
//这一步是调用授权方法
public void test() throws Exception {
InputStream is = this.getClass().getClassLoader().getResourceAsStream("license.xml");
License license = new License();
license.setLicense(is);
Workbook wb = new Workbook("C:\\upload\\out1.xlsx");// 原始excel路径
//因为第一个sheet是模板,所以不转换
Worksheet ws=wb.getWorksheets().get(1);
ws.getPageSetup().customPaperSize(6.22,2.2);
wb.save("out1.pdf");
//modifyExcelJar();
}
按照第一步的思路,我们先点击进去License这个类中
OK,已经找到了哪里进行了授权,接下来替换
//引入javassist
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.28.0-GA</version>
</dependency>
//反编译和破解
//这一步是完整的jar包路径,建议做好备份
ClassPool.getDefault().insertClassPath("D:\\\\JDK1.6\\\\lib\\\\aspose-cells-22.6.jar");
CtClass zzZJJClass = ClassPool.getDefault().getCtClass("com.aspose.cells.k65");
CtMethod zzZ4h = zzZJJClass.getDeclaredMethod("a");
zzZ4h.setBody("{return 1;}");
//这一步就是将破译完的代码放在指定文件夹
zzZJJClass.writeFile("D:\\\\JDK1.6\\");
这一步之后,你会在指定文件夹发现一个com文件夹,
将你使用的jar包拷贝到桌面上解压,然后将刚才的com文件夹复制到解压后的文件夹里面进行覆盖,然后将解压后的META-INF文件夹中 *.RSA 和 *.SF 文件删除后,重新打包,我是直接压缩工具打开jar包删除了这两个文件,并替换了新生成的k65.class文件。
大功告成,此时去项目中引入破解后的jar包,水印已经消失。
本方案仅仅用以学习和研究为目的,商用请支持正版。
excel转换为pdf自定义尺寸方法:
Workbook workbook=new Workbook("f:\\book.xlsx");
Worksheet ws=workbook.getWorksheets().get(0);
//需要自行将cm转换为inches
ws.getPageSetup().customPaperSize(1.97,5.9);
workbook.save("out1.pdf");