通过HTTP转换文档

时间:2015-02-11 02:52:28

标签: java documents4j

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

示例:

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

更多信息:

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

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

一旦运行PDF,就可以通过http生成。

示例:

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 to PDF转换的功能。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

  1. 要定义输入类型,您使用的是HTTP Content-Type标题。
  2. 要定义请求的类型,您使用的是HTTP Accept标题。
  3. 例如,要将文件从MS Word转换为PDF,您可以使用application/vnd.com.documents4j.any-msword作为输入,application/pdf作为接受标头的类型。

    您还可以使用documents4j附带的客户端实现,并在Converter client in the readme下进行描述。该客户端发送了这样的请求。

    编辑:您需要为此设置自己的最小客户端应用程序。最小的应用程序看起来像这样:

    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使用。如果这是您的要求,您可以编写一个委托给该命令行工具的小应用程序。