【问题标题】:Applying color to Strings in Paragraph using Itext使用 Itext 将颜色应用于段落中的字符串
【发布时间】:2014-12-20 08:34:01
【问题描述】:

我以这种方式将 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 上做到这一点?

有人可以帮我吗...

【问题讨论】:

  • 我更新了您的问题,因为您正在使用非法语法创建 PDF。 禁止嵌套BT/ET 序列!请遵守文档中的说明!!!
  • 我已将您的问题添加到我的书中:leanpub.com/itext_so

标签: java pdf itextsharp


【解决方案1】:

当您像这样将文本组合成 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。另一个包含两个不同颜色的Chunks。

在您的问题中,您指的是ColumnText。下一个代码 sn-p 在 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 定位,一次通过使用Rectangle 定义坐标由我们自己定位:

【讨论】:

    猜你喜欢
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    相关资源
    最近更新 更多