如何在iText中制作文本的一部分Bold

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在iText中制作文本的一部分Bold相关的知识,希望对你有一定的参考价值。

我需要在我的应用程序中获取部分文本粗体。所以基本上我想要实现的是这样的:地址:123街。目前我在大胆的地方:地址:123街

这是我正在使用的代码:

PdfPTable table2 = new PdfPTable(3);
            table2.setWidthPercentage(100);
            table2.addCell(getCell("Address:  " + SaveString, PdfPCell.ALIGN_LEFT));
            table2.addCell(getCell("Name:  " + SaveStringA, PdfPCell.ALIGN_CENTER));
            table2.addCell(getCell("Last Name:  " + SaveStringB, PdfPCell.ALIGN_RIGHT));
            table2.setSpacingAfter(15);
            doc.add(table2);  

public PdfPCell getCell(String text, int alignment) {
    PdfPCell cell = new PdfPCell(new Phrase(text));
    Font bold = FontFactory.getFont(FontFactory.TIMES_BOLD, 12, Font.BOLD);
    Paragraph p1 = new Paragraph(text, bold);
    cell.setPadding(0);
    cell.addElement(p1);
    cell.setHorizontalAlignment(alignment);
    cell.setBorder(PdfPCell.NO_BORDER);

    return cell;

希望有人可以帮忙吗?

谢谢!!

答案

您可以尝试使用Chunk,如下所示:

Font bold = FontFactory.getFont(FontFactory.TIMES_BOLD, 12, Font.BOLD);
Chunk chunkAddress= new Chunk("Address:  ", bold);
Chunk ChunkAddressDetails = new Chunk("123 Street.");

Phrase phrase = new Phrase();
phrase.add(chunkAddress);
phrase.add(ChunkAddressDetails);

Paragraph paragraph= = new Paragraph();
paragraph.add(phrase);
另一答案
SpannableStringBuilder str = new SpannableStringBuilder("Address: 123 Street");
str.setSpan(new android.text.style.StyleSpan(android.graphics.Typeface.BOLD), 0, "Address:".length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
yourTextView.setText(str);

以上是关于如何在iText中制作文本的一部分Bold的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 iText 7 使下划线文本可访问

iText:PdfTable 单元格垂直对齐

XMLWorkerHelper性能缓慢

iText PDF中的Unicode字符

Java itext为pdf 文件添加水印核心功能代码片段

如何使用 iText 列表将具有不同权重的文本添加到单个 ListItem