2014-08-28 55 views
3

我有一張表格的XSL-FO樣式表。表格中的分頁符XSL-FO

<fo:page-sequence master-reference="defaultPage"> 
    <fo:flow flow-name="xsl-region-body"> 
    <fo:table table-layout="fixed" width="100%"> 
     <fo:table-column column-width="9pt"/> 
     <fo:table-column column-width="30pt"/> 
     <fo:table-column column-width="150pt"/> 
     <fo:table-header> 
     <fo:table-row> 
      <fo:table-cell> 
      <fo:block><xsl:text>Column 1</xsl:text></fo:block> 
      </fo:table-cell> 
      <fo:table-cell> 
      <fo:block><xsl:text>Column 2</xsl:text></fo:block> 
      </fo:table-cell> 
      <fo:table-cell> 
      <fo:block><xsl:text>Column 3</xsl:text></fo:block> 
      </fo:table-cell> 
     </fo:table-row> 
     </fo:table-header> 
     <fo:table-body> 
     <fo:table-row> 
      <xsl:apply-templates select="rbrOcjena"/> 
      <xsl:apply-templates select="sifPred"/> 
      <xsl:apply-templates select="nazPred"/> 
     </fo:table-row> 
     </fo:table-body> 
    </fo:table> 
    </fo:flow> 
</fo:page-sequence> 

該表可以有很多行,所以我想在生成PDF時提及當前結尾時在新頁面上將其分開。另外,如果可能的話,我想在新頁面上重複表格標題。我應該在表格標籤中添加哪些屬性才能使它成爲現實?

謝謝!

+0

之前提出一個新的問題,請接受[回答你的最後一個問題(HTTP:// stackoverflow.com/a/24938287/1987598)。謝謝! – 2014-08-28 10:09:55

回答

5

表可以有很多行,所以我想打破它新的一頁的時候 談到當前

結束沒有看到您的XSL-FO代碼,很難回答這個問題。請顯示它。但一般來說,這是通過保持和休息來完成的。例如:

<fo:table-row keep-together.within-page="always"> 

我想重複新頁面上表頭,如果可能的話。 我應該在表格標籤中放入什麼屬性才能使它變成這樣?

指示XSL-FO處理器在每頁頂部重複多行不是通過fo:table的屬性完成的。取而代之的,是要重複的行裏面放fo:table-header

<fo:table-header> 
    <fo:table-row> 
     <fo:table-cell> 
     <!--Block and text content--> 
     </fo:table-cell> 
    </fo:table-row> 
</fo:table-header> 

然後,處理器的默認行爲應該是一個分頁符後重復的標題行。這是因爲fo:tableomit-header-at-break屬性爲set to "false" by default

最明顯的原因是,它立即清除哪些行屬於標題,因此應該重複。如果這只是fo:table屬性中的參考,那麼將多個行標識爲標題將會更困難。您將找到XSL規格here的相關部分。

+0

嗨,謝謝你的回答。我編輯了我的問題並提供了更詳細的XSL-FO代碼,請您再看一遍。 – sty2000 2014-08-28 10:37:44

+0

@ sty2000不僅是頁面序列。請提供我可以測試的完整的XSL-FO文檔。另外,您是否看到我放在您的問題下方的評論? – 2014-08-28 10:40:16

+0

它是:[鏈接](http://pastebin.com/sxDeDs5n)。我這樣發佈,因爲它很大。我也認爲你將無法測試它,因爲它從你無法訪問的服務器獲取一些數據。 – sty2000 2014-08-29 07:32:32

1

我已經遇到了類似的情況......

試試下面的代碼...

<fo:table-row> 
    <xsl:if test="position() != 1"> 
    <xsl:attribute name="break-efore">page</xsl:attribute></i> 
. 
. 
. 
+1

在除第一行之外的每一行之前添加分頁符。 Sty2000只是希望表格在頁面已滿時中斷,並且不需要添加明確的中斷來完成此操作。 – Hobbes 2015-11-12 10:26:42