有没有办法使用 iText7 使第一个字符变成不同的颜色?

Posted

技术标签:

【中文标题】有没有办法使用 iText7 使第一个字符变成不同的颜色?【英文标题】:Is there a way to just make the first character a different color using iText7? 【发布时间】:2020-02-18 11:19:26 【问题描述】:

我在 C# 中使用 itext7,我只想使用一个段落,第一个字符需要是不同的颜色。有什么办法吗?在 iText5 中有一个带有块的东西,但这在 iText7 中不可用,所以我现在被卡住了。

【问题讨论】:

【参考方案1】:

没有块,但您可以添加具有不同特征的段落字符串。

    PdfDocument pdfDoc = new PdfDocument(new PdfWriter(DEST));
    Document doc = new Document(pdfDoc);

    Paragraph p = new Paragraph();
    string original = "Some text";

    string first = original.Substring(0, 1);

    p.Add(new Text(first)
            .SetFontColor(ColorConstants.BLUE));
    p.Add(original.Substring(1, original.Length - 1));
    doc.Add(p);
    doc.Close();

这将创建一个 PDF 文件,其中“ome text”为黑色,而“S”为蓝色。

相关文档 (Colored Text example) 和 Paragraph 的 API。

【讨论】:

感谢您的回复,这也是一个很好的方法!我正要发布一个我想出的解决方案,同时差点毁了我的键盘。【参考方案2】:

您可以将文本添加到段落,并在将其添加到段落之前设置颜色。

var dotstring = new Text("$");
var cashstring = new Text("1.000,-");
dotstring.SetFontColor(DeviceCmyk.MAGENTA);

var NummerParagraph = new Paragraph();
NummerParagraph.Add(dotstring);
NummerParagraph.Add(cashstring);

这是我找到的一个简单的解决方案,因为我的第一个字母是静态的,我知道它是什么。 如果您不知道字符串的第一个字母,André Lemos 发布的另一个解决方案会更好。

【讨论】:

以上是关于有没有办法使用 iText7 使第一个字符变成不同的颜色?的主要内容,如果未能解决你的问题,请参考以下文章

使第一个字符串成为第二个字符串的 Anagram?

有没有办法将二进制字符串转换为 int

IText7如何解码字段的默认外观int字体对象及其属性

当我在属性内容中使用 CSS3 函数 target-counter 时,iText7 不起作用

如何使用 itext7 Java 将多个图像添加到 PDF?

iText7高级教程之html2pdf——2.使用CSS定义样式