採用jacob實現word轉pdf

網絡上已經有很多這方面的內容,在用之前也是參考了好多別人的文章,下面記錄下我自己的整合過程。整個過程都比較簡單:

開發環境:win7 64位系統,在2008下面部署也是一樣的。
文檔要求jdk的版本要1.7的某個版本以上,我用的是:java version "1.7.0_67"

其他系統和環境可以下載相應的舊版本。
我是從http://sourceforge.net/projects/jacob-project/files/jacob-project/ 這裏下載最新的版本jacob-1.18-M2
附上直接下載地址:http://cznic.dl.sourceforge.net/project/jacob-project/jacob-project/1.18-M2/jacob-1.18-M2.zip

代碼就寫了一個簡單的工具類Word2PdfUtil:

import java.io.File;
import java.io.IOException;

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

public class Word2PdfUtil {

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

	public static void main(String[] args) throws IOException {
		String source1 = "e:\\test.doc";
		String target1 = "e:\\test1.pdf";
		Word2PdfUtil pdf = new Word2PdfUtil();
		pdf.word2pdf(source1, target1);
	}

	public static boolean word2pdf(String source, String target) {
		System.out.println("Word轉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("打開文檔:" + source);
			Dispatch doc = Dispatch.call(docs, "Open", source, false, true).toDispatch();
			System.out.println("轉換文檔到PDF:" + target);
			File tofile = new File(target);
			if (tofile.exists()) {
				tofile.delete();
			}
			Dispatch.call(doc, "SaveAs", target, wdFormatPDF);
			Dispatch.call(doc, "Close", false);
			long end = System.currentTimeMillis();
			System.out.println("轉換完成,用時:" + (end - start) + "ms");
			return true;
		} catch (Exception e) {
			System.out.println("Word轉PDF出錯:" + e.getMessage());
			return false;
		} finally {
			if (app != null) {
				app.invoke("Quit", wdDoNotSaveChanges);
			}
		}
	}

}
整個代碼只需要一個jacob的jar包就可以運行了。
當然,在下載的文件裏面還有個調用系統庫的dll文件需要放置在jre的bin目錄下:
示例:D:\Java\jdk1.7.0_67\jre\bin\jacob-1.18-M2-x64.dll
這樣代碼就可以實現word轉pdf了。

下面附上maven的pom.xml配置,因爲jacob包沒在第三方倉庫上面直接找到,所以需要手動上傳到maven中央庫,或者配置下本地路徑,下面粘下本地路徑的配置:

<dependency>
            <groupId>com.jacob</groupId>
            <artifactId>jacob</artifactId>
            <version>1.18-M2</version>
            <scope>system</scope>
            <systemPath>C:/Users/Downloads/jacob-1.18-M2/jacob.jar</systemPath>
        </dependency>
這樣項目構建的時候就不會出錯。
順便提一句:在部署的服務器上面需要安裝office軟件,要不然轉換不成功,會報錯。

其他一些參數和轉換請參考其他兩個鏈接:
http://hu437.iteye.com/blog/844350
http://blog.csdn.net/xuchaozheng/article/details/19199721

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章