【发布时间】:2014-07-04 02:07:45
【问题描述】:
我真的不知道我需要什么,但我需要想法,所以我会提供我所知道的一切。
有一个 linux 服务器,在服务器端有一个基于 Web 的数据库应用程序,主要使用 PHP/MySQL 创建,用于跟踪所有业务相关信息、发票、库存、客户数据......
车间中的一些计算机具有专门的应用程序(Windows 操作系统),它们将日志创建为 PDF 报告,无法通过应用程序界面永久保存。报告只能打印或删除。我在那些客户端机器上找到了在应用程序运行时填充数据的文件。我想自动化将该数据填充到服务器上的数据库中的过程。
应用程序使用 XSL-FO 架构文件,以编程方式插入值并生成 PDF 文件,可以从他们自己的编辑器中打印或丢弃,或者从临时位置手动打开并作为副本保存在其他地方。根据一些消息来源,XSL-FO 可用于生成 XML 文件,但我看不出如何进行此类更改。 Apache FOP 1.0 是使用的引擎,并且一些配置文件是可见的,所以如果我可以对配置文件进行更改,从而导致创建 XML 而不是 PDF,那将解决我的大部分问题。有没有办法做到这一点?
如果我将配置文件渲染器属性从
<renderer mime="application/pdf">
到
<renderer mime="application/xml">
我会实现我的目标吗?
我找到了一些解决方案,但需要建议其中哪些可行。
我也许可以创建一些简单的脚本,将文件发送到服务器上的特定文件夹,在某些服务器端,我假设 php 脚本会将文件转换为 XML 或 JSON 并解析出相关信息并更新数据库。
我可以使用一些简单的(免费)windows 工具来进行转换和解析,并将格式为 XML 或 JSON 的文本文件发送到服务器进行进一步处理。
使用虚拟打印机在预定义文件夹中创建 PDF 文件副本,并将该文件用作选项 1 或选项 2 的起点
还有其他方法吗?你能推荐一个可以帮助我的应用程序/api/lib/吗,或者只是给我一个正确的方法来思考这个问题。
谢谢
【问题讨论】:
-
XSL-FO is XML(在
http://www.w3.org/1999/XSL/Format命名空间中)。无论您打算对转换后的 XML 做什么,都应该能够直接使用 XSL-FO。您不必对呈现的 PDF 做任何事情。 -
我看不出这怎么可能。 XSL-FO 是一个文件,它定义了各种字符串的结构和页到页位置。 XLS-FO 以编程方式与实时数据相结合以创建 PDF。 XSL-FO 有数据变量,但在变成 PDF 之前没有数据。
-
这是不正确的。 XSL FO 包含所有数据,没有变量。丹尼尔黑利是正确的。虽然这可能并不容易,但从 XML(XSL FO 就是)中提取数据要比尝试解析 PDF 容易得多。
-
从 XML 到 PDF 的步骤是一个有损步骤。您丢失了关键信息(数据标签、层次结构、文本段落),解析 PDF 得到的只是非结构化数据:字体、大小、坐标、文本片段。
-
如果(如上所述)您有一个“XSL FO”(注意引号)文件,其中包含以编程方式注入的数据的占位符,那么您没有“XSL FO”。您有一个包含 XSL FO 标记的伪模板,但它不是 XSL FO 文件。如果他们不使用传统的 XML+XSL 来获取 FO,并且您无法通过替换来截取数据或生成的文件,那么您还有工作要做。您可以使用 FOP 中的 XML 区域树表示并尝试使用空间信息来提取信息。比从 PDF 中尝试要容易一些。
标签: xml json windows pdf xsl-fo