java 使用jacob实现word、excle、ppt、图片转pdf


IDEA Maven 微服务项目示例

示例:

步骤:

1.jarcob jar包、插件下载

SaveAsPDFandXPS 下载地址:
http://www.microsoft.com/zh-cn/download/details.aspx?id=7
(若访问不了,百度搜索SaveAsPDFandXPS)
jacob 包下载地址:
http://sourceforge.net/projects/jacob-project/

2.jacob jar包和dll存放路径

下载 jacob 解压后存放路径:
jacob.jar 放在 C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext目录下
jacob.dll 放在 C:\Program Files\Java\jdk1.8.0_171\jre\bin 目录下

3. 项目里src/main/resources/lib 下放jar包

五、pom文件中添加依赖

<dependency><groupId>com.jacob</groupId><artifactId>jacob</artifactId><version>1.20</version><scope>system</scope><systemPath>${basedir}/src/main/resources/lib/jacob.jar</systemPath>
</dependency>

六、代码实现

import java.io.File;import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComFailException;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;public class ToPDF {private static final int wdFormatPDF = 17; // PDF 格式private static final int xlTypePDF = 0;  // xls格式public boolean toPDF(String sfileName, String toFileName) {System.out.println("------开始转换------");String suffix = getFileSufix(sfileName);File file = new File(sfileName);if (!file.exists()) {System.out.println("文件不存在!");return false;}if (suffix.equals("pdf")) {System.out.println("PDF not need to convert!");return false;}if (suffix.equals("doc") || suffix.equals("docx") || suffix.equals("txt")) {return word2PDF(sfileName, toFileName);} else if (suffix.equals("ppt") || suffix.equals("pptx")) {return ppt2PDF(sfileName, toFileName);} else if (suffix.equals("xls") || suffix.equals("xlsx")) {return excel2PDF(sfileName, toFileName);} else {System.out.println("文件格式不支持转换!");return false;}}//截取文件后缀方法public static String getFileSufix(String fileName) {int splitIndex = fileName.lastIndexOf(".");return fileName.substring(splitIndex + 1);}//转换word文档public boolean word2PDF(String sfileName, String toFileName) {long start = System.currentTimeMillis();ActiveXComponent app = null;Dispatch doc = null;boolean result = true;try {app = new ActiveXComponent("Word.Application");app.setProperty("Visible", new Variant(false));Dispatch docs = app.getProperty("Documents").toDispatch();doc = Dispatch.call(docs, "Open", sfileName).toDispatch();System.out.println("打开文档..." + sfileName);System.out.println("转换文档到 PDF..." + toFileName);File tofile = new File(toFileName);if (tofile.exists()) {tofile.delete();}Dispatch.call(doc, "SaveAs", toFileName, wdFormatPDF);long end = System.currentTimeMillis();System.out.println("转换完成..用时:" + (end - start) + "ms.");result = true;} catch (Exception e) {// TODO: handle exceptionSystem.out.println("========Error:文档转换失败:" + e.getMessage());result = false;} finally {Dispatch.call(doc, "Close", false);System.out.println("关闭文档");if (app != null) {app.invoke("Quit", new Variant[] {});}}ComThread.Release();return result;}//转换excel文档public boolean excel2PDF(String inputFile, String pdfFile) {ActiveXComponent app = null;Dispatch excel = null;boolean result = true;try {app = new ActiveXComponent("Excel.Application");app.setProperty("Visible", false);Dispatch excels = app.getProperty("Workbooks").toDispatch();excel = Dispatch.call(excels, "Open", inputFile, false, true).toDispatch();Dispatch.call(excel, "ExportAsFixedFormat", xlTypePDF, pdfFile);System.out.println("打开文档..." + inputFile);System.out.println("转换文档到 PDF..." + pdfFile);result = true;} catch (Exception e) {result = false;} finally {if (excel != null) {Dispatch.call(excel, "Close");}if (app != null) {app.invoke("Quit");}}return result;}//转换ppt文档public boolean ppt2PDF(String srcFilePath, String pdfFilePath) {ActiveXComponent app = null;Dispatch ppt = null;boolean result = true;try {ComThread.InitSTA();app = new ActiveXComponent("PowerPoint.Application");Dispatch ppts = app.getProperty("Presentations").toDispatch();// 因POWER.EXE的发布规则为同步,所以设置为同步发布ppt = Dispatch.call(ppts, "Open", srcFilePath, true, // ReadOnlytrue, // Untitled指定文件是否有标题false// WithWindow指定文件是否可见).toDispatch();Dispatch.call(ppt, "SaveAs", pdfFilePath, 32); // ppSaveAsPDF为特定值32System.out.println("转换文档到 PDF..." + pdfFilePath);result = true; // set flag true;} catch (ComFailException e) {result = false;} catch (Exception e) {result = false;} finally {if (ppt != null) {Dispatch.call(ppt, "Close");}if (app != null) {app.invoke("Quit");}ComThread.Release();}return result;}public static void main(String[] args) {ToPDF d = new ToPDF();d.toPDF("E:\\poi-test\\一个.excle.xlsx", "E:\\poi-test\\一个.excle.pdf");}
}

