最近项目上要用到word转图片,找了很多控件,最后发现还是aspose最好用,美中不足的是这个控件要钱!!!!本着这是学习学习的心态,当然是免费最好啦,于是就开始了漫漫长征路。看了很多文章,也看了源码,现在把过程都记录一下免得忘记了~
先将一下破解再讲使用吧~
破解方法(此方法仅供学习不可用于商业用途)
1.下载aspose原版
可以去官网下载,附上百度云链接可以直接用这个版本(原版未破解附上百度网盘)
链接:https://pan.baidu.com/s/1xXLs3Yg6zTjLkKUUC9WJ_Q
提取码:rkfd
ps:不介意有水印的这一步就可以跳去使用那里看了哦
2.下载一个JByteMod
这个工具可以看jar的源码,我看了很多个aspose很多个版本,15版的验证方法很简单就是RSA的公钥私钥解密,所以15版网上的破解版本比较多,我就不多说啦,18版的验证方法就修改了,而且每个版本虽然方法是一样的,但是方法名不同,所以就需要用到这个工具看下究竟是哪里调用了验证方法。
3.下载一个javassist工具类,其实就是一个jar包导入项目调起可用,我刚开始看了好久不知道怎么用因为要跟JByteMod那样在cmd里面运行?
网上都可以下载的,为了方便各位跟我一样一头雾水的人,同样献上百度云链接
链接:https://pan.baidu.com/s/1IvcbmqkPKE59mr8OhB-CEA
提取码:xzge
以上准备工作完毕,开始漫漫长征路
4.打开JByteMod
找Lincense.class
于是我们找到zzzLD.class
于是我们可以直接修改结果呀!不管他过程验证出来怎样,最后我说你通过了你就得通过。
这里就要用到javassist工具啦,生成一个新类去替换了这个zzZLD.class
然后我们继续看代码,通过上面验证之后的 zzYPN和zzYPM会使用在这两个函数
这个俩函数有一个条件zzYRK.zzYEL() == 4096,在不知道这个东西到底是干嘛的情况下,我决定直接给这个zzYRK.zzYEL()赋值为256?
于是这两个要修改的东西都可以用
至此就会生成两个类

生成的图片
java 使用的代码
public static boolean getLicense() {
boolean result = false;
try {
//Test.class.getClassLoader().getResourceAsStream("license.xml");
//InputStream is = main.class.getClassLoader().getResourceAsStream("license.xml");
String license =
"<License>\n" +
" <Data>\n" +
" <Products>\n" +
" <Product>Aspose.Total for Java</Product>\n" +
" <Product>Aspose.Words for Java</Product>\n" +
" </Products>\n" +
" <EditionType>Enterprise</EditionType>\n" +
" <SubscriptionExpiry>20991231</SubscriptionExpiry>\n" +
" <LicenseExpiry>20991231</LicenseExpiry>\n" +
" <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>\n" +
" </Data>\n" +
" <Signature>111</Signature>\n" +
"</License>";
InputStream is = new ByteArrayInputStream(license.getBytes("UTF-8"));
License asposeLic = new License();
asposeLic.setLicense(is);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public static void doc2pdf(String inPath, String outPath) {
if (!getLicense()) {
return;
}
try {
long old = System.currentTimeMillis();
File file = new File(outPath); // 新建一个空白pdf文档
FileOutputStream os = new FileOutputStream(file);
Document doc = new Document(inPath); // Address是将要被转化的word文档
doc.save(os, SaveFormat.PNG);
long now = System.currentTimeMillis();
System.out.println("共耗时:" + ((now - old) / 1000.0) + "秒"); // 转化用时
} catch (Exception e) {
e.printStackTrace();
}
}
结束,再申明一次,此方法只能用于学习,不能用于商业用途。
附上破解好的jar链接
破解版aspose:https://download.youkuaiyun.com/download/qq_42834405/11463812