帮助,我需要创建一个带有iTextSharp的PDF 1)整个文档的绿色背景 2)文本(标题,表格,段落)出现在白色背景上。 3)特殊部分显示粉红色(或其他颜色) 4)带有白色文字的蓝色背景上的标题。
我可以构建一个简单的文档,但背景颜色真的让我失望。
我使用段落添加内容,但我不确定如何设置段落的背景颜色,或将它们组合在一起。
答案 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)
以下是我完成工作的方式:
在单元格中放置内容解决了跟踪坐标的问题。由于内容可能包含多个段落,子表等。我不确定onParagraphEnd是否总是会触发。
将内容放入单元格中也可以控制颜色。