2017-12-28 15 views
1

Kämpfen Ich hoffe, Sie alle hatten bis jetzt einige frohe Feiertage!Mit einigen Rand in einer Tabelle in XSL erzeugten FO Dokument

Ich arbeite gerade an einer XSLT Transformation von DocBook zu Apache fo (und dann weiter zu PDF), aber ich kämpfe mit einem Tisch.

Hier ist der relevante Teil meines Stylesheets.

<fo:block> 
    <fo:table border-style="none" border-width="0pt">  
    <fo:table-column column-width="20%"/> 
    <fo:table-column column-width="80%"/>     
    <fo:table-body>            
     <fo:table-row>            
     <fo:table-cell border-style="solid" border-width="1pt" text-align="start" padding-left="0cm"> 
      <fo:block font-weight="bold">First Column <xsl:text> </xsl:text> <xsl:number level="multiple" count="d:appnote" format="1"/> 
      </fo:block>       
     </fo:table-cell>       
     <fo:table-cell border-style="solid" border-width="1pt" text-align="start"> 
      <fo:block><xsl:value-of select="d:description" /></fo:block> 
     </fo:table-cell>       
     </fo:table-row> 
    </fo:table-body> 
    </fo:table> 
</fo:block> 

Leider zeigt die resultierende Tabelle einige ziemlich große Margen zwischen dem linken Rand der Tabelle und den Anfang des Textes (auch wenn ich padding-left = „0cm“ gesetzt) ​​

enter image description here

Ich habe ein Dutzend verschiedener Attribute und Optionen ausprobiert, aber ich kann diesen Whitespace nicht loswerden.
Hat jemand einen Tipp für mich?

+0

Betrachten hinzufügen schreiben minimal, aber vollständige Proben, damit andere das Problem zu reproduzieren. Ich habe versucht, die PDF-Generierung einfach anhand des XSL-FO-Snippets zu testen, das Sie unter http://xsltfiddle.liberty-development.net/bFukv8a angezeigt haben. Der Text beginnt am linken Rand jeder Spalte. –

+0

Das hilft schon sehr! Ich werde später versuchen, ein funktionierendes minimales Beispiel hinzuzufügen, aber es sagt mir, dass ich nicht nach dem Problem in der XSLT suchen muss. Vielleicht ist es ein Problem mit meinem Apache-Fop .... – Norbert

+0

Es ist wahrscheinlich, dass der Inhalt der Tabellenzellen eine 'Start-Einrückung' erbt, die auf einem Vorfahrelement (sogar einem sehr entfernten) gesetzt ist; Wenn dies der Fall ist, könnten Sie ein 'start-indent =" 0pt "' Attribut auf dem 'table-body' hinzufügen, um es auf 0" zurückzusetzen ". – lfurini

Antwort

2

Die start-indent Eigenschaft ist geerbt von den Nachkommen FO Elemente der einen, wo es gesetzt ist, was manchmal zu einigen kontraintuitiven Ergebnissen führt.

Wie offenbar nicht alle Implementierungen in der gleichen Art und Weise verhalten, hat FOP Website einen bestimmten Eintrag in der FAQ: When I use margins, my content in a nested table or block-containers gets indented twice. Is this a bug?


in Ihrer Situation So ist es wahrscheinlich, dass der Inhalt der Tabellenzellen ein start-indent vererben setze auf ein Vorfahrenelement (sogar ein sehr entferntes).

Wenn dies der Fall ist, könnten Sie ein start-indent="0pt" Attribut auf den fo:table-body auf „reset“ auf 0.