JOD转换器到pdf API不知道docx?

时间:2016-03-04 20:36:05

标签: java clojure docx libreoffice jodconverter

我意识到jodconverter已经遗弃了一段时间,但是人们仍然将它作为用于docx到pdf转换的工具。我正在尝试使用我的Clojure应用程序来转换某些模板docx。它从命令行运行得很好:

soffice --headless --accept="socket,host=127.0.0.1,port=8100;urp;" --nofirststartwizard &
java -jar lib/jodconverter-cli-2.2.2.jar $mydocx ~/temp/mydocxout.pdf

输出很棒。但是,我似乎无法从我的应用程序中获取工作,这是在clojure中并且正在尝试按照此处的说明进行操作:http://www.artofsolving.com/opensource/jodconverter/guide/scripting-languages.html

我的REPL会话如下所示:

my-app.users> (def connection (SocketOpenOfficeConnection.))
        #'my-app.users/connection
my-app.users> connection
        #object[com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection 0x4f3c5073 "com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection@4f3c5073"]
my-app.users> (def connection (SocketOpenOfficeConnection. 8100))
        #'my-app.users/connection
my-app.users> (def registry (DefaultDocumentFormatRegistry.))
        #'my-app.users/registry
my-app.users> (def converter (OpenOfficeDocumentConverter. connection registry))
        #'my-app.users/converter
my-app.users> (def pdf (.getFormatByFileExtension registry "pdf"))
        #'my-app.users/pdf
my-app.users> pdf
        #object[com.artofsolving.jodconverter.DocumentFormat 0x3bd2e41 "com.artofsolving.jodconverter.DocumentFormat@3bd2e41"]
my-app.users> (def pdf-options {"ReduceImageResolution" true 
                                      "MaxImageResolution" 300})
        #'my-app.users/pdf-options
my-app.users> (.setExportOption pdf DocumentFamily/TEXT "FilterData" pdf-options)
        nil
my-app.users> (def input (io/file "resources/docx-templates/titlepage-image.docx"))
        #'my-app.users/input
my-app.users> (def output (io/file "/temp/jodout.pdf"))
        #'my-app.users/output
my-app.users> (.convert converter input output pdf)
IllegalArgumentException unknown document format for file: resources/docx-templates/titlepage-image.docx  com.artofsolving.jodconverter.openoffice.converter.AbstractOpenOfficeDocumentConverter.guessDocumentFormat (AbstractOpenOfficeDocumentConverter.java:121)
my-app.users> (def docx (.getFormatByFileExtension registry "docx"))
        #'my-app.users/docx
my-app.users> docx
        nil

正如您所看到的,问题是最后一点:由于某种原因,它似乎不知道docx格式,尽管CLI工作得很好。我怎样才能让API合作得很好?

1 个答案:

答案 0 :(得分:0)

问题出现在版本中:尽管JOD转换器网站确实存在,但Maven并没有2.2。我通过将2.1 POM文件复制到leiningen自动创建的2.2目录中,并使用新版本信息调整POM,制作了本地maven repo。我粘贴在我从网站上获得的2.2 JAR中。之后,它工作正常,缺少的类正常运行。