2014-09-10 55 views
0

幫助,我需要用iTextSharp創建一個PDF,其中包含 1)整個文檔的綠色背景 2)文本(標題,表格,段落)出現在白色背景上。 3)特殊部分以粉紅色(或其他顏色)出現 4)帶有白色文字的藍色背景上的標題。iText中的彩色文檔部分Sharp

我可以建立一個簡單的文件,但背景顏色真的把我扔了。

我使用段落添加內容,但我不知道如何設置段落的背景顏色,或將它們組合在一起。

enter image description here

回答

0

您使用的對象,如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值的變量,等等。這將需要一些編程,但在我的答案中解釋了所有的機制,你應該能夠滿足你的要求。

0

這裏是我是怎麼完成它:

  1. 設置文檔背景顏色
  2. 創建1列全幅的表,並設置每個單元的白色背景 。
  3. 添加我的所有內容到小區
  4. 添加一個新的電池每節
  5. 繪製細胞之間的綠色邊框,相同的顏色作爲背景。

在單元中放置內容解決了跟蹤座標的問題。由於內容可能包含多個段落,子表格等。我不確定onParagraphEnd是否總是會觸發。

將內容放入單元格中還可以控制顏色。