您的位置:首页 > 其它

把word文档转化成pdf文档

2007-01-16 23:00 316 查看
最近想写个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不简单,记得老师曾经问一个同学项目做的怎么样了, 该同学说:"我只是经历了一些失败!";
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: