2013-02-14 71 views
3

我從xml和xsl-fo以及Apache FOP創建一個pdf文件,並且我需要通過一行書寫文本。 我的意思是這樣一種形式由專人進行編譯,你寫名字,姓氏等 事情是這樣的: Name: ______John_________
但還行名下。 我正在嘗試使用fo:leader。 所有在一個表格單元格中。 有了這個代碼XSL-FO通過一行文字或fo:領導

<fo:table-cell column-number="3" font-size="10pt" number-columns-spanned="4"> 
    <fo:block space-before="2mm" wrap-option="no-wrap" overflow="visible" margin-top="2mm" margin-left="3mm"> 
    <xsl:value-of select="$element/value"/> 
    </fo:block> 
    <fo:block wrap-option="no-wrap" overflow="visible" margin-left="2mm" margin-top="0mm"> 
    <fo:leader leader-length="130mm" 
       leader-pattern="rule" 
       rule-style="solid" 
       rule-thickness="0.1mm" 
       color="black"></fo:leader> 
    </fo:block> 
</fo:table-cell> 

我得到一個線,但這個詞立即下不是,如果我設置的margin-top =「 - 3毫米」的導塊,沒有任何事情而改變。 我怎樣才能得到這樣的結果?還有其他方法嗎?

非常感謝您

回答

2

這是一種黑客攻擊的,但是你可以使用fo:list-block ...

XSL-FO

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
    <fo:layout-master-set> 
     <fo:simple-page-master master-name="my-page" page-width="8.5in" page-height="11in"> 
      <fo:region-body margin="1in" margin-top="1.5in" margin-bottom="1.5in"/> 
     </fo:simple-page-master> 
    </fo:layout-master-set> 
    <fo:page-sequence master-reference="my-page"> 
     <fo:flow flow-name="xsl-region-body"> 
      <fo:table width="50%"> 
       <fo:table-body> 
        <fo:table-row> 
         <fo:table-cell border-style="solid" padding="4px"> 
          <fo:list-block provisional-distance-between-starts="15%"> 
           <fo:list-item> 
            <fo:list-item-label end-indent="label-end()"> 
             <fo:block>Name:</fo:block> 
            </fo:list-item-label> 
            <fo:list-item-body start-indent="body-start()"> 
             <fo:block text-align="center" border-bottom-style="solid">John</fo:block> 
            </fo:list-item-body> 
           </fo:list-item> 
          </fo:list-block> 
         </fo:table-cell> 
        </fo:table-row> 
       </fo:table-body> 
      </fo:table> 
     </fo:flow> 
    </fo:page-sequence> 
</fo:root> 

PDF輸出(FOP使用1.0 )

enter image description here

您可能需要使用provisional-distance-between-starts來查看適用於您的數據的內容。

4

我以另一種方式得到了結果:fo:block border-bottom="solid" border-bottom-width="0.2mm"做到了。 </fo:block>中的<fo:leader />需要具有下劃線的值(在本例中爲John)爲空。

<fo:table-row> 
    <fo:table-cell font-size="10pt"> 
     <fo:block> 
      <xsl:text>Nome:</xsl:text> 
     </fo:block> 
    </fo:table-cell> 
    <fo:table-cell font-size="10pt"> 
     <fo:block border-bottom="solid" border-bottom-width="0.2mm"> 
      <xsl:text>John</xsl:text> 
      <fo:leader /> 
     </fo:block> 
    </fo:table-cell> 
</fo:table-row> 

enter image description here