jacob 实现Office Word文件格式转换 docTotxt,docTopdf,docxTodoc,pdfTotxt ...

本文主要是介绍jacob 实现Office Word文件格式转换 docTotxt,docTopdf,docxTodoc,pdfTotxt ...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于jacob用法,百度一下就会发现几乎都是复制2004年一个代码,那段代码实现的是从一个目录读取所有doc文件,然后把它转 html格式。 为了便习学习和使用,我把代码看懂后精简了一下,得出不少新结论,拿出来和大家分享。
1、jacob的安装配置

\

与处理其他jar文件一样,将1号文件加载到classpath中(由于我计划把它应用到Web中,所以我它复制到WebRoot\WEB-INF\lib中,但是实践证明,这个jar文件最好不要放到这里,不然很容易出现“jacob x86.dll already loaded in another classloader”的问题,后来参考了别人的意见,把它剪切到tomcat\lib下 ,就解决这个问题了,别忘了在Eclipse引用这个jar包!)
如果是你的 系统是32位的,再将2号文件(即第2个dll文件)复制到%JAVA_HOME%\jdk1.7.0_04\jre\bin下; 当然,如果你是64位系统,要复制第1个dll文件
2、一个具体的代码示例:
[java]
package ccnu;  
import com.jacob.com.*;  
import com.jacob.activeX.*;  
import java.io.*;  
public class testCoding  
{  
/* 
* 作者:郭喜跃/【捂汗县长】 
* 时间:2013-7-20 
* 程序功能:调用jacob包,在Microsoft Office 能够支持打开的文件类型中随意进行格式转换(本程序不是批量转换,一次只能转单个文件)。 
* 由于我电脑上安装的是Office 2013,所以甚至可以实现pdf与txt!用起来很方便,除了注释 代码不算长吧? 
*  
* */  
public static void main(String[] args)  
{  
//指定被转换文件的完整路径。 我这里的意图是把pdf转为txt   
String path = new String("E:\\Jena\\Jena初体验0.pdf");  
//根据路径创建文件对象   
File docFile=new File(path);  
//获取文件名(包含扩展名)   
String filename=docFile.getName();  
//过滤掉文件名中的扩展名   
int filenamelength=filename.length();  
int dotposition=filename.indexOf(".");  
filename=filename.substring(0,dotposition);  
//设置输出路径,一定要包含输出文件名(不含输出文件的扩展名)   
String savepath = new String ("E:\\Jena\\txt\\"+filename);    
//启动Word程序   
ActiveXComponent app = new ActiveXComponent("Word.Application");          
//接收输入文件和输出文件的路径   
String inFile = path;  
String tpFile = savepath;  
//设置word不可见   
app.setProperty("Visible", new Variant(false));  
//这句不懂   
Object docs = app.getProperty("Documents").toDispatch();  
//打开输入的doc文档   
Object doc = Dispatch.invoke((Dispatch) docs,"Open", Dispatch.Method, new Object[]{inFile,new Variant(false), new Variant(true)}, new int[1]).toDispatch();  
//另存文件, 其中Variant(n)参数指定另存为的文件类型,详见代码结束后的文字   
Dispatch.invoke((Dispatch) doc,"SaveAs", Dispatch.Method, new Object[]{tpFile,new Variant(2)}, new int[1]);  
//这句也不懂   
Variant f = new Variant(false);  
//关闭并退出   
Dispatch.call((Dispatch) doc, "Close", f);  
app.invoke("Quit", new Variant[] {});  
System.out.println("转换完毕。");  
}  
}  
package ccnu;
import com.jacob.com.*;
import com.jacob.activeX.*;
import java.io.*;
public class testCoding
{
/*
* 作者:郭喜跃/【捂汗县长】
* 时间:2013-7-20
* 程序功能:调用jacob包,在Microsoft Office 能够支持打开的文件类型中随意进行格式转换(本程序不是批量转换,一次只能转单个文件)。
* 由于我电脑上安装的是Office 2013,所以甚至可以实现pdf与txt!用起来很方便,除了注释 代码不算长吧?
* */
public static void main(String[] args)
{
//指定被转换文件的完整路径。 我这里的意图是把pdf转为txt
String path = new String("E:\\Jena\\Jena初体验0.pdf");
//根据路径创建文件对象
File docFile=new File(path);
//获取文件名(包含扩展名)
String filename=docFile.getName();
//过滤掉文件名中的扩展名
int filenamelength=filename.length();
int dotposition=filename.indexOf(".");
filename=filename.substring(0,dotposition);
//设置输出路径,一定要包含输出文件名(不含输出文件的扩展名)
String savepath = new String ("E:\\Jena\\txt\\"+filename);
//启动Word程序
ActiveXComponent app = new ActiveXComponent("Word.Application");
//接收输入文件和输出文件的路径
String inFile = path;
String tpFile = savepath;
//设置word不可见
app.setProperty("Visible", new Variant(false));
//这句不懂
Object docs = app.getProperty("Documents").toDispatch();
//打开输入的doc文档
Object doc = Dispatch.invoke((Dispatch) docs,"Open", Dispatch.Method, new Object[]{inFile,new Variant(false), new Variant(true)}, new int[1]).toDispatch();
//另存文件, 其中Variant(n)参数指定另存为的文件类型,详见代码结束后的文字
Dispatch.invoke((Dispatch) doc,"SaveAs", Dispatch.Method, new Object[]{tpFile,new Variant(2)}, new int[1]);
//这句也不懂
Variant f = new Variant(false);
//关闭并退出
Dispatch.call((Dispatch) doc, "Close", f);
app.invoke("Quit", new Variant[] {});
System.out.println("转换完毕。");
}
}
*其中第44行中的 invoke()函数中的Variant(n)参数指定另存为的文件类型(n的取值范围是0-25),他们分别是:
*Variant(0):doc
*Variant(1):dot
*Variant(2-5),Variant(7):txt
*Variant(6):rft
*Variant(8),Variant(10):htm
*Variant(9):mht
*Variant(11),Variant(19-22):xml
*Variant(12):docx
*Variant(13):docm
*Variant(14):dotx
*Variant(15):dotm
*Variant(16)、Variant(24):docx
*Variant(17):pdf
*Variant(18):xps
*Variant(23):odt
*Variant(25):与Office2003与2007的转换程序相关,执行本程序后弹出一个警告框说是需要更高版本的 Microsoft Works Converter
*由于我计算机上没有安装这个转换器,所以不清楚此参数代表什么格式
*/

这篇关于jacob 实现Office Word文件格式转换 docTotxt,docTopdf,docxTodoc,pdfTotxt ...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/426848

相关文章

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima