幫助,我需要用iTextSharp創建一個PDF,其中包含 1)整個文檔的綠色背景 2)文本(標題,表格,段落)出現在白色背景上。 3)特殊部分以粉紅色(或其他顏色)出現 4)帶有白色文字的藍色背景上的標題。iText中的彩色文檔部分Sharp
我可以建立一個簡單的文件,但背景顏色真的把我扔了。
我使用段落添加內容,但我不知道如何設置段落的背景顏色,或將它們組合在一起。
幫助,我需要用iTextSharp創建一個PDF,其中包含 1)整個文檔的綠色背景 2)文本(標題,表格,段落)出現在白色背景上。 3)特殊部分以粉紅色(或其他顏色)出現 4)帶有白色文字的藍色背景上的標題。iText中的彩色文檔部分Sharp
我可以建立一個簡單的文件,但背景顏色真的把我扔了。
我使用段落添加內容,但我不知道如何設置段落的背景顏色,或將它們組合在一起。
您使用的對象,如Paragraph
S,PdfPTable
S,等上創建的文檔。您使用PdfContentByte
方法繪製矩形。你獲得從PdfWriter
這樣的PdfContentByte
實例:
writer.getDirectContentUnder(); // Java
或
writer.DirectContentUnder; // C#
通過使用getDirectContentUnder()
代替getDirectContent()
,矩形的下Paragraph
S,PdfPTable
的提請,等等。
您的主要問題是跟蹤座標:您需要知道左下角和右上角的座標。
繪製完整頁面的背景是不容易的。我昨天回答了這個問題:How to draw border for whole pdf pages using iText library 5.5.2
在此答案中,我定義了矩形的邊框顏色,因爲OP只需要在每個頁面上都有一個紅色邊框。您需要定義矩形的填充顏色而不是邊框。
通過檢查昨天問題的答案,您將發現頁面事件的概念。您還將發現其他頁面事件方法,例如onParagraph()
和onParagraphEnd()
。這些方法接收每個段落開頭的Y座標和每個段落的結尾。您可以使用這些座標在頁面事件中繪製矩形。
要解決您的問題,您需要添加一個BaseColor
成員變量,一個跟蹤初始Y值的變量,等等。這將需要一些編程,但在我的答案中解釋了所有的機制,你應該能夠滿足你的要求。
這裏是我是怎麼完成它:
在單元中放置內容解決了跟蹤座標的問題。由於內容可能包含多個段落,子表格等。我不確定onParagraphEnd是否總是會觸發。
將內容放入單元格中還可以控制顏色。