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

标签 java pdf itext

我以这种方式将 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" 应使用相同(默认)字体呈现。您可能知道,ParagraphChunk 对象的集合。在 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 上下文中使用 p1p2:

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

因此,段落被添加了两次:一次由 iText 定位,一次由我们自己使用 矩形 定义坐标来定位:

Screen shot

关于java - 使用 Itext 将颜色应用于段落中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27578497/

相关文章:

java - Spring pdf 生成

java - 受密码保护的 PDF Jaspersoft

java - 继承和多态问题

java - 我应该在 Java POJO 上使用 "extends"来提取公共(public)属性吗?

java - 从 csv 文件读取时忽略逗号值

c# - 如何防止 Microsoft Report Viewer 报告 (PDF) 中出现 "serrated"PNG 图像(锯齿)

c# - 无法在生成的 PDF 中正确显示泰米尔语

java - 尝试跟踪使用 CheckBox 的标记项目?

.net - 将 EPS/PDF 转换为 JPG/PNG?

c# - 如何使用 iTextSharp 绝对定位 pdf 中的段落?