把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不简单,记得老师曾经问一个同学项目做的怎么样了, 该同学说:"我只是经历了一些失败!";
先到网上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不简单,记得老师曾经问一个同学项目做的怎么样了, 该同学说:"我只是经历了一些失败!";
相关文章推荐
- 如何把pdf文档转化为word
- 使用java代码采用jacob的方式吧word文档转化为pdf格式
- 将PDF文档转化为Word文档
- 将Word,PDF文档转化为图片
- JSP生成WORD文档,EXCEL文档,PDF文档
- 把word文档转成pdf格式查看怎么做
- java 技术文档 用java获得word,excel,pdf等文档的内容
- Office文档转换之Word怎么转换成PDF的方法总结
- 怎样直接将pdf转化成word
- 将当前jsp生成word,pdf,excel等文档
- 告诉大家如何将pdf转换成word文档格式
- 将office文档(word,excel,powerpoint)转换为pdf
- ASP.NET将word文档转换成pdf的代码
- 将word文档转换为html、PDF等
- java读取word,excel和pdf文档内容
- Java通过OpenOffice将word、ppt、excel、图片、txt文档转换成PDF
- 浅谈WORD、CHM、PDF和Bizhelp在线帮助文档制作的区别
- 使用java将多种类型的文件如Word、PDF、JPG汇总到一个文档中(Word或者PDF)
- 【iOS_GitHub】文档/文件查看器(支持本地或者其他app分享过来的word、excel、pdf、rtf等格式文件)
- WORD文档转换成PDF格式