java使用aspose将word,excel,ppt转pdf

2023-10-27

1,测试环境springboot,jdk1,8,aspose-cells-8.5.2.jar 用于转换xls,aspose-words-16.8.0-jdk16.jar 用于转换doc

2,所用jar,签名百度网盘地址 

链接:https://pan.baidu.com/s/14zwqI4d5-WweXKki8LyI-A 
提取码:0kgc 

3,下载jar加入本地maven仓库

控制台执行,命令如下:(将install-file值改成自己存放jar的路径)

mvn install:install-file "-Dfile=aspose-cells-8.5.2.jar" "-DgroupId=com.aspose" "-DartifactId=aspose-cells" "-Dversion=8.5.2" "-Dpackaging=jar"

mvn install:install-file "-Dfile=D:\Program Files\lib\aspose-words-16.8.0-jdk16.jar" "-DgroupId=com.aspose" "-DartifactId=aspose-words" "-Dversion=16.8.0" "-Dpackaging=jar"

4,引入jar

<!-- xls转pdf -->
        <dependency>
            <groupId>com.aspose</groupId>
            <artifactId>aspose-cells</artifactId>
            <version>8.5.2</version>
        </dependency>


        <!-- word转pdf -->
        <dependency>
            <groupId>com.aspose</groupId>
            <artifactId>aspose-words</artifactId>
            <version>16.8.0</version>
        </dependency>

5,将下载的license.xml放置项目resources下

6,上代码

package com.zhw.common.utils;


import com.aspose.cells.PdfSaveOptions;
import com.aspose.cells.Workbook;
import com.aspose.words.Document;
import com.aspose.words.License;
import com.aspose.words.SaveFormat;

import java.io.FileInputStream;
import java.io.FileOutputStream;

/**
 * 文件转换PDF支持doc,docx,xls,xlsx
 */
public class PdfUtils {


