java最快速生成PDF的解决方案 office 转成 PDF

本文介绍了一种使用Java通过调用Microsoft Office应用程序将Word文档转换为PDF格式的方法。该方法利用了Office应用程序中的ExportAsFixedFormat功能,实现了快速高效的文档转换,并提供了具体的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近单位有个项目的需求是要求将上传到文档转换成PDF。想来N个方法。

一是用java通过jacob来调用dll实现。dll是用vc写的调用office实现文档读入和转换,在用vc做到时候,发现如果做成是和office版本无关的很麻烦,因为office2003和office2007的格式差很多,一个是二进制,一个是xml。无奈另寻他路。

二是用jacob来调用虚拟的pdf打印机来打印office。发现这样的速度很难接受,一个50多M 的文档需要可能不下10分钟。

三是在我仔细阅读了office的文档msdn的时候发现了一句话,很小的字,写的是在saveas相类似的方法可以用exportAsFixedFormat方法来实现。这个方法我在msdn中查阅后,发现可行,所以进行研究。

先是下载微软官方的pdf插件,这个插件支持office文档(word,excel,powerpoint)另存为PDF。另存到速度令人吃惊。

编写的代码如下:其中调用的变量参阅了录制的office宏。

word的另存如下:

 

public class OfficeToPdf{

 

private ActiveXComponent wordCom=null;

 

 

public boolean saveWordAsPDF(String filePath,String outFile){

ComThread.InitSTA();

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

try{

      Dispatch wrdDocs=Dispatch.get(wordCom,"Documents").toDispatch(); 

      Dispatch wordDoc=Dispatch.call(wrdDocs,"Open",filePath,

                                    new Variant(true),new Variant(false)).toDispatch();

      Dispatch.invoke(wordDoc,"ExportAsFixedFormat",Dispatch.Method,new Object[]{

                                    outFile,new Variant(17),new Variant(false),new Variant(0),new Variant(0),

                                    new Variant(0),new Variant(0),new Variant(false),new Variant(true),

                                    new Variant(0),new Variant(false),new Variant(true),new Variant(false)},new int[0]);

     return true;

     }catch(Exception es){

       es.printStackTrace();

       return false;

     }finally{

         closeWord(false);

     }

}

 

public void closeWord(boolean saveOnExit){

    if(excelCom!=null){

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

       excelCom=null;

      ComThread.Release();

     }

}

 

 

 

//调用

public static void main(String[] args){

    OfficeToPdf o2p=new OfficeToPdf();

    o2p.saveWordAsPDF("c://x.doc","c://xx.pdf");

    o2p.saveWordAsPDF("c://x.docx","c://xxe.pdf");

}

 

}

 

下班啦,excel和powerpoint的转换下回接着说。

 

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值