我正在使用 Apache 的 XML Graphics FOP 2.6 創建一個至少包含 2 頁的 PDF 檔案。沒有最大頁數。
每個頁面都使用完全相同的標題。
第1頁(見附件)
需要包含帶有框總數的文本、總框數中包含的專案總數以及一個包含 1、2 或 3 行的表格。在每一行,都有一張盒子的照片、它的名字和它所包含的物品數量。將有至少一個包含至少一件物品的盒子。
第2頁
僅當有 4 個或更多框并且它包含第 1 頁表的第 4、5、6、7、8 和 9 行(共 6 行)時才存在。如果超過 9 個(= 3 6 X 1 ) 框,需要有一個新頁面,該頁面將包含第 2 頁的布局,但包含框 10、...、15 的行。將遵循此模式直到最后一個框。
第 3 頁
將包含第一個盒子的照片、名稱和物品數量。下面是一個表格,其中一行包含列名,最多 4 行,對應于第一個框中的前 4 個專案。
第 4 頁
如果第一個框有 4 個以上的專案,則會出現一個名為 Page 4 的新頁面,其中僅包含表格的延續部分,包括帶有列名稱的行。如果第一個框有超過 11 個(= 4 7 X 1)個專案,它將總共有 7 個專案,然后是另一個頁面。依此類推,直到所有專案結束。
第 5 頁(未附上以避免重復)
將遵循與第 3 頁相同的邏輯,但在本例中為第二個框,如果有第二個框。依此類推,直到所有盒子結束。
任何人都可以幫助我了解如何根據我的要求在 XSL 檔案中構建布局主集?我不是在尋找整個解決方案。僅適用于一般布局結構。答案不必太詳細或太定制以滿足我的需求。如果需要,我可以調整它。
<xsl:template match="/doc">
<xsl:variable name="Logo"><xsl:value-of select="Logo"/></xsl:variable>
...
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:fox="http://xmlgraphics.apache.org/fop/extensions"
font-family="Nexus Sans Pro" font-weight="normal">
<fo:layout-master-set>
<fo:simple-page-master master-name="Boxes-A4" page-width="297mm" page-height="210mm"
margin-top="0mm" margin-bottom="0mm" margin-left="0mm" margin-right="0mm">
<fo:region-body region-name="xsl-region-body"/>
<fo:region-before region-name="xsl-region-before" extent="70mm"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="Items-A4" page-width="297mm" page-height="210mm"
margin-top="0mm" margin-bottom="0mm" margin-left="0mm" margin-right="0mm">
<fo:region-body region-name="xsl-region-body"/>
<fo:region-before region-name="xsl-region-before" extent="70mm"/>
</fo:simple-page-master>
</fo:layout-master-set>
我已經嘗試了上面的代碼(使用 xsl:stylesheet version="1.0"),但未能正確布置。即使我用 break-before="page" aka page-break-before="always" 標記了適當的行,不適合頁面的表格行也不會顯示在下一頁上。作為輔助,我可以將后端資料結構中的索引插入到庫使用的引數中,以便我知道每個元素的索引。
非常感謝。

將此與@Tony Graham 關于制作表格的建議相結合,您就擁有了整個布局。如果您想知道自動頁面流是如何作業的,這里是上面的確切示例,其中包含更多框和一個包含更多專案的框(框 4)……我只更改了 fo:block 字體大小以導致分頁。

uj5u.com熱心網友回復:
使用fo:table, 并為每個fo:table-row指定height( https://www.w3.org/TR/xsl11/#height ) 使用合適的值,以獲得每頁所需的行數。
您可能還需要指定keep-together.within-page="always"以避免破壞表格行。FOP 可能支持也可能不支持fo:table-row(或fo:table-cell)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/351195.html
標籤:pdf xslt 分页 xsl-fo apache-fop
上一篇:pdf檔案中的多行正則運算式
