这需求,我是真的吐了,找了太多东西了,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相关推荐

  1. EXCEL转PDF,JACOB,生成checkbox

    因为项目报表有EXCEL导出,现在要新增PDF导出,我就想用EXCEL转PDF,于是找到JCOB调用COM组件,但是发现JCOB不能在LINUX下运行.同时JCOB也有个坏处.如果EXCEL里面表格不 ...

  2. 关于使用jacob+poi插件实现编辑Excel转PDF操作!

    最近在项目中,出现了Excel转PDF的需求,找了很多方法都不尽人意.今天就将我实现的方法分享出来,所需下载,都已备好,放心实验! 1.需要的jar包和控件 jacob-1.19.jar poi-3. ...

  3. java采用Jacob将Excel转PDF

    注意事项:使用此方法需安装Office import java.io.File; import java.util.Date;import com.jacob.activeX.ActiveXCompo ...

  4. jacob电脑重启后word/excel转pdf是0KB问题解决方法

    问题现象:使用jacob将word/excel转换为pdf时,服务器重启后,必须重新登录下桌面,才可转换pdf 成功,否则转换的pdf文件直接是0KB. 1.确保所用电脑的office本身可以将wor ...

  5. java html转pdf的几种方式_java 有关word,excel,pdf转换成html 有几种方式

    展开全部 java将Word/Excel/PDF文件转换成HTML整理 项目开发过程中,需求涉及到了各种文档转换为HTML或者网页易显e68a84323131333532363134313032313 ...

  6. java 处理word,excel,pdf -javacode

    java 处理word,excel,pdf -javacode 2008年08月27日 星期三 01:08 P.M. java 处理word,excel,pdf -javacode 很多人问到如何抽取 ...

  7. Java准确获取Word/Excel/PPT/PDF的页数(附Word页数读不准的处理办法)

    Java准确获取Word/Excel/PPT/PDF的页数(附Word页数读不准的处理办法) 1.需求背景 2.环境准备工作 2.1 JACOB介绍及安装 2.2 Microsoft Office W ...

  8. 网页上符号显示成方框_如何在word、PPT、Excel以及PDF中添加带√的方框

    办公的时候,我们接触到的是各种不同格式的文档,那么关于他们的编辑,大家又了解多少呢?比如说,在文档中添加带√的方框,应该如何添加? 今天这里就分享Word.PPT.Excel以及PDF的添加方法,希望 ...

  9. dataframe保存为txt_如何批量查找并修改替换 Word、PPT、Excel、PDF、TXT等文件的内容...

    概要 平时的工作中,我们避免不了与众多 Word 文件.PPT 文件.PDF 文件.TXT 等文件打交道,有时候我们需要对这些文件进行批量修改与替换内容.这里我们介绍了这样的一款工具,它可以很方便快速 ...

最新文章

  1. 全网首译 : 初学者终极指南—掌握Scrum敏捷框架—第1章
  2. NPOI Excel 导出学习 一 (基础导出)
  3. Flink的重启策略
  4. hibernate基础之无法自动创建表总结
  5. 【长文】Google面试官分步解析自己泄漏前的面试题,超多干货和建议
  6. matlab内维尔差值代码,计算方法上机练习数值积分(包括两次作业).PDF
  7. IE8 select 动态下拉遇到的问题
  8. 设计模式解密(12)- 桥接模式
  9. 独立站需要ERP系统吗?
  10. Android 可以输入的下拉框
  11. Razor语法(三)
  12. Apache Commons Pool试用小记
  13. vue组件内数值做watch监听,首次监听不到的问题
  14. row_number() over
  15. 谷歌浏览器老是出现花_Google全新的AI平台值得您花时间吗?
  16. GPT2.0语言模型 Language Models are Unsupervised Multitask Learners
  17. 五日均线指标编程案例讲解
  18. C语言每日一练---移动数组中的零元素
  19. 个人免签收款系统-支付宝,直接入账到个人账号,没第三方
  20. 计算cosx的近似值

热门文章

  1. IDEA手动下载MySQL驱动并连接数据库
  2. 亲临方德体验日 – 主流国产操作系统的成色到底如何?
  3. 自己动手做QQ木马-----总序
  4. daysmatter安卓版_倒数日days matter下载-倒数日days 安卓版v1.0.2-PC6安卓网
  5. 2020年黄历表_2020黄历查询(2020年老黄历表)
  6. 苹果原壁纸高清_足球壁纸传奇门神 卡西利亚斯系列壁纸全面屏
  7. 黄淮学院大学计算机基础教程,关于公布2008年度河南省高等学校精品课程名单的通知...
  8. c语言在屏幕上显示字母,【求C语言高手帮忙解答1、在屏幕上显示一行字符串:”hell-查字典问答网...
  9. Solution enabler和power path的一些命令
  10. 杀出重围3显卡测试软件,新驱动带你杀出重围 蓝宝石显卡整机测试