ppt转pdf的java实现

一、实现方式

java采用jacob包的功能,把ppt演示文稿转换为pdf。

支持文件格式:pptx,ppt

二、事先准备

1、依赖于office,需安装office办公软件

2、需要下载一个jacob-1.20-x64.dll的文件,放到java的bin目录下。

文件可以网上搜索下载。也可以点击百度网盘下载链接:

https://pan.baidu.com/s/16y-N03KPQJkne6g4sMLAmg?pwd=ix4j

三、Java转换代码

1、maven包依赖:

        <dependency><groupId>com.jacob</groupId><artifactId>jacob</artifactId><version>1.20</version></dependency>

2、java转换类:JacobUtil.java

主要看ppt2PDF方法。

package com.lan.fts.util;import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;/***  excel word ppt转pdf*  未完全完善* @author LAN* @date 2021年07月01日*/
public class JacobUtil {private static Logger log = LoggerFactory.getLogger(JacobUtil.class);private static final Integer WORD_TO_PDF_OPERAND = 17;private static final Integer PPT_TO_PDF_OPERAND = 32;private static final Integer EXCEL_TO_PDF_OPERAND = 0;public static void word2PDF(String inputFile, String pdfFile) {ComThread.InitSTA();ActiveXComponent app = new ActiveXComponent("Word.Application");try {app.setProperty("Visible", false);Dispatch docs = app.getProperty("Documents").toDispatch();Dispatch doc = Dispatch.call(docs, "Open", new Object[]{inputFile, false, true}).toDispatch();Dispatch.call(doc, "ExportAsFixedFormat", new Object[]{pdfFile, WORD_TO_PDF_OPERAND});Dispatch.call(doc, "Close", new Object[]{false});} catch (Exception e) {e.printStackTrace();System.out.println("转换出错:" + pdfFile);} finally {app.invoke("Quit");ComThread.Release();}}public static void excel2PDF(String inputFile, String pdfFile) {ComThread.InitSTA(true);ActiveXComponent app = new ActiveXComponent("Excel.Application");try {app.setProperty("Visible", false);app.setProperty("AutomationSecurity", new Variant(3));// 禁用宏Dispatch excels = app.getProperty("Workbooks").toDispatch();Object[] param1 = new Object[]{inputFile, new Variant(false), new Variant(false)};Dispatch excel = Dispatch.invoke(excels, "Open", Dispatch.Method, param1, new int[9]).toDispatch();//转换Object[] param2 = new Object[]{new Variant(EXCEL_TO_PDF_OPERAND), // PDF格式=0pdfFile,new Variant(0)  //0=标准 (生成的PDF图片不会变模糊) ; 1=最小文件};Dispatch.invoke(excel, "ExportAsFixedFormat", Dispatch.Method, param2, new int[1]);//关闭Dispatch.call(excel, "Close", new Object[]{false});} catch (Exception e) {e.printStackTrace();System.out.println("转换出错:" + pdfFile);} finally {app.invoke("Quit");ComThread.Release();}}private static ActiveXComponent ppt_app = new ActiveXComponent("PowerPoint.Application");public static void ppt2PDF(String inputFile, String pdfFile) {//  ComThread.InitSTA();Dispatch ppts = ppt_app.getProperty("Presentations").toDispatch();try {/*** call* param 4: ReadOnly* param 5: Untitled指定文件是否有标题* param 6: WithWindow指定文件是否可见* */Dispatch ppt = Dispatch.call(ppts, "Open", new Object[]{inputFile, true, true, false}).toDispatch();Dispatch.call(ppt, "SaveAs", new Object[]{pdfFile, PPT_TO_PDF_OPERAND});//关闭Dispatch.call(ppt, "Close");} catch (Exception e) {log.error("转换出错:" + inputFile, e);try{ppt_app.invoke("Quit");}catch (Exception e1){log.error("ppt_app.invoke(\"Quit\")关闭出错!",e);}finally{ppt_app = new ActiveXComponent("PowerPoint.Application");}} finally {//      ppt_app.invoke("Quit");//      ComThread.Release();}}
}

四、运行测试

