iava 实现将office 文件转成pdf
来源:互联网 发布:淘宝店铺首页装修方案 编辑:程序博客网 时间:2024/05/16 15:29
做一个项目需要文件预览效果,于是将office 文件转成pdf 进行预览,但是在网上找了很多发现很多大神都是用openoffice实现的,本地还要安装,感觉有点麻烦,难道就没有第三发就jar支持么,于是乎找了很久很久终于找到了一片博客 地址点这里
里面介绍的也和详细
首先我们需要下载这个jar 和dll文件放入java 配置路径
下载jacob.zip ,地址:https://sourceforge.net/projects/jacob-project/
下载完成后解压如下图:
如果是64位的就将x64 放入到jdk 安装目录的bin 中如果是32位的就将x86放入到jdk 安装目录的bin
之后再项目的pom配置文件中引入当然不是maven 工程也可以倒入这个jar
<dependency>
<groupId>com.jacob</groupId>
<artifactId>jacob</artifactId>
<version>1.18-M2</version>
<scope>system</scope>
<systemPath>D:/jacob.jar</systemPath>
</dependency>
之后写一个util的类来处理转换
public class PDFUtil {
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 void doc2pdf(String srcFilePath, String pdfFilePath) {
ActiveXComponent app = null;
Dispatch doc = null;
try {
ComThread.InitSTA();
app = new ActiveXComponent(“Word.Application”);
app.setProperty(“Visible”, false);
Dispatch docs = app.getProperty(“Documents”).toDispatch();
Object[] obj = new Object[]{
srcFilePath,
new Variant(false),
new Variant(false),//是否只读
new Variant(false),
new Variant(“pwd”)
};
doc = Dispatch.invoke(docs, “Open”, Dispatch.Method, obj, new int[1]).toDispatch();
// Dispatch.put(doc, “Compatibility”, false); //兼容性检查,为特定值false不正确
Dispatch.put(doc, “RemovePersonalInformation”, false);
Dispatch.call(doc, “ExportAsFixedFormat”, pdfFilePath, WORD_TO_PDF_OPERAND); // word保存为pdf格式宏,值为17
}catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
if (doc != null) {
Dispatch.call(doc, “Close”, false);
}
if (app != null) {
app.invoke(“Quit”, 0);
}
ComThread.Release();
}
}
public void ppt2pdf(String srcFilePath, String pdfFilePath) throws Exception { ActiveXComponent app = null; Dispatch ppt = null; try { ComThread.InitSTA(); app = new ActiveXComponent("PowerPoint.Application"); Dispatch ppts = app.getProperty("Presentations").toDispatch(); /* * call * param 4: ReadOnly * param 5: Untitled指定文件是否有标题 * param 6: WithWindow指定文件是否可见 * */ ppt = Dispatch.call(ppts, "Open", srcFilePath, true,true, false).toDispatch(); Dispatch.call(ppt, "SaveAs", pdfFilePath, PPT_TO_PDF_OPERAND); // ppSaveAsPDF为特定值32 } catch (Exception e) { e.printStackTrace(); throw e; } finally { if (ppt != null) { Dispatch.call(ppt, "Close"); } if (app != null) { app.invoke("Quit"); } ComThread.Release(); }}public void excel2Pdf(String inFilePath, String outFilePath) throws Exception { 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(); // 转换格式 Object[] obj2 = new Object[]{ new Variant(EXCEL_TO_PDF_OPERAND), // PDF格式=0 outFilePath, new Variant(0) //0=标准 (生成的PDF图片不会变模糊) ; 1=最小文件 }; Dispatch.invoke(excel, "ExportAsFixedFormat", Dispatch.Method,obj2, new int[1]); } catch (Exception es) { es.printStackTrace(); 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(); }}
}
- iava 实现将office 文件转成pdf
- 如何将文件转成PDF
- java中如何将office文件转成pdf或者图片(亲测有效)
- 能将pdf文件转成ppt吗
- Ubuntu下将文本文件转成PDF文件
- Ubuntu下将文本文件转成PDF文件
- windows系统 安装OpenOffice(office文档转成PDF文件)
- php实现office文档转成pdf预览方法
- 怎么用PDF转换器将PDF文件转成txt
- 将mac的office文件转成utf8文件
- 将PDF格式文件转成二进制并生成Base64编码,将Base64编码转成PDF文件
- 将Markdown文件转成word文件和PDF文件
- 将Office(如:Word、Excel、PPT 等)文件转PDF(通过OpenOffice实现)
- 如何将Office文件转化为PDF文件
- net利用office自带的功能将word转成PDF
- C#利用MS的COM组件,将Office文档转成XPS、PDF
- Java 使用 jacob 将微软office中 word excel ppt 转成pdf
- 直接在资源管理器内将PPT转成pdf文件
- spring
- 运行springBoot的三种方式
- VS2010操作Acess数据库
- jQuery简单动画效果和动画队列
- 归档命令(5)——shar
- iava 实现将office 文件转成pdf
- Apache Drill学习文档尝试翻译之Parquet格式数据转换
- memcached编译安装
- Spark性能优化总结
- jdk安装的环境变量的设置(最实用最全)
- zw
- 线段树入门题
- spring cloud搭建微服务second-fiberhome(三):consul结合config以及bus实现配置文件通过RabbitMQ动态调用
- 《零基础学习Python》-summary