使用Itext将颜色应用于段落中的字符串

时间:2014-12-20 08:34:02

标签: java pdf itextsharp

我将这两个字符串组合成Paragraph,

String str2="";
String str1="";
ColumnText ct = new ColumnText(cb);
ct.setSimpleColumn(36, 600, 600, 800);
ct.addElement(new Paragraph(str1 + str2));
int status1 = ct.go();

问题是我为str1和amp;获得相同的字体颜色STR2。

我希望str1和amp;的字体颜色和大小不同str2 ..

我如何在ColumnText / Paragraph上执行此操作?

有人可以帮助我...

1 个答案:

答案 0 :(得分:1)

将文字组合成Paragraph时,如下所示:

Paragraph p = new Paragraph("abc" + "def");

您隐式告诉iText应使用相同(默认)字体呈现"abc""def"。您可能知道,ParagraphChunk个对象的集合。在iText中,Chunk就像文本的原子部分,因为Chunk中的所有文本都具有相同的字体,字体大小,字体颜色等......

如果您要创建具有不同字体颜色的Paragraph,则需要使用不同的Paragraph对象撰写Chunk。这显示在ColoredText示例中:

Font red = new Font(FontFamily.HELVETICA, 12, Font.NORMAL, BaseColor.RED);
Chunk redText = new Chunk("This text is red. ", red);
Font blue = new Font(FontFamily.HELVETICA, 12, Font.BOLD, BaseColor.BLUE);
Chunk blueText = new Chunk("This text is blue and bold. ", blue);
Font green = new Font(FontFamily.HELVETICA, 12, Font.ITALIC, BaseColor.GREEN);
Chunk greenText = new Chunk("This text is green and italic. ", green);
Paragraph p1 = new Paragraph(redText);
document.add(p1);
Paragraph p2 = new Paragraph();
p2.add(blueText);
p2.add(greenText);
document.add(p2);

在这个例子中,我们创建了两个段落。其中一个Chunk为红色。另一个包含两个不同颜色的Chunk

在您的问题中,请参阅ColumnText。下一个代码段在p1上下文中使用p2ColumnText

ColumnText ct = new ColumnText(writer.getDirectContent());
ct.setSimpleColumn(new Rectangle(36, 600, 144, 760));
ct.addElement(p1);
ct.addElement(p2);
ct.go();

结果,段落被添加两次:一次被iText定位,一旦我们自己定位,使用Rectangle定义坐标:

Screen shot