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端口,然后可以将请求打包适本地然后启动正式的转换过程。
有人可以提供建议或解决方案吗?
最佳答案
如果不是您尝试的方式,转换服务器将无法读取或写入您的文件系统。没有服务器可以做到这一点,这将是一个严重的安全漏洞。
相反,您可以通过 HTTP POST
将文件作为消息正文发送,这就是客户端所做的。然后,答案包含转换后的文件作为响应的正文。您正在使用请求 header 来指定您的请求:
- 为了定义输入类型,您将使用 HTTP
Content-Type
header 。 - 为了定义请求的类型,您将使用 HTTP
Accept
header 。
举个例子,要将文件从 MS Word 转换为 PDF,您可以使用 application/vnd.com.documents4j.any-msword
作为输入,使用 application/pdf
作为接受 header 的类型。
您还可以使用docs4j附带的客户端实现,这在 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 无法提供的功能。如果这是您的要求,您可以编写一个委托(delegate)给该命令行工具的小应用程序。
关于java - 通过 HTTP 转换文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28445772/