1

我意识到 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

如您所见,问题出在最后一点:尽管 CLI 运行良好,但由于某种原因,它似乎不了解 docx 格式。我怎样才能让 API 也能很好地合作?

4

1 回答 1

0

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

于 2016-03-09T00:23:25.003 回答