我的要求是从一个系统获取PDF文件并将其发送到另一个系统。 通过进行webservice调用,我能够在SOAP响应中获得PDF文件的BASE64编码。
现在我需要将此BASE64字符串转换回PDF并将PDF转储到另一个系统上。 我坚持将SOAP响应中的BASE64字符串转换为PDF。我知道这是XSLT中可以实现的。我一直在研究,但不幸的是到目前为止还没有得到任何具体的东西。
有人可以说明如何在XSLT中处理这个问题吗?示例代码段非常有用。如果对这种情况有更好的解决方法,请告诉我。
由于 作者Abhijit
答案 0 :(得分:0)
在XSL WG讨论期间,我们提出了一个当时不符合XSLT规范的要求,但我们确实将其纳入了EXPath规范:Binary Module 1.0。
二进制模块的本机数据是xs:base64Binary
。如果您知道Base-64字符串是正确的Base 64字符串并且不需要任何进一步处理,除了它必须写为二进制PDF,您可以执行以下操作:
<xsl:value-of select="file:write-binary($file, $value)" />
函数的输出被定义为空序列,因此写入不会在当前输出流中产生任何影响。您可以在file:Write-binary
function in the spec上找到更多信息。
目前,我知道Saxon是going to implement it(或已经有),Exselt我们正计划在首次发布后很快实施它。
注意:
&#34;我知道这是XSLT中可以实现的。&#34;
不,不是开箱即用的。但是XSLT可以将XML或其他输入转换为可以呈现为PDF的XSL-FO(或其他中间输出),这是一种非常常见的XSLT编程用例。
然而,XSLT是非常可扩展的,您可以编写自己的扩展函数,也可以使用来自二进制模块的知名库中的扩展函数,如本例所示。