使用XSLT将SOAP响应中的Base 64字符串转换为PDF



我的要求是从一个系统获取PDF文件并将其发送到另一个系统。通过进行一个web服务调用,我已经能够在SOAP响应中获得PDF文件的BASE64编码。

现在我需要将这个BASE64字符串转换回PDF并将PDF转储到另一个系统上。我被困在将SOAP响应中的BASE64字符串转换为PDF的问题上。我知道这在XSLT中是可以实现的。我一直在研究,但不幸的是,到目前为止还没有得到任何具体的东西。

有人能告诉我如何在XSLT中处理这个吗?一个示例代码片段将非常有帮助。如果有更好的方法,请告诉我。

谢谢Abhijit

在XSL工作组的讨论中,我们提出了一个当时不适合XSLT规范的需求,但我们确实将其纳入了EXPath规范:二进制模块1.0。

二进制模块的原生数据为xs:base64Binary。如果您知道Base-64字符串是一个正确的Base 64字符串,并且不需要任何进一步的处理,除了必须将其写成二进制PDF之外,您可以执行以下操作:

<xsl:value-of select="file:write-binary($file, $value)" />

函数的输出被定义为空序列,因此写入不会对当前输出流产生任何影响。您可以在规范中找到有关file:Write-binary函数的更多信息。

目前,我知道Saxon将要实现它(或者已经实现了),我们Exselt计划在初始版本发布后很快实现它。

注意:

"我知道这是可以用XSLT实现的。"

不,不是现成的。但是XSLT可以将XML或其他输入转换为XSL-FO(或其他中间输出),后者可以呈现为PDF,这是一个非常常见的XSLT编程用例。

然而,XSLT是非常可扩展的,您既可以编写自己的扩展函数,也可以使用来自知名库的扩展函数,比如在本例中,来自Binary Module。

最新更新