jodconverter 远程配置_jodconverter支持什么格式转换
展開全部
http://nopainnogain.iteye.com/blog/819432
[JODConverter]word轉(zhuǎn)pdf心得分享(轉(zhuǎn))
文檔視頻轉(zhuǎn)為flash格式在線播放
OfficeSocketLinuxOpenSourceExcel
官方網(wǎng)站: http://www.artofsolving.com/opensource/jodconverter
下載地點(diǎn):
e68a84e8a2ad62616964757a686964616f31333361303062http://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主要的功能是用來做各種檔案的轉(zhuǎn)換. 目前測試過, Word,Excel,PowerPoint轉(zhuǎn)PDF都是沒問題的.
因?yàn)镴ODConverter是透過OpenOffice來做轉(zhuǎn)換, 所以使用前需要先安裝OpenOffice, 并且將OpenOffice的Service啟動(dòng), 才可以使用.
OpenOffice.org具有一個(gè)鮮為人知的特性就是其能夠作為一個(gè)服務(wù)來運(yùn)行,而這種能力具有一定的妙用。舉例來說,你可以把openoffice.og變成一個(gè)轉(zhuǎn)換引擎,利用這種轉(zhuǎn)換引擎你可以通過網(wǎng)絡(luò)接口或命令行工具對(duì)文件的格式進(jìn)行轉(zhuǎn)換,JODConverter可以幫助你實(shí)現(xiàn)OpenOffice.org的這種文件轉(zhuǎn)換功能。
為了將OpenOffice.org作為一個(gè)轉(zhuǎn)換引擎,你必須以服務(wù)的方式將它啟動(dòng),使它在某個(gè)特定的端口監(jiān)聽連接,在Linux平臺(tái)你可以用如下的命令啟動(dòng)openoffice.org:
soffice -headless -accept=”socket,port=8100;urp;”(我在linux下使用soffice -headless -accept=”socket,host=127.0.0.1,port=8100;urp;”,open office server是開啟來了,但是文件轉(zhuǎn)換不成功,異常是連接失敗,這個(gè)很可以是你用jodconverter來轉(zhuǎn)換時(shí)使用的是localhost,而當(dāng)你的機(jī)有host配置文件里沒有將localhost與127.0.0.1對(duì)應(yīng)起來時(shí),就無法解析了,這里可以修改host文件或去掉host=127.0.0.1,這樣我試過可以成功)
在Windows平臺(tái), 使用如下命令:
“C:\Program Files\OpenOffice.org 2.2\program\soffice” -accept=”socket,port=8100;urp;”
使用教學(xué):
Step1: 安裝OpenOffice
Step2: 啟動(dòng)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檔放進(jìn)專案中的Library, 請(qǐng)檢查你的專案是否包含以下的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: 準(zhǔn)備一個(gè)word檔放在c:/document.doc
Step5: 執(zhí)行以下程式
Java代碼
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();
}
}
程式說明:
程式的部份相當(dāng)簡潔, 特別要注意的地方是第12行連線的port必須與你啟動(dòng)OpenOffice的Port相同,
另外JODConverter預(yù)設(shè)是用副檔名作文件種類的判斷, 所以副檔名必須要正確才行.
如果副檔名比較特別的話, 就必須在convert()的時(shí)候強(qiáng)制指定Document Type.
心得:
JODConverter使用起來相當(dāng)方便, 官網(wǎng)也提供War檔讓JODConverter變成Web Service提供給不同的語言來呼叫.
特別要注意的是, OpenOffice Service并不是ThreadSafe的, 多個(gè)Web AP在使用的時(shí)候必須要注意.
那我也來補(bǔ)充一些好了
之前也在試這個(gè)檔案轉(zhuǎn)換的程式
程式最好加上 try-catch
因?yàn)橹鞍l(fā)現(xiàn)有些檔案 format 不能轉(zhuǎn),發(fā)生 Exception 后,connection 不會(huì)自動(dòng)切斷,程序會(huì)hand 住
所以改成如下方式:
Java代碼
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 的檔案,卻生不能轉(zhuǎn)換的問題。例如:*.STW, *.SXD, *.ODF 等,後來才知道可以自行指定來源檔和輸出檔的 mime-type,程式如下:
Java代碼
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){}
}
}
上面的程式是轉(zhuǎn)換 STW 到 PDF,如果是 SXD / ODF 則只需要變更 DocumentFormat 的內(nèi)容即可。
Java代碼
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,至于它里面的參數(shù)可以從jodconverter-2.2.2.jar包的com.artofsolving.jodconverter包下的document-formats.xml文件里面得到,這樣就可以完成多種格式的轉(zhuǎn)換,如open office,ms office , wps office及所有的純文本文件。
在此獻(xiàn)給所有需要作 File Convert 的人試試。
免錢的,最好用。還有 source code 可以自己改。
另 將圖片文件放入 word中可直接用word自帶 pdf 轉(zhuǎn)化工具進(jìn)行轉(zhuǎn)化!
本回答被提問者采納
已贊過
已踩過<
你對(duì)這個(gè)回答的評(píng)價(jià)是?
評(píng)論
收起
總結(jié)
以上是生活随笔為你收集整理的jodconverter 远程配置_jodconverter支持什么格式转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot集成quartz完成
- 下一篇: 网站内容更新技巧