请教大神,用jodconverter把jpg等图片文件转换成pdf

1个回答

写回答

Feeeeeeeya

2026-01-13 10:10

+ 关注

AI
AI

说明 这是我在网上转载的! 原网址 AInnogAIn.iteye.com/blog/819432">http://nopAInnogAIn.iteye.com/blog/819432

[JODConverter]word转pdf心得分享(转) 文档视频转为flash格式在线播放OfficeSocketlinuxOpenSourceexcel 官方网站: 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启动, 才可以使用.

word
word

OpenOffice.org具有一个鲜为人知的特性就是其能够作为一个服务来运行,而这种能力具有一定的妙用。举例来说,你可以把openoffice.og变成一个转换引擎,利用这种转换引擎你可以通过网络接口或命令行工具对文件的格式进行转换,JODConverter可以帮助你实现OpenOffice.org的这种文件转换功能。 为了将OpenOffice.org作为一个转换引擎,你必须以服务的方式将它启动,使它在某个特定的端口监听连接,在linux平台你可以用如下的命令启动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是开启来了,但是文件转换不成功,异常是连接失败,这个很可以是你用jodconverter来转换时使用的是localhost,而当你的机有host配置文件里没有将localhost与127.0.0.1对应起来时,就无法解析了,这里可以修改host文件或去掉host=127.0.0.1,这样我试过可以成功)在Windows平台, 使用如下命令:“C:\Program Files\OpenOffice.org 2.2\program\soffice” -accept=”socket,port=8100;urp;”  使用教学:   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: 执行以下程式

Java代码 span style=font-size: medium;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();   }   } /span 程式说明:

  程式的部份相当简洁, 特别要注意的地方是第12行连线的port必须与你启动OpenOffice的Port相同,   另外JODConverter预设是用副档名作文件种类的判断, 所以副档名必须要正确才行.   如果副档名比较特别的话, 就必须在convert()的时候强制指定Document Type.

心得:   JODConverter使用起来相当方便, 官网也提供War档让JODConverter变成Web Service提供给不同的语言来呼叫.   特别要注意的是, OpenOffice Service并不是ThreadSafe的, 多个Web AP在使用的时候必须要注意.

那我也来补充一些好了 之前也在试这个档案转换的程式 程式最好加上 try-catch 因为之前发现有些档案 format 不能转,发生 Exception 后,connection 不会自动切断,程序会hand 住 所以改成如下方式:

Java代码 span style=font-size: medium;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){} } } /span

再来,明明就是 open office 的档案,却生不能转换的问题。例如:*.STW, *.SXD, *.ODF 等,後来才知道可以自行指定来源档和输出档的 mime-type,程式如下:

Java代码 span style=font-size: medium;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){} } } /span 上面的程式是转换 STW 到 PDF,如果是 SXD / ODF 则只需要变更 DocumentFormat 的内容即可。

Java代码 span style=font-size: medium;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); /span 所有 default support 的 DocumentFormat 都在 com.artofsolving.jodconverter.DefaultDocumentFormatRegistry 里,但并非所有 open office 支援的 file format 都有,所以要像上面的方法自行去定义 DocumentFormat,至于它里面的参数可以从jodconverter-2.2.2.jar包的com.artofsolving.jodconverter包下的document-formats.XML文件里面得到,这样就可以完成多种格式的转换,如open office,ms office , wps office及所有的纯文本文件。

在此献给所有需要作 File Convert 的人试试。 免钱的,最好用。还有 source code 可以自己改。

另 将图片文件放入 word中可直接用word自带 pdf 转化工具进行转化! 希望可以帮到你

举报有用(0分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号