使用xsl fo在PDF文档中创建超链接

时间:2017-06-18 22:31:49

标签: xslt xsl-fo apache-fop

我正在使用xsl fo和Java从XML生成PDF。我需要在我的6列表的一列中嵌入一个超链接。这是我的代码片段。

    <fo:table-row>
    <xsl:for-each select="./clientMain/hierarchy/link">
    <fo:table-cell border="solid 1px black" text-align="left" font-size="10pt"><fo:block>Hierarchy</fo:block></fo:table-cell>
    <fo:table-cell border="solid 1px black" text-align="left" font-size="9pt">
    <fo:block><a>
    <xsl:attribute name="href"><xsl:value-of select="@link"/></xsl:attribute>
    </a></fo:block>
    <fo:block><xsl:value-of select="@link"/></fo:block></fo:table-cell>
    </xsl:for-each>
    </fo:table-row>

但我的程序因此错误而失败:

javax.xml.transform.TransformerException: org.apache.fop.fo.ValidationException: "fo:table-row" is missing child elements. Required content model: (table-cell+) (No context info available)
    at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:718)
    at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336)
    at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:682)
    at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336)
    at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:682)
    at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336)

如果我评论这一行,一切正常。请帮忙 !!!!

1 个答案:

答案 0 :(得分:3)

“fo:table-row”的解决方案不是缺少子元素的错误,而是:

查看您的代码,我希望链接不起作用。而不是<a>标记,请使用<fo:basic-link internal-destination="@link" color="blue">

这假设@link包含对PDF中某处ID的引用。

对于外部链接,请使用<fo:basic-link external-destination="url">