2012-07-26 11 views
6

Ho un software che crea una descrizione XSL-FO da un file di testo e la converte in un documento PDF. Ogni riga nel file di testo viene convertita in un fo:block in FO, che suona male, ma non posso cambiarlo subito. Il mio documento contiene da 1 a 3 pagine di A4.Come posso creare un layout a due colonne con XSL-FO e FOP 1.0?

Quello che ora devo fare è aggiungere un grafico di circa 8 cm di larghezza sotto il testo esistente. Dovrebbe essere allineato a sinistra. Accanto ad esso voglio mettere un blocco di testo con una (lunga) descrizione.

Layout example

Ho guardato un paio di documentazioni per FO e arrivato fino a questo:

<fo:block intrusion-displace="block" margin-top="20mm"> 
<fo:float float="right"> 
    <fo:block margin-left="20mm"> 
    Bacon ipsum dolor sit amet laborum proident... 
    </fo:block> 
</fo:float> 
    <fo:external-graphic src="image.png"/> 
</fo:block> 

Questo sembrava essere quello che volevo (dopo un po 'la messa a punto, ovviamente), ma sfortunatamente FOP does not supportfo:float ancora.

Sembra esserci anche un modo per creare più colonne (senza tabella), ma non sono stato in grado di capire come funziona. Uno sembra aver bisogno di una nuova pagina per questo, ma ho bisogno di usare la pagina corrente se c'è spazio disponibile (che non devo preoccuparmi di immagino).

Quindi la mia domanda: C'è un altro modo per creare questo senza usare fo:float?

+4

+1 per bacon ipsum. :-) –

+1

Due colonne non sarebbero d'aiuto. Se il testo è più grande dell'immagine, il bilanciamento delle colonne avvierà il testo * sotto * l'immagine e proseguirà nella colonna successiva. Se il testo è certamente più piccolo, la tabella sembra essere buona. – bytebuster

risposta

4

Si può provare a utilizzare l'immagine come immagine di sfondo e lasciare un riempimento sinistro largo quanto l'immagine.

<fo:block intrusion-displace="block" margin-top="20mm"> 
    <fo:block padding-left="20mm" 
     background-image="image.png" 
     background-repeat="no-repeat"> 
    Bacon ipsum dolor sit amet laborum proident... 
    </fo:block> 
</fo:block> 

Se l'immagine necessita di ulteriore trattamento che è possibile solo con <fo:external-graphic>, è possibile utilizzare la tecnica imbottitura e un ulteriore, posizionato in modo assoluto block-contenitore:

<fo:block intrusion-displace="block" margin-top="20mm"> 
    <fo:block padding-left="20mm"> 
    Bacon ipsum dolor sit amet laborum proident... 
    </fo:block> 
    <fo:block-container absolute-position="absolute"> 
     <fo:block> 
      <fo:external-graphic src="image.png"/> 
     </fo:block> 
    </fo:block-container> 
</fo:block> 

Una terza possibilità sarebbe quella di utilizzare un tavolo.

Problemi correlati