我意识到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合作得很好?
答案 0 :(得分:0)
问题出现在版本中:尽管JOD转换器网站确实存在,但Maven并没有2.2。我通过将2.1 POM文件复制到leiningen自动创建的2.2目录中,并使用新版本信息调整POM,制作了本地maven repo。我粘贴在我从网站上获得的2.2 JAR中。之后,它工作正常,缺少的类正常运行。