0

我试图确定我的 xsl:fo 生成的 PDF 文件是否会超过一页,而不实际生成输出。我们在服务器上使用 Apache-FOP 0.95,并且在传递到 XSL-FO 模板之前使用 PHP DOMDocument 类生成 XML 数据。

我的问题:

是否有 PHP 库可以模拟 xsl:fo 输出并向我发送可以在我的应用程序中使用的报告?

或者,Apache FOP 本身(或同级 Java 应用程序)是否有一种方法可以在不实际生成文件的情况下发送报告?我一直在阅读 FOP 文档,除了一些我不能完全理解的东西之外,我还没有能够从 FOP 中找到一种方法来做到这一点。

4

1 回答 1

2

如果不通过布局引擎实际运行文档,就不可能“模拟”文档。此外,不同的 FO 处理器可能会产生略微不同的输出,因此您不能依靠其中一个的结果来猜测另一个的页数。

您可以使用 Apache FOP 0.95 生成所谓的区域树 XML(或中间格式)例如,它基本上将布局结果输出为 XML 文件而不是 PDF。然后可以使用 XPath(或 XSLT)检查该 XML 文件以确定页数。XML 格式没有正式描述,但您很快就会了解如何确定页数。因此,通过在命令行上使用“-at application/pdf simulation.xml”而不是“-pdf output.pdf”,您可以生成该 XML 格式。当然,生成最终文档所需的大部分处理都需要在这种情况下完成,因此再次重新运行整个文档以生成 PDF 将花费相当长的时间。好消息是您可以再次使用 AT XML 作为输入来生成最终的 PDF,因此不必再次运行布局阶段(请参阅文档中的“-atin”参数)。

当然,另一种可能性是只使用 PDF 工具来确定最终文档的页数。

高温高压

于 2010-06-12T07:14:50.723 回答