    /**
     * 文件转换PDF
     * @param original_file_path 源文件路径
     * @param transform_file_path 输出路径
     * @param fileType 转换类型 0:doc转pdf,1:xls转pdf
     * @return
     */
    public static boolean fileToPdf(String original_file_path, String transform_file_path,String fileType) {
        try (
                FileInputStream in = new FileInputStream(original_file_path);
                FileOutputStream out = new FileOutputStream(transform_file_path)
        ) {
            //设置签名,若不设置签名转换后的pdf会有水印
            if(!getLicense(fileType)){
                System.out.println("设置签名失败");
                return false;
            }
            if(fileType.equals("0")){
                //为doc
                //获取doc对象
                Document doc = new Document(in);
                //输出
                doc.save(out, SaveFormat.PDF);
            }else {
                //为xls
                //生成工作表
                Workbook workbook = new Workbook(in);
                PdfSaveOptions saveOptions = new PdfSaveOptions();
                //重点,设置所有列放在一页里,会自动适应宽度
                saveOptions.setAllColumnsInOnePagePerSheet(true);
                //输出
                workbook.save(out,saveOptions);
            }
            System.out.println("转换成功");
            return true;

        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }


    /**
     * 设置签名,若不设置签名,转换后的pdf将会有水印
     *
     * @return
     */
    public static boolean getLicense(String type) {
        boolean res = false;
        ClassLoader loader = Thread.currentThread().getContextClassLoader();
        try {
            FileInputStream in = new FileInputStream(loader.getResource("license.xml").getPath());
            if(type.equals("0")){
                License aposeLic = new License();
                aposeLic.setLicense(in);
                res = true;
            }else {
                com.aspose.cells.License license = new com.aspose.cells.License();
                license.setLicense(in);
                res = true;
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return res;
    }


    public static void pptToPdf(String from, String to) throws Exception {
        long start = System.currentTimeMillis();
        // 验证License
        if (!getLicense()) {
            return;
        }

        File file = new File(to);// 输出pdf路径
        Presentation pres = new Presentation(from);//输入ppt路径
        FileOutputStream fileOS = new FileOutputStream(file);
        //IFontsManager fontsManager = pres.getFontsManager();
        pres.save(fileOS, SaveFormat.Pdf);
        fileOS.close();
        System.out.println("转换完成工耗时" + (System.currentTimeMillis() - start) + "毫秒");
    }

    public static void main(String[] args) {
        //测试
        //源文件路径
        String original_file_path = "C:\\Users\\Administrator\\Desktop\\1611640020354生活垃圾科室统计.xlsx";
        //输出路径
        String transform_file_path = "C:\\Users\\Administrator\\Desktop\\1.pdf";
        boolean b = fileToPdf(original_file_path,transform_file_path,"1");
        System.out.println("转换成功?"+b);
    }


}


 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java使用aspose将word,excel,ppt转pdf 的相关文章

  • 如何在 JPA 中使用枚举

    我有一个电影租赁系统的现有数据库 每部电影都有一个评级属性 在 SQL 中 他们使用约束来限制该属性的允许值 CONSTRAINT film rating check CHECK rating text text OR rating tex
  • 不同的 JDK 更新会产生不同的 Java 字节码吗?

    假设场景 我有一个项目 其源合规性级别指定为 1 5 现在 我使用两种不同的 JDK 编译此项目 首先使用 JDK 6 Update 7 然后使用 JDK 6 Update 20 这两个不同的 JDK 是否会生成不同的 Java 字节代码
  • 使用 xuggle 将 mp3 转换为 wav 出现异常

    我正在尝试将 mp3 转换为 wav 代码在这里 String mp3 F work pic2talk38512 mp3 String wav F work pic2talk38512 wav TranscodeAudioAndVideo
  • 警告:跳过条目,因为它不是绝对 URI。 NetBeans 中的 GlassFish

    我成功安装了 GlassFish 但是 当我启动服务器时 我收到两条警告消息 警告 跳过条目 因为它不是绝对 URI 那是关于什么的 Launching GlassFish on Felix platform Aug 09 2014 10
  • 总结二维数组

    鉴于我当前的程序 我希望它在用户输入所有值后计算每列和每行的总和 我当前的代码似乎只是将数组的值加倍 这不是我想要做的 例如 如果用户输入具有以下值 1 2 3 2 3 4 3 4 5 的 3x3 矩阵 则看起来就像我在下面的程序中对其进行
  • Spring 术语中命令、表单、业务和实体对象之间的区别?

    我试图理解这些对象在松散耦合系统方面的差异 业务对象与实体对象相同吗 我可以使用 MVC 中的业务或实体对象作为我的命令对象吗 命令对象与表单对象相同吗 只是寻找 Spring 术语和用法中对象类型的说明 我在 stackoverflow
  • 将多个视频文件合并到一个文件中

    我有多个以相同帧速率和分辨率录制的视频 我想将两个视频合并为一个视频 因此结果文件将是大视频 我正在使用 MP4 解析器 api 并使用下面的代码 Movie countVideo new MovieCreator build Channe
  • 使用 CrudRepository 进行自定义查询

    我想使用 CrudRepository 自定义查询 这是我的代码 Repository public interface CustomerRepository extends CrudRepository
  • java.lang.IllegalArgumentException:addChild:子名称“/”不唯一

    java lang IllegalArgumentException addChild 子名称 不唯一 通过在 tomcat webapps 文件夹中启用和禁用 saml 单点登录来替换现有 war 文件时遇到此问题 我正在使用 apach
  • 如何告诉 cxf 将包装类型保留在方法中?

    在我的 WSDL 中我有一个操作
  • Akka 和 spring 配置

    我正在尝试将 akka 与 spring 结合起来 但没有成功 基本上 我的应用程序似乎不习惯读取 akka 模式 具有架构的 service context xml 的一部分
  • java 1.8下无法启动eclipse

    java 1 8 升级后我无法启动 eclipse 附上错误截图 这是我的 eclipse 配置设置 我该如何解决 startup plugins org eclipse equinox launcher 1 3 0 v20120522 1
  • 链表中的虚拟节点

    问 什么时候使用它们 作业问题 列表中的第一个和最后一个节点 有时用作列表中的第一个和最后一个节点 从未用作列表中的第一个和最后一个节点 维基百科说 哨兵节点是与链接一起使用的专门指定的节点 列表和树作为遍历路径终止符 哨兵节点的作用是 不
  • Storm Spout 未收到 Ack

    我已经开始使用storm 所以我使用创建简单的拓扑本教程 https github com nathanmarz storm wiki Tutorial 当我运行我的拓扑时LocalCluster一切看起来都很好 我的问题是我没有得到元组的
  • 如何告诉 IntelliJ 使用 Java 1.6 JDK 启动 gradle?

    一个简单的问题 即使经过几个小时的尝试和搜索 我也无法弄清楚 我安装了 Java 6 和 7 如何告诉 IntelliJ 使用 JDK 版本 1 6 启动 Gradle 构建 无论我做什么 IntelliJ 都会以以下方式开始我的 grad
  • Checkstyle - 方法按修饰符排序

    是否可以添加到 checkstyle 规则以按修饰符对类中的方法进行排序 我的意思是开头的公共方法和最后的私有方法 MethodsOrderCheck做这个工作 检查文档 https www qulice com qulice checks
  • 如何配置嵌入式 MongoDB 以在 Spring Boot 应用程序中进行集成测试?

    我有一个相当简单的 Spring Boot 应用程序 它公开一个小型 REST API 并从 MongoDB 实例检索数据 对 MongoDB 实例的查询通过基于 Spring Data 的存储库 下面的一些关键代码 Main applic
  • Java 相当于 Python 的 urllib.urlencode(基于 HashMap 的 UrlEncode)

    From https stackoverflow com questions 2018026 should i use urllib or urllib2 2018103 2018103 Java 中 Python 的 urllib url
  • 如何在 Servlet 中打开弹出窗口,然后重定向页面

    我想在调用 servlet 时打开一个弹出窗口 然后想将 servlet 重定向到某个 jsp page 这就是我所做的 protected void doGet HttpServletRequest request HttpServlet
  • Java,如何管理线程读取socket(websocket)?

    我有一个 WebSocket 服务器 我的服务器创建一个新线程来处理新连接 该线程一直处于活动状态 直到 websocket 中断 我的问题 对于 1 000 000 个连接 我需要 1 000 000 个线程 我如何通过一个线程处理多个

随机推荐

  • 简单了解IPv4编址

    目录 一 IPv4地址 二 进制转换 三 有类IPv4 四 无类IPv4 4 1 子网掩码 4 2 地址规划 4 3 VLSM可变长子网掩码 五 私有IPv4地址 六 IPv4报文格式 七 IP地址解析 一 IPv4地址 IPv4地址由 网
  • Vue2项目中使用高德地图自定义(Marker)标记点和创建(MassMarks)海量标记点

    前言 本篇文章就是单独分享一下在Vue2项目中如何自定义创建marker标记点和针对要创建庞大数量标记点时所采用的API 能够快速创建数量庞大的marker 不至于在浏览器渲染时产生卡顿的现象 需要了解如何在Vue2项目中引入高德地图请参照
  • [c++/java]递归系列

    本系列是根据个人的做题总结出来 或许有不对之处 望给位大佬指出 同时这个系列也是长期的一个系列 每遇到一个优秀的递归题目 我都会添加上去 基本递归思路 递归之结束条件 个人认为在写递归之前应该首先考虑什么时候递归结束 或者是递归收敛于什么条
  • 有一台电脑怎么挣钱_游戏搬砖就能躺着挣钱?“我就一台电脑,要求不高月入过万就好”...

    随着网络游戏的日益普及 游戏搬砖 已经和代练 陪玩一样 成为很多玩家专职 兼职的工作 对于这样的一份职业 有人不屑 有人眼浅 更多人在看了有搬砖党换一套海景房的新闻 觉得这个职业就是个可以一夜暴富或者躺着挣钱的职业 因而也想自己下海尝试 事
  • 基于stm32作品设计:多功能氛围灯、手机APP无线控制ws2812,MCU无线升级程序

    文章目录 一 作品背景 二 功能设计与实现过程 三 实现基础功能 一 首先是要选材 二 原理图设计 二 第一版本PCB设计 三 焊接PCB板 四 编写单片机程序 五 下载程序验证 四 外壳设计 一 CAD图纸设计 二 磨砂亚克力板 五 重新
  • [Git] 代码管理之 Git(六)Git rebase 压缩提交历史

    我们在工作中 可能会出现这样的情况 一项工作由好几个同事同时完成 然后每个人针对当前的feature都有对应的提交 那么就会造成同一个feature有多次提交的这样的冗余存在 除此之外 如果我们自己针对同一个feature的每天的提交以及一
  • JVM(六)方法调用(补充知识)

    方法调用并不等同于方法中的代码被执行 方法调用阶段唯一的任务就是确定被调用方法的版本 即调用哪一个方法 暂时还未涉及方法内部的具体运行过程 一切方法调用在Class文件里面存储的都只是符号引用 而不是方法在实际运行时内存布局中的入口地址 也
  • 关于H264相关的EBSP,RBSP,SODP的说明

    1 关于H264相关的EBSP RBSP SODP的说明 1 EBSP 扩展字节序列载荷 Encapsulated Byte Sequence Payload 它去掉了00 00 01 00 00 00 01这些起始码 但包含了0x3防止竞
  • 时序约束优先级_静态时序分析圣经翻译计划——附录A:SDC

    本附录将介绍1 7版本的SDC格式 此格式主要用于指定设计的时序约束 它不包含任何特定工具的命令 例如链接 link 和编译 compile 它是一个文本文件 可以手写或由程序创建 并由程序读取 某些SDC命令仅适用于实现 implemen
  • @Around简单使用示例——SpringAOP增强处理

    Around的作用 既可以在目标方法之前织入增强动作 也可以在执行目标方法之后织入增强动作 可以决定目标方法在什么时候执行 如何执行 甚至可以完全阻止目标目标方法的执行 可以改变执行目标方法的参数值 也可以改变执行目标方法之后的返回值 当需
  • 如何搭建Spring开发环境呢?

    转自 如何搭建Spring开发环境呢 下文讲述搭建Spring开发环境的方法分享 如下所示 由于Spring是基于Java代码的一个框架 所以在Spring环境搭建之前 我们需为开发环境安装好 JDK Java开发环境 Eclipse Ja
  • 来自ebay内部的「软件测试」学习资料,覆盖GUI、API自动化、代码级测试及性能测试等,Python等,拿走不谢!...

    在软件测试领域从业蛮久了 常有人会问我 刚入测试一年 很迷茫 觉得没啥好做的 测试在公司真的不受重视 我是不是去转型做开发会更好 资深的测试架构师的发展路径是怎么样的 我平时该怎么学习 我估计不少人有这样的想法 甚至你也会被身边的人所影响
  • React 中constructor 作用

    React 中constructor 作用 react中的constructor大体有两个作用 1 初始化this state 2 纠正方法的this的指向 constructor props super props this state
  • 大数据毕设 python+深度学习+opencv实现植物识别算法系统

    文章目录 0 前言 2 相关技术 2 1 VGG Net模型 2 2 VGG Net在植物识别的优势 1 卷积核 池化核大小固定 2 特征提取更全面 3 网络训练误差收敛速度较快 3 VGG Net的搭建 3 1 Tornado简介 1 优
  • LWIP学习笔记(2)---IP协议实现细节

    IP头 收到的数据首先保存在pbuf结构中 The IPv4 header struct ip hdr version header length PACK STRUCT FLD 8 u8 t v hl type of service PA
  • C++11线程库 (六) 条件变量 Condition variables

    一 什么是条件变量 条件变量类 condition variable 是一个同步原语 它可以在同一时间阻塞一个线程或者多个线程 直到其他线程改变了共享变量 条件 并通知 primitive 原语 表达的是基础 基本的 是其他复杂应用的构建基
  • 基于高德地图的描点操作,监听地图缩放,展示合理数量的marker

    1 根据两点经纬度算两点之间的距离函数 function Rad d return d Math PI 180 0 经纬度转换成三角函数中度分表形式 计算距离 参数分别为第一点的纬度 经度 第二点的纬度 经度 function GetDis
  • java缓存面试问题_分布式缓存的面试题5

    1 面试题 如何保证Redis的高并发和高可用 redis的主从复制原理能介绍一下么 redis的哨兵原理能介绍一下么 2 面试官心里分析 其实问这个问题 主要是考考你 redis单机能承载多高并发 如果单机扛不住如何扩容抗更多的并发 re
  • R语言数据输入

    一 使用键盘输入数据 在导入数据比较少的时候 我们使用这种方法 R中的函数 edit 会自动调用一个允许手动输入数据的文本编辑器 具体步骤如下 1 创建一个空数据框 或矩阵 其中变量名和变量的模式需与理想中的最终数据集一致 2 针对这个数据
  • java使用aspose将word,excel,ppt转pdf

    1 测试环境springboot jdk1 8 aspose cells 8 5 2 jar 用于转换xls aspose words 16 8 0 jdk16 jar 用于转换doc 2 所用jar 签名百度网盘地址 链接 https p