Excel转Pdf —— jacob
这需求,我是真的吐了,找了太多东西了,poi直接想都不想,直接放弃poi
documents4j
导出pdf很简单,但是没找到其他pdf相关设置的参数,算了
最后还是jacob能解决所有问题 —— 缩放,横向,大小
该方式仅限windows下,底层就是通过jni调用office的com组件
1、配置
<!-- excel to pdf --><!-- https://mvnrepository.com/artifact/com.hynnet/jacob --><dependency><groupId>com.hynnet</groupId><artifactId>jacob</artifactId><version>1.18</version></dependency>
对应的dll文件https://sourceforge.net/projects/jacob-project/files/jacob-project/
,下载的文件中有对应dll,
将jacob-1.14.3-x64.dll文件拷贝如以下目录
C:\Windows\System32
${java_home}/jdk/bin
${java_home}/jre/bin
- 这里有个坑,如果你是web应用,需要在
META-INF
目录下放入JacobVersion.properties
文件,这个文件在jar包中${mvn_repository}/com/hynnet/jacob/1.18/jacob-1.18.jar!/META-INF/JacobVersion.properties
- 再则,导入包时,先看看项目有没有以前版本的jacob,我这个就是因为项目本身有一个了,但是是1.14.3版本的,真不知道是不是远古人,还在用这么老的版本,所以找了很久的问题
2、使用
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
import java.io.File;/*** excel转pdf* @param inFilePath 读取excel路径* @param outFilePath 输出pdf路径* @param pageSize 页面大小* A3 297mm x 420mm : 8* A4 210mm x 297mm : 10* A5 148mm x 210mm : 11* @param zoom excel内容缩放百分比* @param orientation 是否横向输出*/public static void excel2Pdf(String inFilePath, String outFilePath, Integer pageSize, Integer zoom, Boolean orientation) {ActiveXComponent ax = null;Dispatch excel = null;try {ComThread.InitSTA();ax = new ActiveXComponent("Excel.Application");ax.setProperty("Visible", new Variant(false));// 禁用宏ax.setProperty("AutomationSecurity", new Variant(3));Dispatch excels = ax.getProperty("Workbooks").toDispatch();Object[] obj = new Object[]{inFilePath,new Variant(false),new Variant(false)};excel = Dispatch.invoke(excels, "Open", Dispatch.Method, obj, new int[9]).toDispatch();// 获取第一个sheetDispatch currentSheet = Dispatch.get(excel,"ActiveSheet").toDispatch();// 获取页面设置Dispatch pageSetup = Dispatch.get(currentSheet, "PageSetup").toDispatch();// 横向输出if (orientation) {Dispatch.put(pageSetup, "Orientation", new Variant(2));}// 页面大小Dispatch.put(pageSetup, "PaperSize", pageSize);// 内容缩放Dispatch.put(pageSetup, "Zoom", zoom);File tofile = new File(outFilePath);if (tofile.exists()) {tofile.delete();}// 转换格式Object[] obj2 = new Object[]{// PDF格式=0new Variant(0),outFilePath,//0=标准 (生成的PDF图片不会变模糊) ; 1=最小文件new Variant(1)};Dispatch.invoke(excel, "ExportAsFixedFormat", Dispatch.Method, obj2, new int[1]);LOG.info("excel -> pdf 导出完成");} catch (Exception es) {es.printStackTrace();LOG.error(es.getMessage());throw es;} finally {if (excel != null) {Dispatch.call(excel, "Close", new Variant(false));}if (ax != null) {ax.invoke("Quit", new Variant[]{});ax = null;}ComThread.Release();}}
Excel转Pdf —— jacob相关推荐
- EXCEL转PDF,JACOB,生成checkbox
因为项目报表有EXCEL导出,现在要新增PDF导出,我就想用EXCEL转PDF,于是找到JCOB调用COM组件,但是发现JCOB不能在LINUX下运行.同时JCOB也有个坏处.如果EXCEL里面表格不 ...
- 关于使用jacob+poi插件实现编辑Excel转PDF操作!
最近在项目中,出现了Excel转PDF的需求,找了很多方法都不尽人意.今天就将我实现的方法分享出来,所需下载,都已备好,放心实验! 1.需要的jar包和控件 jacob-1.19.jar poi-3. ...
- java采用Jacob将Excel转PDF
注意事项:使用此方法需安装Office import java.io.File; import java.util.Date;import com.jacob.activeX.ActiveXCompo ...
- jacob电脑重启后word/excel转pdf是0KB问题解决方法
问题现象:使用jacob将word/excel转换为pdf时,服务器重启后,必须重新登录下桌面,才可转换pdf 成功,否则转换的pdf文件直接是0KB. 1.确保所用电脑的office本身可以将wor ...
- java html转pdf的几种方式_java 有关word,excel,pdf转换成html 有几种方式
展开全部 java将Word/Excel/PDF文件转换成HTML整理 项目开发过程中,需求涉及到了各种文档转换为HTML或者网页易显e68a84323131333532363134313032313 ...
- java 处理word,excel,pdf -javacode
java 处理word,excel,pdf -javacode 2008年08月27日 星期三 01:08 P.M. java 处理word,excel,pdf -javacode 很多人问到如何抽取 ...
- Java准确获取Word/Excel/PPT/PDF的页数(附Word页数读不准的处理办法)
Java准确获取Word/Excel/PPT/PDF的页数(附Word页数读不准的处理办法) 1.需求背景 2.环境准备工作 2.1 JACOB介绍及安装 2.2 Microsoft Office W ...
- 网页上符号显示成方框_如何在word、PPT、Excel以及PDF中添加带√的方框
办公的时候,我们接触到的是各种不同格式的文档,那么关于他们的编辑,大家又了解多少呢?比如说,在文档中添加带√的方框,应该如何添加? 今天这里就分享Word.PPT.Excel以及PDF的添加方法,希望 ...
- dataframe保存为txt_如何批量查找并修改替换 Word、PPT、Excel、PDF、TXT等文件的内容...
概要 平时的工作中,我们避免不了与众多 Word 文件.PPT 文件.PDF 文件.TXT 等文件打交道,有时候我们需要对这些文件进行批量修改与替换内容.这里我们介绍了这样的一款工具,它可以很方便快速 ...
最新文章
- 全网首译 : 初学者终极指南—掌握Scrum敏捷框架—第1章
- NPOI Excel 导出学习 一 (基础导出)
- Flink的重启策略
- hibernate基础之无法自动创建表总结
- 【长文】Google面试官分步解析自己泄漏前的面试题,超多干货和建议
- matlab内维尔差值代码,计算方法上机练习数值积分(包括两次作业).PDF
- IE8 select 动态下拉遇到的问题
- 设计模式解密(12)- 桥接模式
- 独立站需要ERP系统吗?
- Android 可以输入的下拉框
- Razor语法(三)
- Apache Commons Pool试用小记
- vue组件内数值做watch监听,首次监听不到的问题
- row_number() over
- 谷歌浏览器老是出现花_Google全新的AI平台值得您花时间吗?
- GPT2.0语言模型 Language Models are Unsupervised Multitask Learners
- 五日均线指标编程案例讲解
- C语言每日一练---移动数组中的零元素
- 个人免签收款系统-支付宝,直接入账到个人账号,没第三方
- 计算cosx的近似值
热门文章
- IDEA手动下载MySQL驱动并连接数据库
- 亲临方德体验日 – 主流国产操作系统的成色到底如何?
- 自己动手做QQ木马-----总序
- daysmatter安卓版_倒数日days matter下载-倒数日days 安卓版v1.0.2-PC6安卓网
- 2020年黄历表_2020黄历查询(2020年老黄历表)
- 苹果原壁纸高清_足球壁纸传奇门神 卡西利亚斯系列壁纸全面屏
- 黄淮学院大学计算机基础教程,关于公布2008年度河南省高等学校精品课程名单的通知...
- c语言在屏幕上显示字母,【求C语言高手帮忙解答1、在屏幕上显示一行字符串:”hell-查字典问答网...
- Solution enabler和power path的一些命令
- 杀出重围3显卡测试软件,新驱动带你杀出重围 蓝宝石显卡整机测试