前段时间做项目时,需要将word文档在浏览器中打开,一般的在浏览器中打开word都是直接提示下载的,找了好久都是些pageoffice等的收费插件,小项目成本要尽量压缩,所以就放弃了这种收费的插件了。突然想到有些浏览器能直接打开pdf或者图片,手机端也需要显示图片,所以可以将word转成pdf和图片,那java中怎么将word转成pdf或者图片呢?也研究了一下,有的说用poi等,但是研究了一下,发现不好用,另一种办法是office中的转换jar包:jacob,通过他可以调用office中的文件转换功能:比如说将word转成pdf或图片,excel转成pdf或图片,ppt转成pdf或图片等等,所以就用了这种办法,下面说一下具体的操作过程,在开始前首先需要准备一些材料:jacob和office,我这里用的是jacob1.11.1和office2010,具体过程如下:
1.先安装一下office2010;
2.解压下载的jacob1.11.1,将里面的jacob.jar导入项目中,buildPath,如果是win732位系统,找到x86文件夹中的jacob.dll,拷贝到c盘windows的system32目录下(64位系统找到AMD64文件夹中的jacob.dll,同样拷贝到system32目录下);
下面就开始在项目中写代码完成转换了。
public class JacobUtil {
public static final String DOC = "doc";
public static final String DOCX = "docx";
public static final String PDF = "pdf";
public static final String XLS = "xls";
public static final String XLSX = "xlsx";
public static final String MP4 = "mp4";
public static final String PPT = "ppt";
public static final String PPTX = "pptx";
// 8 代表word保存成html
public static final int WORD2HTML = 8;
// 17代表word保存成pdf
public static final int WD2PDF = 17;
public static final int PPT2PDF = 32;
public static final int XLS2PDF = 0;
public static void main(String[] args) {
String pptfile = "C:/Users/Administrator/Desktop/ceshi.pptx";
String pdffile = "C:/Users/Administrator/Desktop/数字模拟电路.pdf";
ppt2pdf(pptfile,pdffile);
pdf2Image(pdffile);
}
/**
* @author shenjianhu:
* @version 创建时间:2017年4月8日 下午9:07:33
* @param resourceType 资源类型
* @param path 资源路径
* @return
* TODO 文件转换
*/
public static Integer formatConvert(String resourceType, String resourcePath) {
Integer pages = 0;
String resource = resourcePath.substring(0, resourcePath.lastIndexOf("."));
if(resourceType.equalsIgnoreCase(DOC)||resourceType.equalsIgnoreCase(DOCX)){
//word转成pdf和图片
word2pdf(resourcePath, resource+".pdf");
pages = pdf2Image(resource+".pdf");
}else if(resourceType.equalsIgnoreCase(PDF)){
//pdf转成图片
pages = pdf2Image(resourcePath);
}else if(resourceType.equalsIgnoreCase(XLS)||resourceType.equalsIgnoreCase(XLSX)){
//excel文件转成图片
excel2pdf(resourcePath, resource+".pdf");
pages = pdf2Image(res