Saxon:XSLT图像处理:无法从xs:string转换为字节
以下代码:Saxon:XSLT图像处理:无法从xs:string转换为字节,xslt,saxon,Xslt,Saxon,以下代码: <xsl:message>[threfUrl] <xsl:value-of select="$threfUrl" /></xsl:message> <xsl:variable name="actualHeight" select="itext:getPlainHeight(itext:getInstance($threfUrl))" /> PNG文件存在且可读。使用萨克森9。名称空间:itext=“java:com.itextpdf.
<xsl:message>[threfUrl] <xsl:value-of select="$threfUrl" /></xsl:message>
<xsl:variable name="actualHeight" select="itext:getPlainHeight(itext:getInstance($threfUrl))" />
PNG文件存在且可读。使用萨克森9。名称空间:itext=“java:com.itextpdf.text.Image”
关于什么是错误(错误消息没有帮助)或如何修复的任何线索?
“file:/”语法正确吗?假设您正在使用tryselect=“itext:getPlainHeight(itext:new($threfUrl))”
。如果这不起作用,则显式构造URL,如中所示
<xsl:variable name="actualHeight" xmlns:url="java:java.net.URL" select="itext:getPlainHeight(itext:new(url:new($threfUrl)))" />
所以这个构造函数是公共的
可能有不同版本的API,我不知道为什么会出现错误。另一次尝试可能是您最初的尝试,但会传入一个URL,所以
<xsl:variable name="actualHeight" xmlns:url="java:java.net.URL" select="itext:getPlainHeight(itext:getInstance(url:new($threfUrl)))" />
请共享该itext
前缀的名称空间以及您正在使用的Saxon的确切版本。您正在尝试调用Java方法吗?哪个班的?方法的签名看起来到底是什么样的?感谢Martin提供了重要的细节!构造函数受到保护,因此itext:new()无法工作。getInstance()的问题是有很多重载,例如一个需要Url,另一个需要图像;和xs:string无法转换为任何。使用url:new()应该会有所帮助(我假设$thefull是一个字符串,因为我们没有被告知其他情况),但是解决重载方法可能仍然很棘手。至于原始错误,getInstance()的一个重载需要一个字节[],我认为它是根据特定的重载报告错误的找不到匹配的名为{java:com.itextpdf.text.Image}new()的单参数函数。@Dan,我编辑了答案以尝试另一个建议,基本上是您最初的尝试,但传递的是URL而不是字符串。我恐怕目前不知道如何解决这个问题,可能会有帮助,或者Michael可以告诉您更多。
Constructor Detail
Image
public Image(URL url)
Constructs an Image -object, using an url .
Parameters:
url - the URL where the image can be found.
<xsl:variable name="actualHeight" xmlns:url="java:java.net.URL" select="itext:getPlainHeight(itext:getInstance(url:new($threfUrl)))" />