有没有像xsl:fo报道或xsl:fo模拟这样的东西?

时间:2010-06-11 18:47:06

标签: php xsl-fo apache-fop

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

我的问题:

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

或者,Apache FOP本身(或兄弟Java应用程序)是否有办法在不实际生成文件的情况下发送报告?我一直在阅读FOP文档,除了一些我无法完全理解的内容之外,我还没有找到一种方法在FOP中做到这一点。

1 个答案:

答案 0 :(得分:2)

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

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

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

HTH