`
struts
  • 浏览: 76071 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jodconverter

    博客分类:
  • java
阅读更多
官方網站:
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 可以自己改。
分享到:
评论

相关推荐

    jodconverter-cli,jodconverter 2.2.2版本

    **JodConverter CLI与JodConverter 2.2.2版本详解** JodConverter是一款强大的文档转换工具,尤其在处理OpenOffice和LibreOffice格式之间的转换时表现出色。它的核心功能在于利用OpenOffice或LibreOffice的API来...

    jodconverter-2.2.2.jar和jodconverter-cli-2.2.2.jar

    jodconverter-2.2.2.jar和jodconverter-cli-2.2.2.jar jodconverter-2.2.1不支持docx格式的word文档转换,2.2.2支持 linux和windows安装openOffice java通过jodconverter 将excel、doc文件转成pdf或html,比2.2.1...

    jodconverter-2.2.2.jar

    **JodConverter 2.2.2:Java Office文档转换利器** JodConverter是一个基于Java的开源库,专为处理Office文档转换而设计。在这个压缩包中,我们有两个主要文件:`jodconverter-2.2.2.jar` 和 `jodconverter-2.2.2...

    jodconverter 2.2.2的jar包

    《jodconverter 2.2.2:Word文档到PDF转换的利器》 在信息技术领域,文件转换是一项常见的需求,特别是在处理各种文档格式时。jodconverter是一款强大的开源工具,它允许用户轻松地将Microsoft Office文档转换为PDF...

    jodConverter所需的jar

    【标题】"jodConverter所需的jar"涉及到的是一个与Java相关的技术点,主要与文档转换工具有关。jodConverter是一款开源的文档转换工具,它能够将OpenOffice或LibreOffice支持的文档格式(如ODT、DOC、XLS、PPT等)...

    jodconverter2-master_jodconverter官网_jodconverter2-master_

    JODConverter是一款基于Java的开源文档转换工具,主要功能是将各种文档格式转换为OpenDocument格式或从OpenDocument格式转换为其他常见的文档格式,如Microsoft Office的DOC、XLS、PPT等。这款工具的核心依赖是...

    文件预览时用到的jodconverter.jar

    《jodconverter.jar在文件预览中的应用详解》 在信息技术领域,文件预览是一项基本且重要的功能,它使得用户无需打开文件即可查看其内容,极大地提升了工作效率。在这个过程中,一个名为jodconverter的工具起着至关...

    jodconverter-2.2.2.zip完整资源包

    **JodConverter 2.2.2 完整资源包详解** JodConverter 是一个流行的开源Java库,用于将OpenOffice或LibreOffice文档转换为其他格式,如PDF、DOCX到PDF等。这个资源包提供了JodConverter的2.2.2版本,对于那些在...

    jodconverter最新版本3.0,支持office2007

    JodConverter是一款强大的Java库,专门用于将Microsoft Office文档转换为PDF或其他OpenDocument格式。它基于OpenOffice.org或LibreOffice的API,提供了一个简洁的接口来处理文档转换任务。最新版本3.0针对Office ...

    jodconverter-2.2.2.jar架包

    《jodconverter-2.2.2.jar:高效便捷的Word到PDF转换工具》 在IT行业中,文档格式转换是一项常见的需求,特别是在处理多种不同软件生成的文档时。例如,微软的Word文档(.doc或.docx)在某些场景下需要转换为更稳定...

    jodconverter2.2.2 jar包(openoffice转换docx)

    《使用JODConverter 2.2.2进行OpenOffice文档转换》 在IT行业中,处理各种格式的文档是一项常见的任务,尤其是将文档从一种格式转换为另一种格式。OpenOffice是一款开源的办公软件套件,它支持多种文件格式,但有时...

    jodconverter 2.2.2全面支持docx、xlsx

    《jodconverter 2.2.2:全面支持docx、xlsx格式转换的利器》 在信息化时代,文档处理和转换成为了日常工作中不可或缺的一部分。jodconverter,作为一个强大的开源工具,为用户提供了便利的文件格式转换功能。尤其在...

    jodconverter 2.2.2 及其相关jar包

    JodConverter一个Java的OpenDocument 文件转换器,可以进行许多文件格式的转换,它利用OpenOffice所提供的转换介面来进行转换工作,它能进行以下的转换工作: 一、Microsoft Office格式转换为OpenDocument,以及...

    jodconverter2.2.2.jar Maven依赖包

    标题“jodconverter2.2.2.jar Maven依赖包”涉及到的是一个Java开发中的关键组件,即JODConverter库的一个特定版本。JODConverter是一个开源的文档转换工具,它允许用户在Java应用程序中方便地将各种Office文档格式...

    jodconverter-3.0-beta-4.jar

    《JodConverter——Java办公文档转换利器》 在IT领域,文档转换是一个常见的需求,尤其在企业级应用中,为了实现不同格式之间的互换,如将PDF转换为Word,或者反之,开发者通常需要借助特定的工具。JodConverter...

    jodconverter4.1+ OpenOffice 4.1.5在线预览文档

    "jodconverter4.1+ OpenOffice 4.1.5在线预览文档"是一个针对这一需求的解决方案,它结合了Java技术、Maven构建工具以及开源的OpenOffice软件,实现了高效且灵活的Office文档在线预览功能。 首先,jodconverter是一...

    jodconverter-2.2.2.jar及相关包

    《jodconverter-2.2.2.jar及相关包:OpenOffice与PDF转换的关键工具》 在信息技术领域,文档转换是一项常见的需求,特别是在处理不同格式之间的兼容性问题时。"jodconverter-2.2.2.jar及相关包"是解决此类问题的...

    jodconverter-2.2.1.rar

    **JodConverter 2.2.1:OpenOffice 转换工具的增强与文本编码问题解决方案** 在IT行业中,转换文档格式是一项常见的任务,尤其是将Microsoft Office文档转换为PDF或其他格式。`jodconverter-2.2.1.rar`是一个针对...

    jodconverter-2.2.2_转pdf.rar

    《JodConverter 2.2.2:Java与OpenOffice结合的PDF转换神器》 在IT领域,文档格式转换是一项常见的需求,特别是将Word、Excel等Microsoft Office文档转换为PDF格式,以保证内容的准确性和一致性。JodConverter ...

Global site tag (gtag.js) - Google Analytics