How to apply color to Strings in a Paragraph?

Category: 
Tags: colored textfontsfont colortext coloriText 7

I am combining 2 strings to Paragraph this way,

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();
The problem is I am getting the same font color for both str1 & str2. I want to have different font color and size for these Strings. How Can I do that on ColumnText/Paragraph? Posted on StackOverflow on Dec 20, 2014 by user1660325

When you combine text into a Paragraph like this:

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

You implicitly tell iText that "abc" and "def" should be rendered using the same (default) font. As you probably know, a Paragraph is a collection of Text objects. In iText 7, a Text object is like an atomic part of text in the sense that all the text in this object has the same font, font size, font color, etc...

If you want to create a Paragraph with different font colors, you need to compose your Paragraph using different Text objects. This is shown in the ColoredText example:

Text redText = new Text("This text is red. ")
        .setFontColor(Color.RED)
        .setFont(PdfFontFactory.createFont(FontConstants.HELVETICA));
Text blueText = new Text("This text is blue and bold. ")
        .setFontColor(Color.BLUE)
        .setFont(PdfFontFactory.createFont(FontConstants.HELVETICA_BOLD));
Text greenText = new Text("This text is green and italic. ")
        .setFontColor(Color.GREEN)
        .setFont(PdfFontFactory.createFont(FontConstants.HELVETICA_OBLIQUE));

Paragraph p1 = new Paragraph(redText).setMargin(0);
doc.add(p1);
Paragraph p2 = new Paragraph().setMargin(0);
p2.add(blueText);
p2.add(greenText);
doc.add(p2);

new Canvas(new PdfCanvas(pdfDoc.getLastPage()), pdfDoc, new Rectangle(36, 600, 108, 160))
        .add(p1)
        .add(p2);

In this example, we create two paragraphs. One with a single Text in red. Another one that contains two Texts with a different color.

As a result, the paragraphs are added twice: once positioned by iText, once positioned by ourselves by defining coordinates using a Rectangle:

Colored text
Colored text

Click this link if you want to see how to answer this question in iText 5.