FOP XSL-FO锚定在外部目的地

Joh*_*ann 10 anchor xsl-fo apache-fop

使用XSL-FO(Fop),我成功创建了外部PDF的链接:

<fo:basic-link show-destination="new">
<xsl:attribute name="external-destination">foo.pdf</xsl:attribute>
</fo:basic-link>
Run Code Online (Sandbox Code Playgroud)

但是现在,我想在这个外部PDF中找到一个锚点.所以我试着建立这样的东西:

<fo:basic-link show-destination="new">
<xsl:attribute name="external-destination">foo.pdf#anchorId</xsl:attribute>
</fo:basic-link>
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我点击生成的链接时,我收到一个错误.它试图打开文件foo.pdf%23anchorId.

在我的.fo文件中,#的链接是正确的,但在PDF转换过程中,这个#被误解释了.

你有想法解决这个问题吗?

谢谢,

约翰

Nav*_*wat 15

对于FOP,我们有两个链接:内部和外部.

对于外部,您可以使用:

   <fo:basic-link 
    external-destination="url('http://www.paulmccartney.com')" 
    color="blue" text-decoration="underline">
     Paul McCartney
   </fo:basic-link>
Run Code Online (Sandbox Code Playgroud)

和内部链接是从文档中的一个位置到同一文档中的另一个位置的链接.创建内部链接有两个步骤:

首先,为链接的位置提供唯一的ID.使用id属性指定ID.该值可以是硬编码的或生成的.在下面的示例中,我们使用generate-id()XSLT函数生成ID:

<fo:block font-weight="bold" font-size="larger" 
 id="{generate-id(.)}" break-before="page">
  <xsl:value-of select="."/>
 </fo:block>
Run Code Online (Sandbox Code Playgroud)

其次,创建指向该位置的链接.与外部链接一样,使用标记创建内部链接.internal-destination属性应设置为文档中其他位置的ID值.

<fo:basic-link internal-destination="{generate-id(.)}">
 <xsl:value-of select="."/>
</fo:basic-link>
Run Code Online (Sandbox Code Playgroud)

我想你错过了在'external-destination'属性中包含'url'关键字