我一直试图找出一种在XSL FO模板中使用javascript脚本来生成PDF的方法。经过大量的挖掘后,我开始意识到这可能是不可能的,因为据我所知,将XML数据转换为渲染的PDF表单的操作顺序是
XML - > XSL(转换) - > FO(格式化应用) - > PDF渲染引擎 - > PDF
我的问题是,javascript执行在这个管道中的位置是什么?很明显,脚本是在xsl转换完成后执行的,这就是为什么很多人遇到基于浏览器的XSL转换的复杂化,但是如果javascript部分在xsl转换后执行,但在FO格式化之前执行应用,然后技术上应该没有办法仍然让你的javascript脚本执行一些操作,如更新xsl fo文档中的参数,将由FO阶段合并,从而输出到PDF可见?
答案 0 :(得分:2)
您将浏览器与格式化引擎混淆。格式化引擎接受输入并进行打印输出(不是交互式输出)。您可以将代码放入Java或.NET(取决于您的XSLT引擎)以在XSL FO到达格式化引擎之前修改它...或者(如果您的FO引擎支持它)将Javascript嵌入到最终输出中(显然只有PDF)用于修改查看时发生的情况。没有XSL FO引擎(据我所知)会在流程管道中支持Javascript - 这是一个服务器进程,其中Javascript没有(通常)执行(因为它不在你的浏览器中)。