jacob word 转pdf

jacob jar link:https://sourceforge.net/projects/jacob-project/files/jacob-project/

1、解开下载的jacob_1.18.zip,在文件夹中找到jacob.dll和jacob.jar两个文件
2、将压缩包解压后,Jacob.jar添加到Libraries中
3、将Jacob.dll放至“WINDOWS\SYSTEM32”下面或者环境变量包含所在目录

package com.test.jacob;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
public class WordToPDF {
	static final int wdDoNotSaveChanges = 0;// 不保存待定的更改。  
	static final int wdFormatPDF = 17;      // word转PDF 格式  
	static final int ppSaveAsPDF = 32;      // ppt 转PDF 格式  
	  
	 public static void main(String[] args) throws IOException {		 
		 String source1 = "c:\\test\\test.doc";  
		 String source2 = "c:\\test\\ex.xlsx";  
		 String source3 = "c:\\test\\ppt.pptx";  
		 String target1 = "c:\\test\\test1.pdf";  
		 String target2 = "c:\\test\\test2.pdf";  
		 String target3 = "c:\\test\\test3.pdf";  
	    
		 WordToPDF pdf = new WordToPDF();  
		 //pdf.word2pdf(source1, target1);  
	     pdf.excel2pdf(source2, target2);  
	     //pdf.ppt2pdf(source3, target3);  
	     //pdf.imgToPdf("e:/12345.jpg","e:/xu.pdf");  
	 }  
	  
	 public void 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",
			     new Object[]{source,// FileName
			     new Variant(false),// ConfirmConversions 
			     new Variant(true)} // ReadOnly
		     ).toDispatch();  
	  
			 System.out.println("转换文档到PDF: " + target);
			 File tofile = new File(target);
			 if (tofile.exists()) {
				 tofile.delete();
			 }  
			 Dispatch.call(doc, "SaveAs", new Object[]{target, new Variant(wdFormatPDF)});
			 Dispatch.call(doc, "Close", new Object[]{new Variant(false)});
			 long end = System.currentTimeMillis();
			 System.out.println("转换完成,用时:" + (end - start) + "ms.");
		 } catch (Exception e) {  
			 System.out.println("Error:文档转换失败:" + e.getMessage());  
		 } finally {
			 if (app != null)
				 app.invoke("Quit", wdDoNotSaveChanges);
		 }  
	 }  
	  
	 public void ppt2pdf(String source,String target){  
		 System.out.println("启动PPT");  
		 long start = System.currentTimeMillis();  
		 ActiveXComponent app = null;  
		 try {  
			app = new ActiveXComponent("Powerpoint.Application");  
			Dispatch presentations = app.getProperty("Presentations").toDispatch();  
			System.out.println("打开文档" + source);  
			Dispatch presentation = Dispatch.call(presentations,//  
			 "Open",   
			 new Object[]{source,// FileName  
			 new Variant(true),  // ReadOnly  
			 new Variant(true),  // Untitled 指定文件是否有标题。  
			 new Variant(false)} // WithWindow 指定文件是否可见。  
		    ).toDispatch();  
			  
			System.out.println("转换文档到PDF " + target);  
			File tofile = new File(target);  
			   if (tofile.exists()) {  
				   tofile.delete();  
			   }  
			Dispatch.call(presentation,	"SaveAs", new Object[]{target, new Variant(ppSaveAsPDF)});			  
			Dispatch.call(presentation, "Close");  
			long end = System.currentTimeMillis();  
			System.out.println("转换完成..用时:" + (end - start) + "ms.");  
		 } catch (Exception e) {  
			 System.out.println("========Error:文档转换失败:" + e.getMessage());  
		 } finally {  
			 if (app != null) app.invoke("Quit");  
		 }  
	 }  
	  
	 public void excel2pdf(String source, String target) {  
	      System.out.println("启动Excel");  
	      long start = System.currentTimeMillis();  
	      ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 启动excel(Excel.Application)  
	      try {  
		      app.setProperty("Visible", false);  
		      Dispatch workbooks = app.getProperty("Workbooks").toDispatch();  
		      System.out.println("打开文档" + source);  
		      Dispatch workbook = Dispatch.invoke(workbooks, "Open", Dispatch.Method, new Object[]{source, new Variant(false),new Variant(false)}, new int[3]).toDispatch();  
		      Dispatch.invoke(workbook, "SaveAs", Dispatch.Method, new Object[] {  
		        target, new Variant(57), new Variant(false),  
		      	new Variant(57), new Variant(57), new Variant(false),  
		      	new Variant(true), new Variant(57), new Variant(true),  
		      	new Variant(true), new Variant(true) }, new int[1]);  
		      Variant f = new Variant(false);  
		      System.out.println("转换文档到PDF " + target);  
		      Dispatch.call(workbook, "Close", new Object[]{f});  
		      long end = System.currentTimeMillis();  
		      System.out.println("转换完成..用时:" + (end - start) + "ms.");  
	      } catch (Exception e) {  
	    	  System.out.println("========Error:文档转换失败:" + e.getMessage());  
	      }finally {  
	    	  if (app != null){  
	    		  app.invoke("Quit", new Variant[] {});  
	    	  }  
	      }  
	 }  
	   
/*	   
	 import com.lowagie.text.Document;  
	 import com.lowagie.text.DocumentException;  
	 import com.lowagie.text.Image;  
	 import com.lowagie.text.PageSize;  
	 import com.lowagie.text.pdf.PdfWriter;  
	 public boolean imgToPdf(String imgFilePath, String pdfFilePath)throws IOException {  
	     File file=new File(imgFilePath);  
	     if(file.exists()){  
	     Document document = new Document();  
	     FileOutputStream fos = null;  
	     try {  
	     fos = new FileOutputStream(pdfFilePath);  
	     PdfWriter.getInstance(document, fos);  
	  
	     // 添加PDF文档的某些信息,比如作者,主题等等  
	     document.addAuthor("arui");  
	     document.addSubject("test pdf.");  
	     // 设置文档的大小  
	     document.setPageSize(PageSize.A4);  
	     // 打开文档  
	     document.open();  
	     // 写入一段文字  
	     //document.add(new Paragraph("JUST TEST ..."));  
	     // 读取一个图片  
	     Image image = Image.getInstance(imgFilePath);  
	     float imageHeight=image.getScaledHeight();  
	     float imageWidth=image.getScaledWidth();  
	     int i=0;  
	     while(imageHeight>500||imageWidth>500){  
	     image.scalePercent(100-i);  
	     i++;  
	     imageHeight=image.getScaledHeight();  
	     imageWidth=image.getScaledWidth();  
	     System.out.println("imageHeight->"+imageHeight);  
	     System.out.println("imageWidth->"+imageWidth);  
	     }  
	  
	     image.setAlignment(Image.ALIGN_CENTER);   
//	        //设置图片的绝对位置  
	     // image.setAbsolutePosition(0, 0);  
	     // image.scaleAbsolute(500, 400);  
	     // 插入一个图片  
	     document.add(image);  
	     } catch (DocumentException de) {  
	     System.out.println(de.getMessage());  
	     } catch (IOException ioe) {  
	     System.out.println(ioe.getMessage());  
	     }  
	     document.close();  
	     fos.flush();  
	     fos.close();  
	     return true;  
	     }else{  
	     return false;  
	     }  
	     }  
	     */
}

参考资料: 

http://blog.csdn.net/xuchaozheng/article/details/19199721

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值