Android修行手册 - 文档插件Aspose的jar包去除所有限制学习版

这篇具有很好参考价值的文章主要介绍了Android修行手册 - 文档插件Aspose的jar包去除所有限制学习版。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

专栏分享
  • 点击跳转=>Unity3D特效百例
  • 点击跳转=>案例项目实战源码
  • 点击跳转=>游戏脚本-辅助自动化
  • 点击跳转=>Android控件全解手册
  • 点击跳转=>Scratch编程案例

👉关于作者

众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣 !!!
专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎私我,交流群让学习不再孤单

aspose-pdf jar,熬夜再战Android系列,android,jar,学习,bug,android studio

👉实践过程

前段时间研究腾讯的TBS离线,虽然搞出来了,但是在学习过程中也发现了另一个文档内容,也就是Aspose。还不错,也挺全面,不仅支持的文档类型非常多,而且在各种设备上都有对应的sdk。
分为免费版和付费版,其实针对大部分情况免费版完全够用了,只是免费版有水印,也有长度数量限制。我们就学习下整个过程。
aspose-pdf jar,熬夜再战Android系列,android,jar,学习,bug,android studio

😜思路分析

思路?哈哈哈,不写了,相信很多人也不关心这个,只关心最终结果。我们直接看实际操作。
注:不保证所有版本通用。但思路是setLicense方法里的注册方法进行修改。

 com.aspose.pdf.License pdfLicense=new com.aspose.pdf.License();
 com.aspose.words.License wordsLicense=new com.aspose.words.License();
 com.aspose.slides.License slidesLicense = new com.aspose.slides.License();
 com.aspose.cells.License cellsLicense = new com.aspose.cells.License();
 //请点击这里的setLicense方法进入查看源码,不同版本对words 的破解方法名不一样,但道理差不多
 pdfLicense.setLicense("");
 wordsLicense.setLicense("");
 slidesLicense.setLicense("");
 cellsLicense.setLicense("");

😜动手操作

需要IntelliJ IDEA工具,然后创建一个新的java项目。
首先你需要拿到Aspose的jar包,一共四个,这四个包含pdf的,word的,excel的,ppt的。同时必须需要javassist的包。
方式一:你可以自行去官方下载: Aspose ,下载完放到本地lib下,然后利用本地记在的方式
aspose-pdf jar,熬夜再战Android系列,android,jar,学习,bug,android studio

<!--  aspose 文档操作工具包,项目本地lib目录引入  -->
<dependency><!--word-->
     <groupId>com.aspose</groupId>
     <artifactId>aspose-words</artifactId>
     <scope>system</scope>
     <systemPath>${basedir}/lib/aspose-words-21.1.0-jdk17.jar</systemPath>
 </dependency>
 <dependency><!--pdf-->
     <groupId>com.aspose</groupId>
     <artifactId>aspose-pdf</artifactId>
     <scope>system</scope>
     <systemPath>${basedir}/lib/aspose-pdf-21.8.jar</systemPath>
 </dependency>
 <dependency><!--excel-->
     <groupId>com.aspose</groupId>
     <artifactId>aspose-cells</artifactId>
     <scope>system</scope>
     <systemPath>${basedir}/lib/aspose-cells-21.8.jar</systemPath>
 </dependency>
 <dependency><!--pptx-->
     <groupId>com.aspose</groupId>
     <artifactId>aspose-slides</artifactId>
     <scope>system</scope>
     <systemPath>${basedir}/lib/aspose-slides-21.8-jdk16.jar</systemPath>
 </dependency>
 <dependency><!--aspose的jar破解工具-->
     <groupId>org.javassist</groupId>
     <artifactId>javassist</artifactId>
     <version>3.20.0-GA</version>
 </dependency>

方式二:或者利用IntelliJ IDEA动态依赖,依赖方式:
在pom.xml配置aspose的jar包仓库

<repositories>
        <repository>
            <id>AsposeJavaAPI</id>
            <name>Aspose Java API</name>
            <url>https://repository.aspose.com/repo/</url>
        </repository>
    </repositories>

