`
endual
  • 浏览: 3573358 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Word文档转PDF的功能

    博客分类:
  • java
 
阅读更多

最近项目中有用到Word文档转PDF的功能,做了一些尝试,也遇到了一些困难。 
下面把尝试的情况记录下来,也希望做过类似工作的童鞋能一起探讨一下。 

http://www.iteye.com/topic/1005741

我尝试过的Word文档转PDF,用过两种方法: 
1、使用OpenOffice转PDF; 
2、使用MS Office的OLE自动化功能; 
OpenOffice的情况稍后补充,下面先说MS Office的转换情况。 

Office版本使用2007,因为2007提供了一个加载项:Microsoft Save as PDF 或 XPS,可将文档另存为PDF格式。下载地址:http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=4D951911-3E7E-4AE6-B059-A2E79ED87041,安装即可使用。 

Office COM 组件调用使用jacob(Java COM Bridge) 
http://sourceforge.net/projects/jacob-project/ 
Jacob初次使用的人可能会感到比较困惑。题外话,jacob的API设计是有够别扭的,这儿就不多说了。下面说明一下: 

我们接触的jacob类主要就3个:ActiveXComponent、Variant、Dispatch; 
ActiveXComponent代表COM应用程序: 
 
初始化方法为: 
Java代码  收藏代码
  1. ActiveXComponent app = new ActiveXComponent("Word.Application");  

Variant 是与COM通讯的参数或者返回值; 
Dispatch代表一个可操作的自动化对象;如果确定返回值是自动化对象的话,可以调用Variant.toDispatch()转换成Dispatch。 
获取了Dispatch之后,即可调用该自动化对象的属性或方法,具体的属性和方法要看参考文档,比如:Word开发可在WORD帮助中查看“脱机开发人员帮助WORD对象模型”。 
Dispatch.get(dispatch, String name);获取对象属性; 
Dispatch.put(dispatch, String name, Object value);设置对象属性; 
Dispatch.call(dispatch, String name, Object… args);调用对象方法; 
以上都是Dispatch上的静态方法,所以需要传递dispatch本身。 

关于jacob-1.15-M4-x86.dll放置的位置,其实很简单,dll的放置位置就是系统参数 
Java代码  收藏代码
  1. System.getProperty("java.library.path");  
所指定的,放在路径里的任意一个目录即可,不想污染JDK目录或者windows/system32目录的话,放置项目启动目录下就可以了,Eclipse下我是放在项目目录下。 

下面看具体代码: 

Java代码  收藏代码
  1. public class Word2PDF {  
  2.   
  3. static final int wdDoNotSaveChanges = 0;// 不保存待定的更改。  
  4. static final int wdFormatPDF = 17;// PDF 格式  
  5.   
  6. public static void main(String[] args) {  
  7.   
  8.     String filename = "f:/temp/测试文档.docx";  
  9.     String toFilename = filename + ".pdf";  
  10.     System.out.println("启动Word...");  
  11.     long start = System.currentTimeMillis();  
  12.     ActiveXComponent app = null;  
  13.     try {  
  14.         app = new ActiveXComponent("Word.Application");  
  15.         app.setProperty("Visible"false);  
  16.   
  17.         Dispatch docs = app.getProperty("Documents").toDispatch();  
  18.         System.out.println("打开文档..." + filename);  
  19.         Dispatch doc = Dispatch.call(docs,//  
  20.                 "Open"//  
  21.                 filename,// FileName  
  22.                 false,// ConfirmConversions  
  23.                 true // ReadOnly  
  24.                 ).toDispatch();  
  25.   
  26.         System.out.println("转换文档到PDF..." + toFilename);  
  27.         File tofile = new File(toFilename);  
  28.         if (tofile.exists()) {  
  29.             tofile.delete();  
  30.         }  
  31.         Dispatch.call(doc,//  
  32.                 "SaveAs"//  
  33.                 toFilename, // FileName  
  34.                 wdFormatPDF);  
  35.   
  36.         Dispatch.call(doc, "Close"false);  
  37.         long end = System.currentTimeMillis();  
  38.         System.out.println("转换完成..用时:" + (end - start) + "ms.");  
  39.     } catch (Exception e) {  
  40.         System.out.println("========Error:文档转换失败:" + e.getMessage());  
  41.     } finally {  
  42.         if (app != null)  
  43.             app.invoke("Quit", wdDoNotSaveChanges);  
  44.     }  
  45. }  
  46. }  


已知的情况: 
1、转换效果好。(相对于OpenOffice) 
2、速度慢 
3、CPU占用率高 

待解决的问题: 
1、安全性问题:是否可禁用WORD宏,以及WORD文档中的ActiveX控件? 
这一点我不太清楚,但在WORD选项--安全性设置中看到的: 
 
2、微软知识库中的“服务器端 Office 自动化注意事项” 
http://support.microsoft.com/kb/257757/ 
文档似乎明确了 
Microsoft 目前建议不要从任何无人参与的、非交互式客户端应用程序或组件(包括 ASP、DCOM 和 NT Service)中进行 Microsoft Office 应用程序的“自动化”,也不为此提供支持,因为 Office 在这种环境中运行时可能会出现不稳定的现象并且/或者会死锁。 

因为我主要的用途就是用来服务器端自动转换。 
待仔细研读。 
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
分享到:
评论

相关推荐

    Word文档转换为PDF(不需要OFFICE)

    在IT行业中,文档格式转换是一项常见的任务,尤其是将Word文档转换为PDF。Word文档和PDF在不同的场景下各有优势,Word适合编辑和创作,而PDF则适用于保持文档格式不变的阅读和分发。本示例关注的是如何在不依赖...

    office2007/2010word文档转pdf插件

    标题中的“Office2007/2010 Word文档转PDF插件”是指一种能够帮助用户将Microsoft Office 2007或2010中的Word文档转换为PDF格式的软件工具。这种插件的目的是为了方便用户在不同的设备和系统间分享文档,因为PDF格式...

    Word文档转换为图片Pdf,Word文档扫描成Pdf

    1、 Word转换为Pdf,程序很多,但转换后的Pdf,还可以复制,虽可以加密禁止复制,但市场上太多的Pdf,还可以把Pdf转换Word等其他格式,很容易被别人利用和剽窃,如何彻底的自己的Word文档,可以被人浏览,查看,而不...

    word文档转pdf

    "word文档转pdf"这个主题涉及到的是使用Java Swing来实现这一转换过程,尤其强调了对中文字符的支持。下面我们将深入探讨这个知识点。 首先,让我们了解Word(.doc或.docx)和PDF(Portable Document Format)的...

    用C#.NET实现生成PDF文档和将WORD转换为PDF

    例如,可以通过创建Word应用程序实例,打开Word文档,然后使用Word的导出功能将内容保存为PDF格式。 然而,调用COM自动化技术存在一些局限性,比如依赖于用户机器上安装的Microsoft Office版本,且性能开销较大。...

    java使用jacob将word 转pdf

    在Java中利用JACOB库实现Word文档转PDF功能时,首先需要完成必要的环境配置工作。 ##### 1. JACOB库介绍 JACOB(Java COM Bridge)是一个开放源代码的Java类库,用于Java程序与Windows平台下的COM对象进行交互。...

    基于python实现word文档文本读取与文档转换pdf源码分享

    单击工具栏中的“Word转PDF”按钮,将打开“Word转PDF”子窗体,在该窗体中,首先单击“请选择Word文本所在路径”右侧的“…”浏览按钮,选择要转换源路径,这时系统将自动获取该路径下的全部Word文档文件,...

    word转pdf office文档转pdf

    "Word转PDF"是一个典型的例子,它涉及到Microsoft Office套件中的Word文档与Adobe PDF格式之间的互换。下面将详细介绍如何通过第三方控件实现这一转换,并探讨相关的技术细节。 首先,Word文档(.doc或.docx)是一...

    word 2007 转pdf插件

    在某些情况下,用户可能需要将Word文档转换为PDF,以保持内容布局的一致性和防止编辑。 标题中的“word 2007 转pdf插件”指的是一个专门针对Microsoft Word 2007设计的外接程序,它的主要功能就是帮助用户将Word ...

    如何将word文档转换PDF-.docx

    _Word 文档转换 PDF 在日常办公中,将 Word 文档转换为 PDF 格式是一种常见的需求。PDF 格式的文件具有平台独立性、安全性和稳定性等特点,使其在文件共享和传输中扮演着重要角色。下面将介绍三种将 Word 文档转换...

    aspose实现word转pdf功能(去水印)

    在这个场景下,我们将关注如何使用Aspose在Java环境中实现Word文档转换为PDF,并且去除PDF中的水印。 首先,`aspose-words-20.1-jdk17.jar`是Aspose.Words for Java的库文件,它包含了处理Word文档和进行转换的所有...

    Mac_word批量转pdf脚本

    "Mac_word批量转pdf脚本"就是一个这样的解决方案,它旨在帮助用户快速、便捷地将Word文档批量转换为PDF格式。下面我们将详细探讨这一主题。 首先,我们来理解“脚本”在计算机领域的含义。脚本是一种编程或批处理...

    word文档转换为PDF格式文件

    本主题聚焦于“word文档转换为PDF格式文件”,这是一个关键的知识点,涉及到Microsoft Word和Adobe PDF这两种广泛使用的文件格式。 Word(.doc或.docx)是Microsoft Office套件中的文字处理软件,它提供了丰富的...

    office2021word文档转换成pdf格式方法.docx

    Office 2021 Word 文档转换成 PDF 格式方法 office 2021 word 文档转换成 pdf 格式方法是指将 Word 文档转换成可读性强、可分享性高的 PDF 格式文档。为实现此功能,需要使用 doPDF 虚拟打印机软件。下面将详细介绍...

    office的word文档转pdf插件

    本文将详细探讨“Office的Word文档转PDF插件”这一主题,包括其适用性、安装方法以及转换过程,以帮助用户更好地理解和应用这种工具。 首先,我们来看标题提到的“word转pdf的插件”,它是一种专门针对Microsoft ...

    最强word文档转PDF(含window和linux双系统)

    "最强word文档转PDF(含window和linux双系统)" 提供了一种跨平台的解决方案,覆盖了Windows和Linux两种操作系统,这对于多平台环境下的工作非常重要。下面我们将深入探讨这个主题。 首先,让我们了解Word和PDF两种...

    使用poi根据模版生成word文档并转换成PDF文件

    本文将深入探讨如何利用Apache POI框架根据模板生成Word文档,并进一步将其转换为PDF文件。 首先,Apache POI提供了一个名为HWPF(Horrible Word Processor Format)的组件,用于处理Word文档。通过这个组件,我们...

    word 文档转 pdf

    "doc2pdf" 是一种工具或方法,专门用于将Word文档转换为PDF格式。 在Windows操作系统中,用户可以直接通过Microsoft Word软件将文档保存或另存为PDF。然而,对于没有安装Word或寻求更便捷方式的用户,可以使用第三...

    利用poi+itextpdf进行word转pdf.rar

    在IT行业中,转换文档格式是一项常见的任务,例如将Word文档转换为PDF。在这个场景中,我们看到一个关于如何使用Java编程语言实现此功能的资源包:“利用poi+itextpdf进行word转pdf.rar”。这个压缩包包含源码、依赖...

Global site tag (gtag.js) - Google Analytics