【问题标题】:Bold some text in Pdf ListPdf 列表中的一些文本加粗
【发布时间】:2023-03-31 17:25:01
【问题描述】:

我正在列表中显示一些内容以将其显示在 pdf 文件中。

一切正常,但现在我想要列表项中的一些文本应该是粗体。

例如:

这是 ListItem Bold 文本。

我该怎么做?

这是我的代码:

 List lst_note = new List(List.ORDERED);

 lst_note.IndentationLeft = 10f;
 lst_note.Add(new iTextSharp.text.ListItem("This single **word** should be Bold", FontFactory.GetFont(FontFactory.TIMES_ROMAN, 10)));

 disclaimer.Add(lst_note);

编辑

我试过了:

    Font bold  = new Font(FontFactory.GetFont(FontFactory.TIMES_BOLD, 10, Font.BOLD));
   lst_terms.Add(new iTextSharp.text.ListItem("Some Text "+ new Chunk("this should bold", bold), FontFactory.GetFont(FontFactory.TIMES_ROMAN, 10)));

但这没有用

【问题讨论】:

    标签: c# asp.net pdf itextsharp


    【解决方案1】:

    请看一下这个问题的答案:How can I use regular and bold in a single String?

    答案是关于Paragraph,但它也适用于ListItem,因为ListItemParagraph 的子类:

    Font regular = new Font(FontFamily.HELVETICA, 12);
    Font bold = Font font = new Font(FontFamily.HELVETICA, 12, Font.BOLD);
    ListItem li = new ListItem("NAME: ", bold);
    li.Add(new Chunk("regular", regular));
    

    您可以使用任意数量的不同字体添加任意数量的Chunk 对象。

    【讨论】:

    • 我不想为每个要显示的项目都采用新的列表项,因为要显示的项目很多。我认为为每个项目都采用新的列表项不是很好
    • 正如@RahulNikate 解释的那样,这是在 iTextSharp 5 中执行此操作的唯一方法。您可以创建一种方便的方法来完成繁重的工作,但编写需要不同字体(字体系列、字体大小、字体样式)使用不同的Chunks 完成。即使您没有在代码中创建ListItem,iTextSharp 也会在内部创建,因此您的反对实际上没有任何意义。
    • 我还有一个关于这个的问题stackoverflow.com/questions/37831344/…谢谢你的帮助先生。
    • 请先生帮助我解决上述问题:(
    • 我今天凌晨 1 点从柏林的一个会议回到家。我睡了 4 个小时,现在我在机场等飞往米兰的飞机。请理解我有我的工作,你有你的工作。我不会做我的工作和你的工作。对我施加压力不是办法。感觉就像你想虐待我一样。 不受欢迎!
    【解决方案2】:

    您可以使用ParagraphChunks 来执行此操作,如下所示:

    Chunk c1 = new Chunk("This single", new Font(iTextSharp.text.Font.FontFamily.TIMES_ROMAN, 10, Font.NORMAL, BaseColor.BLACK)));
                Chunk c2 = new Chunk("word", new Font(iTextSharp.text.Font.FontFamily.TIMES_ROMAN, 10, Font.BOLD, BaseColor.BLACK)));
                Chunk c3 = new Chunk("should be Bold", new Font(iTextSharp.text.Font.FontFamily.TIMES_ROMAN, 10, Font.NORMAL, BaseColor.BLACK)));
    
                Paragraph p2 = new Paragraph();
                p2.Add(c1);
                p2.Add(c2);
                p2.Add(c3);
    
     List lst_note = new List(List.ORDERED);
    
     lst_note.IndentationLeft = 10f;
     lst_note.Add(new iTextSharp.text.ListItem(p2);
    
     disclaimer.Add(lst_note);
    

    【讨论】:

    • 要显示的列表项很多。我不认为这比每个列表项的许多块和段落更可取。还有其他方法
    • 您可以创建一个函数来创建段落并在其中添加块并在添加ListItem时调用该函数。我看不出有任何其他方式可以做到这一点。但是,您可以尝试将文本包装在 `word to bold 中。不确定它会起作用。
    • 要显示的列表项很多。我不认为这比每个列表项的许多块和段落更可取。还有其他方法吗 i> - 实际上,无论使用简化的便捷方法还是更复杂、更通用的方法,数据总是在幕后表示。
    • 哈哈我也意识到了。错字错字。无论如何....很高兴在这里看到@Bruno Lowagie,原始开发人员 iText 库。 :D
    猜你喜欢
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多