我以这种方式将 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();
Run Code Online (Sandbox Code Playgroud)
问题是我的 str1 和 str2 的字体颜色相同。
我想要 str1 和 str2 具有不同的字体颜色和大小..
我怎样才能在ColumnText/Paragraph上做到这一点?
有人可以帮我吗...
当您将文本组合成Paragraph这样时:
Paragraph p = new Paragraph("abc" + "def");
Run Code Online (Sandbox Code Playgroud)
您隐式告诉 iText"abc"和"def"应该使用相同(默认)字体呈现。您可能知道,aParagraph是对象的集合Chunk。在 iText 中,aChunk就像文本的原子部分,因为 a 中的所有文本都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);
Run Code Online (Sandbox Code Playgroud)
在此示例中,我们创建两个段落。Chunk一张带有红色单曲。另一种包含两个Chunk不同颜色的 s。
在你的问题中,你提到了ColumnText。下一个代码片段在上下文中使用p1and :p2ColumnText
ColumnText ct = new ColumnText(writer.getDirectContent());
ct.setSimpleColumn(new Rectangle(36, 600, 144, 760));
ct.addElement(p1);
ct.addElement(p2);
ct.go();
Run Code Online (Sandbox Code Playgroud)
结果,段落被添加两次:一次由 iText 定位,一次由我们自己通过使用定义坐标来定位Rectangle:
