iTextSharp中的彩色文档部分

时间:2014-09-10 17:52:49

标签: itextsharp

帮助,我需要创建一个带有iTextSharp的PDF 1)整个文档的绿色背景 2)文本(标题,表格,段落)出现在白色背景上。 3)特殊部分显示粉红色(或其他颜色) 4)带有白色文字的蓝色背景上的标题。

我可以构建一个简单的文档,但背景颜色真的让我失望。

我使用段落添加内容,但我不确定如何设置段落的背景颜色,或将它们组合在一起。

enter image description here

2 个答案:

答案 0 :(得分:0)

您可以使用Paragraph s,PdfPTable等对象创建文档。您可以使用PdfContentByte方法绘制矩形。您从PdfContentByte获取PdfWriter个实例,如下所示:

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值的变量,依此类推。它需要一些编程,但在我的回答中解释了所有机制,你应该能够满足你的要求。

答案 1 :(得分:0)

以下是我完成工作的方式:

  1. 在文档中设置背景颜色
  2. 创建1列整页宽度表并设置白色背景 对于每个细胞。
  3. 将我的所有内容添加到单元格
  4. 为每个部分添加新单元格
  5. 在单元格之间绘制绿色边框,颜色与背景相同。
  6. 在单元格中放置内容解决了跟踪坐标的问题。由于内容可能包含多个段落,子表等。我不确定onParagraphEnd是否总是会触发。

    将内容放入单元格中也可以控制颜色。