使用Jacob实现word转PDF

原创 2016年06月02日 10:00:22

1.  引入jacob.jar


2.  将jacob-1.18-M2-x64.dll   jacob-1.18-M2-x86.dll 拷贝到C:\Windows\System32下


3. 编码

package com.base.pf.common.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;

/**
 * PDF word转换PDF;PDF下载
 * 
 * @author ZHEN.L
 * @date 2014.11.17
 * 
 */
public class PDFUtils {

	static final int wdDoNotSaveChanges = 0;// 不保存待定的更改。
	static final int wdFormatPDF = 17;// PDF 格式

	/**
	 * WORD 转换成 PDF
	 * 
	 * @param sourcePath
	 * @param targetPath
	 */
	public static void Word2PDF(String sourcePath, String targetPath) {
		// String filename = "F:/22.doc";
		// String toFilename = "F:/a.pdf";
		long start = System.currentTimeMillis();
		ActiveXComponent app = null;
		try {
			app = new ActiveXComponent("Word.Application");
			app.setProperty("Visible", false);
			Dispatch docs = app.getProperty("Documents").toDispatch();
			System.out.println("打开文档..." + sourcePath);
			Dispatch doc = Dispatch.call(docs,//
					"Open", sourcePath, false, true).toDispatch();
			System.out.println("转换文档到PDF..." + targetPath);
			File tofile = new File(targetPath);
			if (tofile.exists()) {
				tofile.delete();
			}
			Dispatch.call(doc, "SaveAs", targetPath, wdFormatPDF);
			Dispatch.call(doc, "Close", false);
			long end = System.currentTimeMillis();
			System.out.println("转换完成..用时:" + (end - start) + "ms.");
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (app != null)
				app.invoke("Quit", wdDoNotSaveChanges);
		}
	}

	/**
	 * 下载PDF
	 * 
	 * @param request
	 * @param response
	 * @param path
	 */
	public static void download(HttpServletRequest request,
			HttpServletResponse response, String path) {
		String pdfPath = path.replace(".doc", ".pdf");
		Word2PDF(path, pdfPath);
//		path = "f:/1.pdf";
		File file = new File(pdfPath);
		String fileName = file.getName();
		InputStream is = null;
		OutputStream os = null;
		try {
			is = new FileInputStream(file);
			response.setContentType("application/pdf,charset=UTF-8");
			response.setHeader("Content-disposition", "attachment;filename="
					+ URLEncoder.encode(fileName, "UTF-8"));
			os = response.getOutputStream();
			byte[] bytes = new byte[1024];
			while (is.read(bytes) != -1) {
				os.write(bytes, 0, bytes.length);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (is != null) {
				try {
					is.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if (os != null) {
				try {
					os.flush();
					os.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

使用Jacob批量转换word为txt、pdf、xps、html、xml等文档

Jacob全称位java com bridge,通过该插件,可以使用Java语言编写程序,调用COM、ActiveX组件来操作Windows本地程序。 参考一位网友的例子,我写了一个程序,用来将wo...
  • maxuyang1987
  • maxuyang1987
  • 2013年12月03日 16:26
  • 3363

采用jacob实现word转pdf

采用jacob实现word转pdf
  • kookob
  • kookob
  • 2015年04月14日 10:46
  • 8498

Java利用jacob实现wps转换pdf

实现文档格式之间的转换,我使用的是jacob-1.7版本,需要jacob.jar来调用activex控件,本机需安装WPS/office,还需要jacob.jar以及jacob.dll  其中:...
  • u010000515
  • u010000515
  • 2017年01月21日 10:55
  • 2599

使用Jacob实现html和word的相互转换

package zmx.jacob.test; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; i...
  • zmx729618
  • zmx729618
  • 2016年11月21日 16:19
  • 2674

使用jacob调用Windows的com对象,转换Office文件为pdf、html等

1、介绍     Jacob 是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对C...
  • catoop
  • catoop
  • 2015年01月26日 12:14
  • 9368

jacob操作word查找替换转为pdf

最近需要简单操作word文档后转为pdf,即查找word中的替换字符将其替换为需要的参数,最后生成pdf,由于服务器是在window平台下,所以选择了较为简单的jacob去实现这一功能。 工具:my...
  • jayson1001
  • jayson1001
  • 2017年03月16日 09:44
  • 286

使用Jacob实现Word转换Html

前言        源于一个项目的需求,用户上传Word文件后要能及时在网页上查看文件内容,类似于QQ邮箱的附件查看,QQ邮箱使用的是永中的产品工具。自己做当然是首选不要钱自己写代码就能搞定的。网上搜...
  • f4761
  • f4761
  • 2014年11月29日 21:52
  • 466

Jacob处理Word文档总结以及Java操作Office2007

使用Jacob来处理Word文档 Word或Excel程序是以一种COM组件形式存在的。如果能够在Java中调用Word的COM组件,就 能使用它的方法来获取Word文档中的文本信息。目前网...
  • mike_caoyong
  • mike_caoyong
  • 2014年06月10日 19:55
  • 7870

java实现word转pdf第二种方法

之前说过的第一种方法 在我的项目中出现了问题 生产上就是word转pdf没有汉字显示,只有字母和数字。 因为代码中有选择字体 public int registerDirectories(){ ...
  • hy614
  • hy614
  • 2017年05月16日 10:12
  • 1985

java使用jacob操作word文档

ava使用jacob操作word文档 java调用com组件操作word使用总结(jacob) 简单描述    在此处输入简单摘要 特别声明:使用java-com技术可...
  • mincheat
  • mincheat
  • 2014年11月26日 14:47
  • 2966
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Jacob实现word转PDF
举报原因:
原因补充:

(最多只允许输入30个字)