iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java如何实现Excel文件转PDF无水印无限制
  • 775
分享到

Java如何实现Excel文件转PDF无水印无限制

2023-07-02 08:07:54 775人浏览 安东尼
摘要

这篇“Java如何实现excel文件转pdf无水印无限制”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java如何实现Exc

这篇“Java如何实现excel文件转pdf无水印无限制”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java如何实现Excel文件转PDF无水印无限制”文章吧。

一、jar破解

1.项目远程仓库配置

aspose-cells 这个需要配置单独的仓库地址才能下载,不会配置的可以去官网直接下载jar引入项目代码中。

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

2.pom文件引入相关依赖

        <!-- Https://mvnrepository.com/artifact/com.aspose/aspose-cells -->        <dependency>            <groupId>com.aspose</groupId>            <artifactId>aspose-cells</artifactId>            <version>21.8</version>        </dependency>       <dependency>            <groupId>org.javassist</groupId>            <artifactId>javassist</artifactId>            <version>3.20.0-GA</version>        </dependency>

Javassist是一个开源的分析、编辑和创建Java字节码的类库。 

3.代码破解 

import javassist.*; import java.io.*;import java.util.ArrayList;import java.util.Enumeration;import java.util.List;import java.util.jar.JarEntry;import java.util.jar.JarFile;import java.util.jar.JarOutputStream; public class ExcelJarCrack {    public static void main(String[] args) throws Exception {        String jarPath = "C:\\Users\\liuya\\Desktop\\jar\\aspose-cells-21.8.jar";        crack(jarPath);    }     private static void crack(String jarName) throws NotFoundException, CannotCompileException, IOException {        //这一步是完整的jar包路径        ClassPool.getDefault().insertClassPath(jarName);        CtClass LicenseClass = ClassPool.getDefault().getCtClass("com.aspose.cells.License");        CtMethod[] aMethods = LicenseClass.getDeclaredMethods("a");        for (CtMethod aMethod : aMethods) {            CtClass returnType=aMethod.getReturnType();            if(returnType.getName().equals("boolean")){                aMethod.setBody("{return true;}");                break;            }        }        //将文件名命名成备份文件       File file=new File(jarName);       LicenseClass.writeFile(file.getParent());       disposeJar(jarName);    }     private static void disposeJar(String jarName) {        List<String> deletes = new ArrayList<>();        deletes.add("META-INF/37E3C32D.SF");        deletes.add("META-INF/37E3C32D.RSA");        List<String> replaces = new ArrayList<>();        replaces.add("com/aspose/cells/License.class");        File oriFile = new File(jarName);        if (!oriFile.exists()) {            System.out.println("######Not Find File:" + jarName);            return;        }        //将文件名命名成备份文件        String bakJarName = jarName.substring(0, jarName.length() - 3) + "cracked.jar";        try {            //创建文件(根据备份文件并删除部分)            JarFile jarFile = new JarFile(jarName);            JarOutputStream jos = new JarOutputStream(new FileOutputStream(bakJarName));            Enumeration entries = jarFile.entries();            while (entries.hasMoreElements()) {                JarEntry entry = (JarEntry) entries.nextElement();                if (!deletes.contains(entry.getName())) {                    if(replaces.contains(entry.getName())){                        System.out.println("Replace:-------" +entry.getName());                        JarEntry jarEntry = new JarEntry(entry.getName());                        jos.putNextEntry(jarEntry);                        FileInputStream fin = new FileInputStream(oriFile.getParent()+ "/"+entry.getName());                        byte[] bytes = readStream(fin);                        jos.write(bytes, 0, bytes.length);                    }else {                        jos.putNextEntry(entry);                        byte[] bytes = readStream(jarFile.getInputStream(entry));                        jos.write(bytes, 0, bytes.length);                    }                } else {                    System.out.println("Delete:-------" + entry.getName());                }            }            jos.flush();            jos.close();            jarFile.close();        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        } catch (Exception e) {            e.printStackTrace();        }    }      private static byte[] readStream(InputStream inStream) throws Exception {        ByteArrayOutputStream outSteam = new ByteArrayOutputStream();        byte[] buffer = new byte[1024];        int len = -1;        while ((len = inStream.read(buffer)) != -1) {            outSteam.write(buffer, 0, len);        }        outSteam.close();        inStream.close();        return outSteam.toByteArray();    } }

修改为你本机的aspose-cells-21.8.jar路径,然后运行主方法,破解成功后,会再同级文件夹下生成一个aspose-cells-21.8.cracked.jar包,用这个包替换原来的aspose-pdf-21.8.jar包即可。

二、Excel转PDF

1.代码实现

import com.aspose.cells.License;import com.aspose.cells.SaveFORMat;import com.aspose.cells.Workbook; import java.io.FileOutputStream; public class PdfUtils {     public static void main(String[] args) {        excelToPdf("C:\\Users\\liuya\\Desktop\\excel\\test.xlsx");    }         public static void excelToPdf(String excelPath) {        License license = new License();        license.setLicense("C:\\Users\\liuya\\Desktop\\jar\\Aspose.License.xml");        long old = System.currentTimeMillis();        try {            //新建一个pdf文档            String pdfPath=excelPath.substring(0,excelPath.lastIndexOf("."))+".pdf";            //Excel文件数据            Workbook wb = new Workbook(excelPath);            FileOutputStream fileOS = new FileOutputStream(pdfPath);            //保存为pdf文件            wb.save(fileOS, SaveFormat.PDF);            fileOS.close();            //转化用时            long now = System.currentTimeMillis();            System.out.println("EXCEL 转 Pdf 共耗时:" + ((now - old) / 1000.0) + "秒");        } catch (Exception e) {            e.printStackTrace();        }    } }

2.Aspose.License.xml 授权文件

代码如下:

<License>    <Data>        <LicensedTo>Aspose Scotland Team</LicensedTo>        <EmailTo>billy.lundie@aspose.com</EmailTo>        <LicenseType>Developer OEM</LicenseType>        <LicenseNote>Limited to 1 developer, unlimited physical locations</LicenseNote>        <OrderID>140408052324</OrderID>        <UserID>94236</UserID>        <OEM>This is a redistributable license</OEM>        <Products>            <Product>Aspose.Total for Java</Product>        </Products>        <EditionType>Enterprise</EditionType>        <SerialNumber>9a59547c-41f0-428b-ba72-7c4368f151d7</SerialNumber>        <SubscriptionExpiry>20221231</SubscriptionExpiry>        <LicenseVersion>3.0</LicenseVersion>        <LicenseInstructions>http://www.aspose.com/corporate/purchase/license-instructions.aspx</LicenseInstructions>    </Data>    <Signature>FO3PHsblgDt8F59sMT1l1amyi9qk2V6E8dQkIP7LdTjsxDibNEFu1zOinQbqFfKv/ruttvcxoROkc1tUe0DtO6cP1Zf6J0VemgSY8i/LZECTGszRqJVQRZ0MoVnBhuPAJk5eli7fhVcF8hWd3E4XQ3LzfmJCuaj2NEteRi5Hrfg=</Signature></License>

因为jar已破解其核心验证方法,里面的签名可以随便填写,但是格式尽量保持一致,因为验证其他的格式方法还在!

运行成功截图

Java如何实现Excel文件转PDF无水印无限制

Java如何实现Excel文件转PDF无水印无限制

以上就是关于“Java如何实现Excel文件转PDF无水印无限制”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: Java如何实现Excel文件转PDF无水印无限制

本文链接: https://www.lsjlt.com/news/340506.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++ 生态系统中流行库和框架的贡献指南
    作为 c++++ 开发人员,通过遵循以下步骤即可为流行库和框架做出贡献:选择一个项目并熟悉其代码库。在 issue 跟踪器中寻找适合初学者的问题。创建一个新分支,实现修复并添加测试。提交...
    99+
    2024-05-15
    框架 c++ 流行库 git
  • C++ 生态系统中流行库和框架的社区支持情况
    c++++生态系统中流行库和框架的社区支持情况:boost:活跃的社区提供广泛的文档、教程和讨论区,确保持续的维护和更新。qt:庞大的社区提供丰富的文档、示例和论坛,积极参与开发和维护。...
    99+
    2024-05-15
    生态系统 社区支持 c++ overflow 标准库
  • c++中if elseif使用规则
    c++ 中 if-else if 语句的使用规则为:语法:if (条件1) { // 执行代码块 1} else if (条件 2) { // 执行代码块 2}// ...else ...
    99+
    2024-05-15
    c++
  • c++中的继承怎么写
    继承是一种允许类从现有类派生并访问其成员的强大机制。在 c++ 中,继承类型包括:单继承:一个子类从一个基类继承。多继承:一个子类从多个基类继承。层次继承:多个子类从同一个基类继承。多层...
    99+
    2024-05-15
    c++
  • c++中如何使用类和对象掌握目标
    在 c++ 中创建类和对象:使用 class 关键字定义类,包含数据成员和方法。使用对象名称和类名称创建对象。访问权限包括:公有、受保护和私有。数据成员是类的变量,每个对象拥有自己的副本...
    99+
    2024-05-15
    c++
  • c++中优先级是什么意思
    c++ 中的优先级规则:优先级高的操作符先执行,相同优先级的从左到右执行,括号可改变执行顺序。操作符优先级表包含从最高到最低的优先级列表,其中赋值运算符具有最低优先级。通过了解优先级,可...
    99+
    2024-05-15
    c++
  • c++中a+是什么意思
    c++ 中的 a+ 运算符表示自增运算符,用于将变量递增 1 并将结果存储在同一变量中。语法为 a++,用法包括循环和计数器。它可与后置递增运算符 ++a 交换使用,后者在表达式求值后递...
    99+
    2024-05-15
    c++
  • c++中a.b什么意思
    c++kquote>“a.b”表示对象“a”的成员“b”,用于访问对象成员,可用“对象名.成员名”的语法。它还可以用于访问嵌套成员,如“对象名.嵌套成员名.成员名”的语法。 c++...
    99+
    2024-05-15
    c++
  • C++ 并发编程库的优缺点
    c++++ 提供了多种并发编程库,满足不同场景下的需求。线程库 (std::thread) 易于使用但开销大;异步库 (std::async) 可异步执行任务,但 api 复杂;协程库 ...
    99+
    2024-05-15
    c++ 并发编程
  • 如何在 Golang 中备份数据库?
    在 golang 中备份数据库对于保护数据至关重要。可以使用标准库中的 database/sql 包,或第三方包如 github.com/go-sql-driver/mysql。具体步骤...
    99+
    2024-05-15
    golang 数据库备份 mysql git 标准库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作