使用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转换成PDF文件(要装有Word另存为PDF文件的插件)

public class Dispatch_MSWord { static final int wdDoNotSaveChanges = 0;// 不保存待定的更改。 static final i...

java:word转pdf

分为两部分:1.word转html。2.html转pdf   。 其中转html后会有不规范提示。 import java.io.BufferedWriter; import java.io.By...

Java 使用jacob ppt文件转pptx,doc转docx;word 转html、pdf等

Java 使用jacob ppt文件转pptx,doc转docx

利用Jacob 实现了word转PDF

  • 2015年04月23日 10:06
  • 37KB
  • 下载

java使用jacob将word 转pdf

  • 2017年07月17日 09:43
  • 328KB
  • 下载

jacob word 转pdf

jacob jar link:https://sourceforge.net/projects/jacob-project/files/jacob-project/ 1、解开下载的jacob_1.1...

Jacob 环境配置 + word/excel/ppt 转 PDF

java,Jacob 环境配置 + word/excel/ppt 转 PDF

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

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

使用jacob替换word模版并生成pdf或word

主要用到了WordUtils.java 代码如下 package com.jxtech.common; import com.jacob.activeX.ActiveXComponent; imp...

通过jacob 把word转pdf ,excel转html,word转html

本文转自 http://yanlp.iteye.com/blog/965016,版权原创所有,仅供大家学习
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Jacob实现word转PDF
举报原因:
原因补充:

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