然后分别加对应的依赖并刷新pom文件进行下载:

<dependency>
	<!--word-->
    <groupId>com.aspose</groupId>
    <artifactId>aspose-words</artifactId>
    <version>21.11</version>
	<classifier>jdk17</classifier>
</dependency>
 <dependency>
 	<!--pdf-->
    <groupId>com.aspose</groupId>
    <artifactId>aspose-pdf</artifactId>
    <version>21.8</version>
 </dependency>
 <dependency>
 	<!--excel-->
    <groupId>com.aspose</groupId>
    <artifactId>aspose-cells</artifactId>
    <version>21.8</version>
 </dependency>
 <dependency>
 	<!--pptx-->
    <groupId>com.aspose</groupId>
    <artifactId>aspose-slides</artifactId>
    <version>21.8</version>
	<classifier>jdk16</classifier>
 </dependency>
 <dependency>
 	<!--jar破解工具-->
    <groupId>org.javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.20.0-GA</version>
 </dependency>
slides-21.8-版本学习
//传递的是你的jar本地绝对路径,如“D:\\”
private static void modifyPptJar(String jarName) {
    try {
        //这一步是完整的jar包路径,选择自己解压的jar目录
        ClassPool.getDefault().insertClassPath(jarName);
        CtClass zzZJJClass = ClassPool.getDefault().getCtClass("com.aspose.slides.internal.of.public");
        CtMethod[] methodA = zzZJJClass.getDeclaredMethods();
        for (CtMethod ctMethod : methodA) {
            CtClass[] ps = ctMethod.getParameterTypes();
            if (ps.length == 3 && ctMethod.getName().equals("do")) {
                System.out.println("ps[0].getName==" + ps[0].getName());
                ctMethod.setBody("{}");
            }
        }
        //这一步就是将破译完的代码放在桌面上
        zzZJJClass.writeFile(Desktop);
    } catch (Exception e) {
        System.out.println("错误==" + e);
    }
}
words-21.11版本学习
//传递的是你的jar本地绝对路径,如“D:\\”
private static void crackAsposeWordsJar(String jarName){
        try {
            //这一步是完整的jar包路径,选择自己解压的jar目录
            ClassPool.getDefault().insertClassPath(jarName);
            //获取指定的class文件对象
            CtClass zzZJJClass = 				ClassPool.getDefault().getCtClass("com.aspose.words.zzXDb");
            //从class对象中解析获取指定的方法
            CtMethod[] methodA = zzZJJClass.getDeclaredMethods("zzY0J");
            //遍历重载的方法
            for (CtMethod ctMethod : methodA) {
                CtClass[] ps = ctMethod.getParameterTypes();
                if (ctMethod.getName().equals("zzY0J")) {
                    System.out.println("ps[0].getName==" + ps[0].getName());
                    //替换指定方法的方法体
                    ctMethod.setBody("{this.zzZ3l = new java.util.Date(Long.MAX_VALUE);this.zzWSL = com.aspose.words.zzYeQ.zzXgr;zzWiV = this;}");
                }
            }
            //这一步就是将破译完的代码放在桌面上
            zzZJJClass.writeFile(Desktop);
            //获取指定的class文件对象
            CtClass zzZJJClassB = ClassPool.getDefault().getCtClass("com.aspose.words.zzYKk");
            //从class对象中解析获取指定的方法
            CtMethod methodB = zzZJJClassB.getDeclaredMethod("zzWy3");
            //替换指定方法的方法体
            methodB.setBody("{return 256;}");
            //这一步就是将破译完的代码放在桌面上
            zzZJJClassB.writeFile(Desktop);
        } catch (Exception e) {
            System.out.println("错误==" + e);
        }
    }
