java word转pdf linux_在linux环境下,java怎么实现从word格式转换为pdf格式

该博客介绍了一个Java程序,使用Jacob库通过ActiveX组件与Microsoft Word交互,在Linux环境中将Word文档转换为PDF。程序首先打开Word文档,然后设置打印机为Adobe PDF,将Word文档打印为PostScript文件,最后利用Adobe Distiller将PostScript转换为PDF。
摘要由CSDN通过智能技术生成

import   com.jacob.activeX.ActiveXComponent;

import   com.jacob.com.Dispatch;

import   com.jacob.com.Variant;

/**

*   @author   XuMing   Li

*

*   @version   1.00,   2007-4-9

*

*/

public   class   D2P   {

private   ActiveXComponent   wordCom   =   null;

private   Object   wordDoc   =   null;

private   final   Variant   False   =   new   Variant(false);

private   final   Variant   True   =   new   Variant(true);

/**

*   打开word文档

*

*   @param   filePath

*                         word文档

*   @return   返回word文档对象

*/

public   boolean   openWord(String   filePath)   {

//建立ActiveX部件

wordCom   =   new   ActiveXComponent( "Word.Application ");

try   {

//返回wrdCom.Documents的Dispatch

Dispatch   wrdDocs   =   wordCom.getProperty( "Documents ").toDispatch();

//调用wrdCom.Documents.Open方法打开指定的word文档,返回wordDoc

wordDoc   =   Dispatch.invoke(wrdDocs,   "Open ",   Dispatch.Method,

new   Object[]   {   filePath   },   new   int[1]).toDispatch();

return   true;

}   catch   (Exception   ex)   {

ex.printStackTrace();

}

return   false;

}

/**

*   关闭word文档

*/

public   void   closeWord()   {

//关闭word文件

wordCom.invoke( "Quit ",   new   Variant[]   {});

}

/**

*   *   将word文档打印为PS文件后,使用Distiller将PS文件转换为PDF文件   *

*

*   @param   sourceFilePath

*                         源文件路径   *

*   @param   destinPSFilePath

*                         首先生成的PS文件路径   *

*   @param   destinPDFFilePath

*                         生成PDF文件路径

*/

public   void   docToPDF(String   sourceFilePath,   String   destinPSFilePath,

String   destinPDFFilePath)   {

if   (!openWord(sourceFilePath))   {

closeWord();

return;

}

//建立Adobe   Distiller的com对象

ActiveXComponent   distiller   =   new   ActiveXComponent(

"PDFDistiller.PDFDistiller.1 ");

try   {

//设置当前使用的打印机,我的Adobe   Distiller打印机名字为 "Adobe   PDF "

wordCom.setProperty( "ActivePrinter ",   new   Variant( "Adobe   PDF "));

//设置printout的参数,将word文档打印为postscript文档。目前只使用了前5个参数,如果要使用更多的话可以参考MSDN的office开发相关api

//是否在后台运行

Variant   Background   =   False;

//是否追加打印

Variant   Append   =   False;

//打印所有文档

int   wdPrintAllDocument   =   0;

Variant   Range   =   new   Variant(wdPrintAllDocument);

//输出的postscript文件的路径

Variant   OutputFileName   =   new   Variant(destinPSFilePath);

Dispatch.callN((Dispatch)   wordDoc,   "PrintOut ",   new   Variant[]   {

Background,   Append,   Range,   OutputFileName   });

System.out.println( "由word文档打印为ps文档成功! ");

//调用Distiller对象的FileToPDF方法所用的参数,详细内容参考Distiller   Api手册

//作为输入的ps文档路径

Variant   inputPostScriptFilePath   =   new   Variant(destinPSFilePath);

//作为输出的pdf文档的路径

Variant   outputPDFFilePath   =   new   Variant(destinPDFFilePath);

//定义FileToPDF方法要使用adobe   pdf设置文件的路径,在这里没有赋值表示并不使用pdf配置文件

Variant   PDFOption   =   new   Variant( " ");

//调用FileToPDF方法将ps文档转换为pdf文档

Dispatch.callN(distiller,   "FileToPDF ",   new   Variant[]   {

inputPostScriptFilePath,   outputPDFFilePath,   PDFOption   });

System.out.println( "由ps文档转换为pdf文档成功! ");

}   catch   (Exception   ex)   {

ex.printStackTrace();

}   finally   {

closeWord();

}

}

public   static   void   main(String[]   argv)   {

D2P   d2p   =   new   D2P();

//                                 d2p.openWord( "c:/12.doc ");

//                 d2p.callWordMacro( "c:/12.docc ",   "MyWordMacro ",

//                                 new   String[]   {   "这是调用word宏的测试程序 "   });

d2p.docToPDF( "d:/12.doc ",   "c:/1p.ps ",   "c:/1p.pdf ");

}

}

2009年4月24日 15:43

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值