1. itext官網(wǎng)電子書地址:https://kb.itextpdf.com/itext/ebooks
2. 背景:根據(jù)某些數(shù)據(jù)創(chuàng)建一個(gè)pdf。 格式類似于下面的圖片秋泳。 首先是文檔標(biāo)題涩嚣;
下一行為匯總行拭荤,匯總行中還有一個(gè)"當(dāng)前頁數(shù) 總頁數(shù)"扎阶;第三行為表格頭;后面為表格內(nèi)容蔫巩。
下圖中圈出來的部分首昔,要求每一頁都有,同時(shí)不固定每頁顯示行數(shù)阶祭,能顯示多少顯示多少绷杜,占滿一頁為止(真實(shí)數(shù)據(jù)不像演示這么少,偶爾會(huì)很多)濒募。因?yàn)椴恢烂宽摱嗌傩袛?shù)鞭盟,所以不能事先計(jì)算出總頁數(shù)。
3.解決方案:
1)每一頁都要顯示的文檔標(biāo)題瑰剃、匯總行齿诉、表格頭
將文檔標(biāo)題、匯總行和表格頭、表格內(nèi)容當(dāng)成同一個(gè)表格處理粤剧。文檔標(biāo)題歇竟、匯總行表格頭都做為標(biāo)題行。具體格式采用cell的rowspan和colspan處理抵恋。
itext支持重復(fù)標(biāo)題行焕议,使用itext提供的table.addHeaderCell()方法即可。
參考連接:https://kb.itextpdf.com/itext/chapter-1-introducing-basic-building-blocks
2) 當(dāng)前頁數(shù) 總頁數(shù): 我們希望在第一頁添加文檔的總頁數(shù)弧关,然而盅安,在我們寫下第一頁的那一刻,我們事先并不知道總頁數(shù)世囊,只有在pdf繪制完成之后才能知道總頁數(shù)别瞭。itext提供了一個(gè)占位符placeholder和表單 XObject?。
表單 XObject?是存儲(chǔ)在頁面內(nèi)容流外部的單獨(dú)流中的 PDF 語法片段株憾。它可以從不同的頁面引用蝙寨。如果我們創(chuàng)建一個(gè)表單 XObject 作為占位符,并將其添加到多個(gè)頁面号胚,則我們只需更新一次籽慢,并且該更改將反映在每個(gè)頁面上。我們可以更新表單 XObject 的內(nèi)容猫胁,只要它沒有被寫入outputstream
參考連接:https://kb.itextpdf.com/itext/chapter-7-handling-events-setting-viewer-preferenc
示例PageXofY?箱亿。