    public static void main(String[] args) {JacobUtil.ppt2PDF("D:\\data\\out\\lanhezhong文件转换.pptx", "D:\\data\\out\\lanhezhong文件转换.pptx.pdf");}

运行结果:

总结:ppt转pdf转换的结果比较好,基本上保持ppt的原本内容格式。

***********************************************************************************************
author:蓝何忠
email:lanhezhong@163.com
***********************************************************************************************

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/690473.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32睡眠模式

文章目录 前言PWR介绍电源框图上电复位和掉电复位可编程电压检测器低功耗模式模式选择电源控制寄存器 睡眠模式停止模式待机模式 前言 在单片机产品中&#xff0c;例如遥控这类产品&#xff0c;长时间处于待机状态下&#xff0c;所以对于这类产品在待机时就应该尽可能的减少不…

如何利用ChatGPT辅助下处理:ENVI、GEE、Python等遥感数据

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力。本课程重点介绍ChatGPT在遥感中的应用&#xff0c;人工智…

苹果电脑怎么清内存?2024有哪些好用的工具?

在使用苹果电脑的过程中&#xff0c;我们可能会遇到系统运行缓慢、程序响应迟缓或频繁出现应用程序崩溃的情况&#xff0c;这些问题很可能是由于内存占用过高所导致。内存&#xff0c;或称为RAM&#xff08;RandomAccessMemory&#xff09;&#xff0c;是计算机的临时存储区&am…

DDoS攻防,本质上是成本博弈!

在互联网里&#xff0c;分布式拒绝服务&#xff08;DDoS&#xff09;攻击作为一种常见的网络威胁&#xff0c;持续对网站、在线服务和企业基础设施构成严重挑战。本文旨在探讨实施DDoS攻击的大致成本、以及企业如何采取有效措施来防范此类攻击&#xff0c;确保业务连续性和网络…

Android Studio(AS)使用别人的项目与gradle包并运行项目

一、问题描述 在进行AS开发时&#xff0c;我们可能会使用到别人的项目&#xff0c;但发现别人把项目发给我们后会发现gradle项目同步失败o(≧口≦)o&#xff0c;此时计有三&#xff1a; 1.横行霸道、豪取抢夺&#xff1a;直接空降到项目人那里&#xff0c;强他的电脑占为己有…

最新网页版USB转串口芯片CH340中文规格书手册(20240511)

前言 南京沁恒的产品已经很成熟了&#xff0c;完全可替代国外USB转串口产品&#xff0c;不必迷信FT232&#xff0c;CP2102之类了。 另外&#xff0c;急着买芯片&#xff0c;直接跑过去的&#xff0c;看过几次妹子了:) CH340手册&#xff0c;基于网页3.3版本&#xff0c;规格书…

Python装饰器带括号和不带括号的理解

装饰器是 Python 中一个强大且灵活的特性&#xff0c;允许用户在不修改原有函数或类定义的基础上&#xff0c;为其增加额外功能。 今天在尝试自定义 Python 装饰器的时候遇到了一个问题&#xff0c;因为以前一直是使用装饰器&#xff0c;基本没有自定义过装饰器&#xff0c;所…

利用一下Chat-GPT写两段处理字符串的简单样例ABAP程序。这样可以大大提高工作效率。Chat-GPT的能力真是让人震撼。

我让Caht-GPT写两段ABAP 程序&#xff0c;第一段程序要求如下&#xff1a; 判读字符串里面是否含有特殊字符&#xff0c;这里说的特殊字符不包括键盘上能够输入的字符&#xff0c;如果有这样的特殊字符则输出来。 DATA: lv_string TYPE string VALUE 你的字符串,lv_result TYP…

【Go】Go Swagger 生成和转 openapi 3.0.3

本文档主要描述在 gin 框架下用 gin-swagger 生成 swagger.json 的内容&#xff0c;中间猜的坑。以及&#xff0c;如何把 swagger 2.0 转成 openapi 3.0.3 下面操作均在项目根目录下执行 生成 swagger 2.0 import swagger go get -u github.com/swaggo/gin-swagger go get …

【Java orm 框架比较】十一 新增 原生jdbc对比

迁移到&#xff08;https://gitee.com/wujiawei1207537021/spring-orm-integration-compare&#xff09; orm框架使用性能比较 比较mybatis-plus、lazy、sqltoy、mybatis-flex、easy-query、mybatis-mp、jpa、dbvisitor、beetlsql、dream_orm、wood、hammer_sql_db、原生jdbc…

Python图形界面(GUI)Tkinter笔记(四):控件的定位(2)

Tkinter&#xff08;GUI&#xff09;设计图形界面时有三种控件的包装方法去定位各控件在窗口&#xff08;父容器、根窗口&#xff09;上的位置。 【1】pack()方法&#xff1a;用方位来定位位置&#xff0c;类似于Word文档中的文字对齐方式。 【2】grid()方法&#xff1a;用二…

计算机网络技术主要学什么内容,有哪些课程

计算机网络技术专业是一个涉及理论与实践紧密结合的学科&#xff0c;主要学习内容有计算机网络基础、网络设备技术、网络编程等内容&#xff0c;以下是上大学网&#xff08;www.sdaxue.com&#xff09;整理的计算机网络技术主要学什么内容&#xff0c;供大家参考&#xff01; 基…