我以这种方式将 2 个字符串组合到段落中,
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 和 str2 的字体颜色相同。
我想要 str1 和 str2 具有不同的字体颜色和大小..
我如何在ColumnText/Paragraph上做到这一点?
有人可以帮我吗...
最佳答案
当您将文本组合成段落
时,如下所示:
Paragraph p = new Paragraph("abc" + "def");
您隐式告诉 iText "abc"
和 "def"
应使用相同(默认)字体呈现。您可能知道,Paragraph
是 Chunk
对象的集合。在 iText 中,Chunk
就像文本的原子部分,因为 Chunk
中的所有文本都具有相同的字体、字体大小、字体颜色等。 .
如果您想创建具有不同字体颜色的 Paragraph
,则需要使用不同的 Chunk
对象来组合您的 Paragraph
。这显示在 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
。下一个代码片段在 ColumnText
上下文中使用 p1
和 p2
:
ColumnText ct = new ColumnText(writer.getDirectContent());
ct.setSimpleColumn(new Rectangle(36, 600, 144, 760));
ct.addElement(p1);
ct.addElement(p2);
ct.go();
因此,段落被添加了两次:一次由 iText 定位,一次由我们自己使用 矩形
定义坐标来定位:
关于java - 使用 Itext 将颜色应用于段落中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27578497/