1

随着documents4j-server 在http://localhost:9998上运行和监听,是否可以使用直接HTTP 命令转换文档?

例子:

http://localhost:9998?source=C:\Test.doc?target=C:\Test.pdf

更多信息:

我比自己领先了几步...

我正在使用在 Apache-Tomcat 上运行的 Apache FOP servlet 作为从 XML / XSLT 生成 PDF 文档的服务。

运行后,可以通过 http 生成 PDF。

例子:

http://localhost:8080/fop/
  ?xml=C:/temp/Test.xml
  &xslt=C:/temp/Test-Style-Sheet.xsl
  &pdf=C:/temp/Test.pdf

我从我的数据库应用程序(设置 XML 源并管理生成的 PDF)中执行此命令。

我一直在寻找使用documents4j 执行类似操作以将Word Doc 转换为PDF 的能力。

所以我现在意识到我真正需要的是能够将源文档的名称/类型和转换类型(加上任何其他必需的参数)传递给外部程序/http端口,然后它可以适当地打包请求,然后启动正式的转换过程。

有人可以提供建议或解决方案吗?

4

1 回答 1

0

不是您尝试的方式,转换服务器将无法读取或写入您的文件系统。没有服务器可以做到这一点,这将是一个严重的安全漏洞。

相反,您可以通过 HTTP 将文件POST作为消息正文发送,这就是客户端所做的。然后答案包含转换后的文件作为响应的正文。您正在使用请求标头来指定您的请求:

  1. 为了定义输入类型,您使用的是 HTTPContent-Type标头。
  2. 为了定义请求的类型,您使用的是 HTTPAccept标头。

例如,要将文件从 MS Word 转换为 PDF,您可以将其application/vnd.com.documents4j.any-msword用作输入和application/pdf接受标头的类型。

您还可以使用documents4j 附带的客户端实现,该实现在自述文件的Converter client下进行了描述。该客户端发送的正是这样的请求。

编辑:您需要为此设置自己的最小客户端应用程序。一个最小的应用程序如下所示:

class MyApp {
  public static void main(String[] args) {
    IConverter converter = LocalConver.make();
    converter
      .convert(new File(args[0])).as(DocumentType.MS_WORD)
      .to(new File(args[1])).as(DocumentType.PDF)
      .execute();
    converter.shutDown();
  }
}

假设您通过命令行交出第一个和第二个命令。或者,您可以通过RemoteConverter. 当然,你也可以使用内置的命令行工具来处理那些通过 HTTP 不可用的工具。如果这是您的要求,您可以编写一个委托给该命令行工具的小应用程序。

于 2015-02-11T12:37:19.407 回答