七、结果:(例)


附:图片转pdf(要用的话,上边的toPDF方法加上图片的后缀判断)

else if (suffix.equals("jpg") || suffix.equals("jpeg")||suffix.equals("png") || suffix.equals("gif") || suffix.equals("bmp")){}
public String imgToPdf(String filename)throws IOException {String[] strings=filename.split("\\.");String str= strings[strings.length-1];String toFileName=filename.replace(str,"pdf");//新的文件名pdf格式File file=new File(filename);if(file.exists()){Document document = new Document();FileOutputStream fos = null;try {fos = new FileOutputStream(toFileName);PdfWriter.getInstance(document, fos);// 添加PDF文档的某些信息,比如作者,主题等等// document.addAuthor("arui");//document.addSubject("test pdf.");// 设置文档的大小document.setPageSize(PageSize.A4);// 打开文档document.open();// 写入一段文字//document.add(new Paragraph("JUST TEST ..."));// 读取一个图片Image image = Image.getInstance(filename);float imageHeight=image.getScaledHeight();float imageWidth=image.getScaledWidth();int i=0;while(imageHeight>500||imageWidth>500){image.scalePercent(100-i);i++;imageHeight=image.getScaledHeight();imageWidth=image.getScaledWidth();System.out.println("imageHeight->"+imageHeight);System.out.println("imageWidth->"+imageWidth);}image.setAlignment(Image.ALIGN_CENTER);
//        //设置图片的绝对位置// image.setAbsolutePosition(0, 0);// image.scaleAbsolute(500, 400);// 插入一个图片document.add(image);} catch (DocumentException de) {System.out.println(de.getMessage());} catch (IOException ioe) {System.out.println(ioe.getMessage());}//向FiletopdfImagetopdf表添加数据FiletopdfImagetopdf filetopdfImagetopdf=new FiletopdfImagetopdf();filetopdfImagetopdf.setFilename(filename);filetopdfImagetopdf.setTofilename(toFileName);document.close();fos.flush();fos.close();return toFileName;}else{return "图片不存在!";}}

总结

这里对文章进行总结:
以上就是今天要讲的内容,本文介绍了怎样使用jacob实现word、excle、ppt、图片转换为pdf的过程。其中核心代码实现可根据读者自己的使用情况稍作拆分或调整。

java 使用jacob实现word、excle、ppt、图片转pdf相关推荐

  1. java word excel ppt 图片转pdf

    第一步将jar导入mvn库 下载地址 0积分 https://download.csdn.net/download/qq_35908944/18549670 mvn install:install-f ...

  2. java使用jacob操作word添加图片

    1.操作word需要的jacobjar包和dll文件.(请多多支持!) java使用jacob给word添加水印.这是给word添加水印,当业务需求在多页word文档中,某一页添加水印一样的盖章,这个 ...

  3. Java利用Jacob实现excel,ppt,word转pdf 及jacob遇到的坑

    Jacob官方的解释是Java COM Bridge,即java和com组件间的桥梁. 需要注意的是,由于操作Jacob需要使用动态链接库(.dll)文件,所以Jacob仅支持在windows平台使用 ...

  4. JAVA使用jacob判断word附件是否加密

    java判断word附件是否加密和word转换pdf JAVA使用jacob判断word附件是否加密 JAVA使用jacob判断word附件是否加密 String overFile pdf输出路径 S ...

  5. java 使用jacob实现word转pdf

    java 使用jacob实现word转pdf(IDEA Maven项目) 步骤: 一. 插件与jar包下载 SaveAsPDFandXPS 下载地址: http://www.microsoft.com ...

  6. Java使用Poi填充Word表格模板(图片和文字)

    Java使用Poi填充Word表格模板(图片和文字) **** 由于个人需求需要对表格模板进行操作,所以本文章只对表格进行替换数据操作,没有段落,没有循环遍历,没有延伸!!!!!(后续补充!!!) * ...

  7. Java使用Openoffice将word、ppt转换为PDF

    最近项目中要实现WORD的文件预览功能,我们可以通过将WORD转换成PDF或者HTML,然后通过浏览器预览. OpenOffice OpenOffice.org 是一套跨平台的办公室软件套件,能在 W ...

  8. Java利用poi生成word(包含插入图片,动态表格,行合并)

    Java利用poi生成word(包含插入图片,动态表格,行合并) 测试模板样式: 图表 1 Word生成结果: 图表 2 需要的jar包:(具体jar可自行去maven下载) Test测试类: imp ...

  9. 总结java关于jacob操作word这几天遇到的问题!

    由于这几天的客户需求使用到了java关于jacob操作word的问题,下面对这几天遇到的问题进行一下总结: 本机第一次使用jacob的时候,本机装的WPS接下来一路畅通,直到最后完成word的导出功能 ...

最新文章

  1. Solr调优参考-续
  2. C语言 经典编程100
  3. 成功解决Not possible to connect to the Web3 provider. Make sure the provider is running and a connection
  4. [专栏目录]-ATF/FF-A/specification学习 -- ongoing
  5. jmeter所有版本下载地址分享
  6. Akka STM –与STM Ref和Agent进行乒乓球比赛
  7. 分治法求数组最大值 c语言,使用分治法求最大子数组的下标。
  8. datagrid 什么时候结束编辑_小规模纳税人免税政策什么时候结束?有答复了
  9. 大部分人最缺的其实是「认知」
  10. Microsoft word 表格居中对齐方法
  11. 数据结构与算法-浙江大学陈越数据结构第一章学习
  12. jquery.event 研究学习之bind篇
  13. 常用软件的静默安装参数
  14. J. 青出于蓝胜于蓝(dfs序+树状数组)
  15. matlab 求信号频率响应,基于MATLAB的频率响应
  16. 数据结构的基本概念(ADT 抽象数据类型 数据结构三要素)
  17. js 删除节点小案例
  18. 众数和中位数的应用题_什么是众数和中位数
  19. 改变指标改变图(FusionChart)
  20. (7)解除预制体关系Break Prefab Instance(Unpack Prefab)

热门文章

  1. Spring中DI介绍
  2. Parzen-Window Density Estimation(PWDE)
  3. Delphi之东进数字语音卡(SS1)可复用源码 1
  4. docker里mysql精简版_精简Docker镜像的几个方法
  5. mybatis中的resultType
  6. Vue源码分析(一)
  7. html decode 在线,在js中使用htmlEncode和htmlDecode
  8. [机器学习] 奇异谱分析(SSA)原理及Python实现
  9. 音视频编码实战-------pcm+yuv数据转成MP4
  10. matlab fft后加abs,关于FFT变换之后,幅值对应不上的问题