cells-21.8版本学习
//传递的是你的jar本地绝对路径,如“D:\\”
public static void crackAsposeCells(String JarPath) throws NotFoundException,CannotCompileException, IOException {
    // 这个是得到反编译的池
    ClassPool pool = ClassPool.getDefault();
    // 取得需要反编译的jar文件,设定路径
    pool.insertClassPath(JarPath);
    CtClass ctClass = pool.get("com.aspose.cells.License");
    CtMethod method_isLicenseSet = ctClass.getDeclaredMethod("isLicenseSet");
    method_isLicenseSet.setBody("return true;");
    CtMethod method_setLicense = ctClass.getDeclaredMethod("setLicense");
    method_setLicense.setBody("{    a = new com.aspose.cells.License();\n" +
            "    com.aspose.cells.zbkl.a();}");
    CtMethod methodL = ctClass.getDeclaredMethod("l");
    methodL.setBody("return new java.util.Date(Long.MAX_VALUE);");

    ctClass.writeFile(Desktop);
}
pdf-21.8版本学习
//传递的是你的jar本地绝对路径,如“D:\\”
private static void crackAsposePdfJar(String jarName) {
    try {
        ClassPool.getDefault().insertClassPath(jarName);
        CtClass ctClass = ClassPool.getDefault().getCtClass("com.aspose.pdf.ADocument");
        CtMethod[] declaredMethods = ctClass.getDeclaredMethods();
        int num = 0;
        for (int i = 0; i < declaredMethods.length; i++) {
            if (num == 2) {
                break;
            }
            CtMethod method = declaredMethods[i];
            CtClass[] ps = method.getParameterTypes();
            if (ps.length == 2
                    && method.getName().equals("lI")
                    && ps[0].getName().equals("com.aspose.pdf.ADocument")
                    && ps[1].getName().equals("int")) {
                //源码ADocument类的这个方法限制页数:
                // static boolean lI(ADocument var0, int var1) {
                //        return !lb() && !lj() && !var0.lt() && var1 > 4;
                //    }
                // 最多只能转换4页,处理返回false,无限制页数
                System.out.println(method.getReturnType());
                System.out.println(ps[1].getName());
                method.setBody("{return false;}");
                num = 1;
            }
            if (ps.length == 0 && method.getName().equals("lt")) {
                // 水印处理
                method.setBody("{return true;}");
                num = 2;
            }
        }
        //修改完,把类的输出到指定目录(桌面下)
		ctClass.writeFile(Desktop);
    } catch (NotFoundException e) {
        e.printStackTrace();
    } catch (CannotCompileException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

上面执行完毕之后,会对应的生成新的jar文件,然后利用压缩包打开这个jar文件,找到这俩文件

META-INF/37E3C32D.SF
META-INF/37E3C32D.RSA

如果有则删除,如果没有不用管。接着创建个license.xml的文件放到resources目录下

<License>
    <Data>
        <Products>
            <Product>Aspose.Total for Java</Product>
            <Product>Aspose.Words for Java</Product>
        </Products>
        <EditionType>Enterprise</EditionType>
        <SubscriptionExpiry>20991231</SubscriptionExpiry>
        <LicenseExpiry>20991231</LicenseExpiry>
        <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>
    </Data>
    <Signature>
        sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=
    </Signature>
</License>
FileInputStream fis = new FileInputStream("你存放的license.xml路径");
License license=new License();
license.setLicense(fis);

至此去除了水印和页数限制。

👉其他

📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
aspose-pdf jar,熬夜再战Android系列,android,jar,学习,bug,android studio文章来源地址https://www.toymoban.com/news/detail-542476.html

到了这里,关于Android修行手册 - 文档插件Aspose的jar包去除所有限制学习版的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android修行手册-多路USB外接摄像头

    点击跳转=Unity3D特效百例 点击跳转=案例项目实战源码 点击跳转=游戏脚本-辅助自动化 点击跳转=Android控件全解手册 点击跳转=Scratch编程案例 点击跳转=软考全系列 专注于 Android/Unity 和各种游戏开发技巧,以及 各种资源分享 (网站、工具、素材、源码、游戏等) 有什么需要欢

    2024年02月07日
    浏览(40)
  • Android修行手册 - 使用ViewPager2实现画廊效果

    Unity3D特效百例 案例项目实战源码 Android-Unity实战问题汇总 游戏脚本-辅助自动化 Android控件全解手册 再战Android系列 Scratch编程案例 软考全系列 Unity3D学习专栏 蓝桥系列 ChatGPT和AIGC 专注于 Android/Unity 和各种游戏开发技巧,以及 各种资源分享 (网站、工具、素材、源码、游戏等

    2024年02月22日
    浏览(33)
  • Android修行手册 - 阴影效果的几种实现以及一些特别注意点

    Unity3D特效百例 案例项目实战源码 Android-Unity实战问题汇总 游戏脚本-辅助自动化 Android控件全解手册 再战Android系列 Scratch编程案例 软考全系列 Unity3D学习专栏 蓝桥系列 ChatGPT和AIGC 专注于 Android/Unity 和各种游戏开发技巧,以及 各种资源分享 (网站、工具、素材、源码、游戏等

    2024年04月10日
    浏览(30)
  • Android修行手册-基础优化系列图片篇,ios音视频面试内容

    图片款=(480/480)*400=400 占用内存为300*400*4=480000 那么它占用内存为什么是变化的? Android会先解析图片文件本身的数据格式,然后还原成Bitmap对象,Bitmap的大小就跟上面的计算方式相关联。 再举例1080*452的png图片,图片占用存储空间大小为56kb,内存如图: 上图一目了然,不

    2024年04月27日
    浏览(36)
  • Android修行手册-实现利用POI将图片插入到Excel中(文末送书)

    Unity3D特效百例 案例项目实战源码 Android-Unity实战问题汇总 游戏脚本-辅助自动化 Android控件全解手册 再战Android系列 Scratch编程案例 软考全系列 Unity3D学习专栏 蓝桥系列 ChatGPT和AIGC 专注于 Android/Unity 和各种游戏开发技巧,以及 各种资源分享 (网站、工具、素材、源码、游戏等

    2024年02月05日
    浏览(26)
  • 开发Android原生插件,引入自己打的jar报,编译报 Unsupported class file major version 61

    “Unsupported class file major version 61” 错误的原因是由于你自己大的jar包当时是用的Java 17打包的,因为在 Java 中,每个主要版本都有一个对应的 major version 值。例如,Java 8 的 major version 值为 52,Java 9 的 major version 值为 53,以此类推。Java 17 的 major version 值为 61。 解决这个问题,

    2024年02月09日
    浏览(34)
  • 【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor 引入 | ProductFlavor 参考文档地址 )

    Android Plugin DSL Reference 参考文档 : 文档主页 :  Android Plugin 2.3.0 DSL Reference android 模块配置文档 :  AppExtension - Android Plugin 2.3.0 DSL Reference ProductFlavor 文档 :  ProductFlavor - Android Plugin 2.3.0 DSL Reference 上一篇博客介绍了 Extension 扩展类型 , AppExtension 下文档参考 AppExtension - Android Plug

    2024年02月03日
    浏览(31)
  • 数据截取处理、富文本去除所有标签

    前提:在做项目中有个需求是填写表单后生成一份文档,文档可以编辑、保存。 这部分用富文本处理了,涉及到的逻辑就是对象--富文本标签形式 在给后端传的数据格式再把富文本标签形式--对象形式。 涉及到文字,图片、表格,以及图片表格的标题。  item就是要处理的字

    2024年01月22日
    浏览(31)
  • 借助文档控件Aspose.Words,将 Word DOC/DOCX 转换为 TXT

    在文档处理领域,经常需要将 Word 文档转换为更简单的纯文本格式。无论是出于数据提取、内容分析还是兼容性原因,将 Word(.doc、.docx)文件转换为纯文本(.txt)的能力对于开发人员来说都是一项宝贵的技能。在这篇博文中,我们将探讨如何在 C# 应用程序中将 Word 文档转换

    2024年01月19日
    浏览(39)
  • JS 去除字符串中所有标点符号

    直接上代码了

    2024年02月06日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包