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

利用OpenOffice将word转换成PDF

    博客分类:
  • POI
阅读更多
之前找了一种方式是通过jacob调用adobe PDF虚拟打印机生成PDF,但多人同时调用时有同步问题;在同事的提醒下找了下面的实现方式:


 
   2、用以下命令启动OpenOffice服务
         cd C:\Program Files\OpenOffice.org 3\program
         soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
 3、附上我写的DEMO,第三方包: JODConverter v2.2.1
官方網站:
http://www.artofsolving.com/opensource/jodconverter

下載地點:
http://www.artofsolving.com/opensource/jodconverter
http://zh.openoffice.org/new/zh_tw/downloads.html

目前版本: JODConverter v2.2.1, OpenOffice v3.0.0

使用需求: JDK1.4以上, 安裝OpenOffice v2.0.3以上

基本簡介:

JODConverter主要的功能是用來做各種檔案的轉換. 目前測試過, Word,Excel,PowerPoint轉PDF都是沒問題的.

因為JODConverter是透過OpenOffice來做轉換, 所以使用前需要先安裝OpenOffice, 並且將OpenOffice的Service啟動, 才可以使用.


使用教學:
Step1: 安裝OpenOffice
Step2: 啟動OpenOffice Service

1 cd C:\Program Files\OpenOffice.org 3\program
2 soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard


Step3:將JODConverter的Jar檔放進專案中的Library, 請檢查你的專案是否包含以下的Jar檔:

jodconverter-2.2.1.jar
jurt-2.3.0.jar
xstream-1.2.2.jar
ridl-2.3.0.jar
commons-io-1.3.1.jar
juh-2.3.0.jar
slf4j-api-1.4.3.jar
unoil-2.3.0.jar
slf4j-jdk14-1.4.3.jar


Step4: 準備一個word檔放在c:/document.doc
Step5: 執行以下程式

import java.io.File;
import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;

public class JodDemo {
public static void main(String[] args) throws Exception{
File inputFile = new File("c:/document.doc");
File outputFile = new File("c:/document.pdf");
// connect to an OpenOffice.org instance running on port 8100
OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
connection.connect();
// convert
DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
converter.convert(inputFile, outputFile);
// close the connection
connection.disconnect();
}
}


程式說明:
程式的部份相當簡潔, 特別要注意的地方是第12行連線的port必須與你啟動OpenOffice的Port相同,
另外JODConverter預設是用副檔名作文件種類的判斷, 所以副檔名必須要正確才行.
如果副檔名比較特別的話, 就必須在convert()的時候強制指定Document Type.

心得:
JODConverter使用起來相當方便, 官網也提供War檔讓JODConverter變成Web Service提供給不同的語言來呼叫.
特別要注意的是, OpenOffice Service並不是ThreadSafe的, 多個Web AP在使用的時候必須要注意.

參考資料:
http://www.artofsolving.com/opensource/jodconverter

那我也來補充一些好了
之前也在試這個檔案轉換的程式
程式最好加上 try-catch
因為之前發現有些檔案 format 不能轉,發生 Exception 後,connection 不會自動切斷,程式會 hand 住
所以改成如下方式:

1234567891011121314
public void convert(String input, String output){
        File inputFile = new File(input);
        File outputFile = new File(output);
        OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
        try {
            connection.connect();
            DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
            converter.convert(inputFile, outputFile);
        } catch(Exception e) {
            e.printStackTrace();
        } finally {
            try{ if(connection != null){connection.disconnect(); connection = null;}}catch(Exception e){}
        }
    }




再來,明明就是 open office 的檔案,卻生不能轉換的問題。例如:*.STW, *.SXD, *.ODF 等,後來才知道可以自行指定來源檔和輸出檔的 mime-type,程式如下:

1234567891011121314151617
public void convertSTW(String input, String output){
        DocumentFormat stw = new DocumentFormat("OpenOffice.org 1.0 Template", DocumentFamily.TEXT, "application/vnd.sun.xml.writer", "stw");
        DefaultDocumentFormatRegistry formatReg = new DefaultDocumentFormatRegistry();
        DocumentFormat pdf = formatReg.getFormatByFileExtension("pdf");
        File inputFile = new File(input);
        File outputFile = new File(output);
        OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
        try {
            connection.connect();
            DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
            converter.convert(inputFile, stw, outputFile, pdf);
        } catch(Exception e) {
            e.printStackTrace();
        } finally {
            try{ if(connection != null){connection.disconnect(); connection = null;}}catch(Exception e){}
        }
    }




