2013-02-05 12 views
8

Con XSL-FO (Fop), sono riuscito a creare un link ad un PDF esterno:FOP XSL-FO ancoraggio in una destinazione esterna

<fo:basic-link show-destination="new"> 
<xsl:attribute name="external-destination">foo.pdf</xsl:attribute> 
</fo:basic-link> 

Ma ora, vorrei raggiungere un ancoraggio in questo PDF esterno. Così ho provato a costruire qualcosa del genere:

<fo:basic-link show-destination="new"> 
<xsl:attribute name="external-destination">foo.pdf#anchorId</xsl:attribute> 
</fo:basic-link> 

Sfortunatamente, quando faccio clic sul collegamento generato, ottengo un errore. Prova ad aprire il documento foo.pdf% 23anchorId.

Nel mio file .fo, il collegamento è corretto con un # ma questo # viene misconosciuto durante la trasformazione in PDF.

Avete un'idea per risolvere questo problema?

Grazie,

Johann

risposta

11

Per FOP abbiamo due dei link: interno ed esterno.

per esterni è possibile utilizzare:

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

e collegamenti interni sono collegamenti da una posizione in un documento in un'altra posizione nello stesso documento. Esistono due passaggi per creare collegamenti interni:

Innanzitutto, fornire un ID univoco alla posizione a cui si è collegati. Gli ID sono specificati con l'attributo id. Il valore può essere hardcoded o generato. Nell'esempio riportato di seguito, si usa la funzione XSLT generate-id() per generare ID:

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

In secondo luogo, creare il collegamento a quella posizione. Come con i link esterni, i collegamenti interni sono creati con il tag. L'attributo di destinazione interna deve essere impostato sul valore di un ID altrove nel documento.

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

penso che vi siete persi includere parola chiave 'url' a 'esterno-meta' attributo

+0

Grazie per la risposta Navin. Sembra che non sia possibile creare un collegamento ibrido (sia esterno che interno). Inoltre, penso di non dover includere "url" nel mio attributo perché voglio creare un link verso un file PDF che si trova nella stessa cartella. – Johann