把word文档转化成pdf文档

本文介绍了一种使用Java将Word文档转换为PDF的方法。通过先将Word文档转换为HTML,再利用工具将HTML转换为PDF,实现了跨格式文档转换。文章分享了具体的Java代码实例。

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

最近想写个Java程序来把word文档转换成pdf文档, 虽然最终结果不是很理想, 但是还是想把经验拿出来和大家分享.

先到网上google了一下,  倒是找到一些小技巧:

1.    用wps可以直接把word转化成pdf文档.

2.    Adobe有个pdfmaker也可以把一个word文档转化成pdf, 而且安装了pdfmaker就同时也安装了几个dll, 如果用C++的话,那么利用这几个dll可以直接把word转化成pdf.

3.    java里面有个类库:itext, 可以生成pdf.

4.    因为word的格式是不公开的, 所以无法直接用Java去操作word(如果你把一个word文件读出来, 你将得到一堆乱码), 但是COM是可以操作word的, 所以利用Java的JNI来操作COM从而可以间接的操作word, 这里就要用一种叫做Java COM Bridge的包来实现Java到COM的链接, 我了解到的有两种桥:Jacob, JCOM. 两个我都有试过, Jacob有点恶心, 依赖于JRE的版本, 我试了几个版本才在我的机器上跑对一个例子, 可是拿到别人的机器上一跑, 有崩了, 遂放弃. JCOM倒是一试就对, 可是我一想如果要利用他们把word的内容取出来再用itext把内容写进pdf, 感觉太过复杂..

直接从word转化成pdf代价太大!

直接不行间接呢?itext库可以把html转化成pdf, 那只要想办法把word转成html就可以了, 我找了一下,找到两个东西:

1.     WordHTML是一个开源的C++程序, 可以把word转化成html.

2.     我试Jacob的程序就可以把我word转化成html,但是前面说了,在别人的机器上崩了, 哎, 不过还是把程序贴出来:

 

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
public class WordToHtml{
    public boolean changeFormat (String FileName){
       
        String FileFormat = "";
        FileFormat = FileName.substring(FileName.length()-4,FileName.length());
        System.out.println(FileFormat);
       
        if(FileFormat.equalsIgnoreCase(".doc")){
            String DocFile = FileName;
           
            System.out.println("word文件路径:"+DocFile);
            //word文件的完整路径
           
            String HtmlFile = DocFile.substring(0, (DocFile.length() - 4)) + ".htm";
           
            System.out.println("htm文件路径:"+HtmlFile);
            //html文件的完整路径
           
            ActiveXComponent app = new ActiveXComponent("Word.Application");
            //启动word
           
            try
{
                app.setProperty("Visible", new Variant(false));
                //设置word程序非可视化运行
               
                Dispatch docs = app.getProperty("Documents").toDispatch();
               
                Dispatch doc = Dispatch.invoke(docs,"Open", Dispatch.Method, new Object[]{DocFile,new Variant(false), new Variant(true)}, new int[1]).toDispatch();
                //打开word文件
               
                Dispatch.invoke(doc,"SaveAs",Dispatch.Method, new Object[]{HtmlFile,new Variant(8)}, new int[1]);
                //作为htm格式保存文件
               
                Dispatch.call(doc, "Close",new Variant(false));
                //关闭文件
               
            }
            catch (Exception e){
                e.printStackTrace();
            }
            finally {
                app.invoke("Quit", new Variant[] {});
                //退出word程序
            }
            //转化完毕
            return true;
        }
        return false;
    }
    public static void main(String[] args ) {
        WordToHtml d = new WordToHtml();
        d.changeFormat( args[ 0 ] );
    }
}


 


3.     htmldoc可以把html转化成pdf.

我试了一下利用WordHTML转化成的html可以用htmldoc转化成pdf,但是word中的表格到了pdf中都没了边框, 总算还是可以转的, wordhtml是有源代码的, 可以把它改一下,利用jni来调用, 而htmldoc可以从命令行调用, 当然有兴趣的人可以用itext来做, 我是在公司找出这个方法的, 回到寝室一试, htmldoc在我的机器上崩了, 哎..,虽然不怎么成功,但也没觉得沮丧,总算知道了有这么回事,知道用java把word转成pdf不简单,记得老师曾经问一个同学项目做的怎么样了, 该同学说:"我只是经历了一些失败!";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值