上面的程式是轉換 STW 到 PDF,如果是 SXD / ODF 則只需要變更 DocumentFormat 的內容即可。

123
DocumentFormat sxd = new DocumentFormat("OpenOffice.org 1.0 Drawing", DocumentFamily.DRAWING, "application/vnd.sun.xml.sraw", "sxd");

DocumentFormat odf = new DocumentFormat("OpenDocument Math", DocumentFamily.TEXT, "application/vnd.oasis.opendocument.formula", "odf");




所有 default support 的 DocumentFormat 都在 com.artofsolving.jodconverter.DefaultDocumentFormatRegistry 裡,但並非所有 open office 支援的 file format 都有,所以要像上面的方法自行去定義 DocumentFormat。

在此獻給所有需要作 File Convert 的人試試。
免錢的,最好用。還有 source code 可以自己改。
分享到:
评论
8 楼 fireinjava 2012-10-30  
呀,不错,转走了,谢谢啦~
7 楼 longgol 2011-11-01  
执行转换之后, 下一次执行就会报错了.
Exception: conversion failed: could not load input document
6 楼 yeahgoodboy 2011-05-29  
兄弟,看到com.chinacreator命名的java包很亲切
5 楼 ainoke 2010-12-16  
非常感谢...
4 楼 javatim 2010-11-04  
兄弟,谢谢啦,我也在研究这个东东……
3 楼 zhangrong_rongzhang2 2010-08-31  
不过我想知道怎么让openOffice的服务做到开机启动
2 楼 zhangrong_rongzhang2 2010-08-31  
按照你这种方式,我的可以实现转pdf了。谢谢
1 楼 guoxhvip 2010-05-06  
请问这位朋友 为什么我照你的步骤执行 程序却一直卡住不动了
2010-5-6 16:08:33 com.artofsolving.jodconverter.openoffice.connection.AbstractOpenOfficeConnection connect
信息: connected

请问是哪个地方出现问题了?

相关推荐

    Java使用OpenOffice将word转换为pdf文件

    在Java中,我们可以利用JODConverter库,这是一个基于OpenOffice的文档转换工具,它可以轻松地将Office文档转换成其他格式,如PDF。 首先,你需要在你的项目中引入JODConverter依赖。如果你使用Maven,可以在pom....

    java OpenOffice wordExcel转换PDF

    JODConverter是基于OpenOffice的Java转换器,可以将Word、Excel、PowerPoint文档转换为PDF或者其他OpenDocument格式。这个压缩包中的jar包可能就包含了JODConverter的相关组件。 使用JODConverter进行转换的基本...

    VBS参考-使用openoffice将word转成PDF

    本例通过VB脚本使用openoffice将word转成PDF

    Java利用OpenOffice将word等office文档转换成PDF(附件在最后)

    本篇文章将详细介绍如何利用OpenOffice库在Java环境中将Word、Excel、PowerPoint等Microsoft Office文档转换为PDF格式。 首先,OpenOffice是一款开源的办公套件,它提供了一个称为UNO(Universal Network Objects)...

    Java用OpenOffice将office转换为PDF

    Java使用OpenOffice转换Office文档为PDF是一种常见的技术需求,尤其在企业级应用中,为了保持一致性和跨平台兼容性,可能会需要将Word、Excel或PowerPoint文档转换为PDF格式。以下将详细介绍如何在Java环境中利用...

    利用OpenOffice对html、word、pdf进行转换

    标题“利用OpenOffice对html、word、pdf进行转换”揭示了一个关键知识点,即如何使用开源办公软件OpenOffice处理不同格式的文档,特别是将其相互转换。OpenOffice是一个免费的办公套件,包含类似Microsoft Office的...

    openoffice的C#应用各种文档格式转换pdf

    本教程将详细讲解如何利用OpenOffice的API和C#编程语言来实现Word、Excel和PowerPoint文档转换为PDF格式。 一、OpenOffice的API简介 OpenOffice提供了一套名为UNO(Universal Network Objects)的接口,允许开发者...

    asp.net利用OpenOffice转换WORD/EXCEL/PDF为PDF,加水印源码

    本文将深入探讨如何使用ASP.NET结合OpenOffice库来实现Word、Excel和PDF文档到PDF的转换,并在此过程中添加水印功能。OpenOffice是一款开源的办公软件套件,它提供了API,允许开发者通过编程方式与之交互,进行文档...

    php借助openoffice把word转换pdf

    网站有许多转换pdf的代码.本人也用过office和wps,上传服务器期后出现了许多bug,最后选用openoffice实现最方便。前提服务器或电脑必须下载openoffice.具体配置文件参考:...

    ASP.NET利用OpenOffice转换文件至PDF

    在本篇文章中,我们将探讨如何使用 OpenOffice 将各种 Office 文档转换为 PDF 格式,这项技术可以应用于 ASP.NET 平台下。为了实现这项功能,我们需要安装 OpenOffice 和相应的 SDK,同时还需要引入特定的 DLL 文件...

    OpenOffice实现word、excel、ppt等文本文件转换pdf

    OpenOffice是一款开源的办公软件套件,它包含了处理文字、表格、演示文稿等多种...通过理解和利用OpenOffice的API,你可以构建自己的文件转换服务,实现从Word、Excel、PPT到PDF的无缝转换,从而满足在线预览的需求。

    office文档通过openoffice或者microsoft多线程转换成pdf文档并通过pdfjs显示

    标题提到的"office文档通过openoffice或者microsoft多线程转换成pdf文档"涉及到的技术主要包括办公软件API接口利用、多线程处理以及文件转换技术。首先,OpenOffice和Microsoft Office都提供了能够读取和操作Office...

    openoffice调用word生成html.rar

    此外,由于标签中提到了“pdf”,这个项目可能还提供了将Word转换为PDF的功能。这通常是通过先将Word转换为中间格式(如ODT),然后再转换为PDF的方式来实现的。 总结来说,这是一个利用Java调用OpenOffice服务实现...

    Vue项目导出为PDF的解决方案.pdf

    在这个示例中,`getPdf()`方法会自动调用,将`#pdfDom`内的所有内容转化为PDF并下载。注意,`getPdf()`方法的实现依赖于Vue实例,所以无需在`methods`中定义额外的方法。 总结来说,通过上述步骤,我们可以实现在...

    java利用openoffice,把word,execl,ppt转成图片,

    Entry.java这个类的原理是先通过OfficeToPDF.java把文档转成pdf,然后再通过Pdf2Jpg.java这个类把PDF转成JPG或者PNG,想转成什么格式图片在Pdf2Jpg.java这个类当中设置一下,代码经过测试,完全没有问题,如果碰到...

    OpenOffice转换Office文档为PDF、HTML

    本文将详细讲解如何使用OpenOffice进行转换,并探讨相关技术。 首先,让我们了解PDF和HTML这两种格式的特点。PDF(Portable Document Format)是一种通用的文件格式,能够保留原始文档的样式和布局,方便阅读和打印...

    openoffice--word转PDF

    OpenOffice是一款开源的办公软件套件,它提供了多种文件格式的互换功能,包括将Microsoft Word文档转换成PDF。本篇文章将深入探讨如何使用OpenOffice进行Word到PDF的转换,以及这一过程中的关键知识点。 首先,我们...

    Word、Excel等常用文档格式通过OpenOffice转换为pdf及图片

    Word、Excel等常用文档格式通过OpenOffice转换为pdf及图片,亲测,可用。Word、Excel等常用文档格式通过OpenOffice转换为pdf及图片,亲测,可用。Word、Excel等常用文档格式通过OpenOffice转换为pdf及图片,亲测,可用...

    word转换PDF

    在这个特定的"Word转换PDF"程序中,用户可以输入Word文件的路径,然后程序会读取这个Word文档,并使用OpenOffice的内部转换功能将其转换为PDF格式。 转换过程可能涉及到以下几个步骤: 1. 打开Word文档:程序首先...

    openoffice3doc转pdf

    标题中的"openoffice3doc转pdf"指的是使用OpenOffice 3.0版本将Microsoft Word(doc格式)文档转换成PDF格式。OpenOffice是一款开源的办公软件套件,它提供了文字处理、电子表格、演示文稿等多种功能,同时也支持...

Global site tag (gtag.js) - Google Analytics