【问题标题】:C# iTextSharp multi fonts in a single cellC# iTextSharp 单个单元格中的多种字体
【发布时间】:2014-02-13 09:50:31
【问题描述】:

首先,我对 C# 不是很好,而且我已经有一段时间没有使用它了。

我正在为一个运送包裹的朋友制作一个 Windows 窗体。所以我想用 iTextSharp 库将他当前的纸质表格转换成 .pdf。他仍然需要打印表格以获得客户签名等。

我需要什么: 我希望表格有一个小标题,例如“公司名称”,文本应该比从 windows 窗体输入的文本小一点(richTextBox1)

目前我正在使用单元格,想知道是否可以在同一个单元格中使用 2 种不同的字体大小?

我有什么:

table.AddCell("Static headline" + Chunk.NEWLINE + richTextBox1.Text);

我“想要”的东西:

var normalFont = FontFactory.GetFont(FontFactory.HELVETICA, 9);

var boldFont = FontFactory.GetFont(FontFactory.HELVETICA_BOLD, 12);

table.AddCell("Static headline", boldFont + Chunk.NEWLINE + richTextBox1.Text, normalFont);

【问题讨论】:

    标签: c# itextsharp


    【解决方案1】:

    您将StringFont 传递给AddCell() 方法。那是行不通的。您需要将Phrase 对象或PdfPCell 对象作为参数的AddCell() 方法。

    Phrase 是由不同的Chunks 组成的对象,不同的Chunks 可以有不同的字体大小。请阅读chapter 2 of my book 了解有关此对象的更多信息。

    Phrase phrase = new Phrase();
    phrase.Add(
        new Chunk("Some BOLD text",  new Font(Font.FontFamily.TIMES_ROMAN, 12, Font.BOLD))
    );
    phrase.Add(new Chunk(", some normal text", new Font()));
    table.AddCell(phrase);
    

    PdfPCell 是一个可以添加不同对象的对象,例如Phrases、Paragraphs、Images、...

    PdfPCell cell = new PdfPCell();
    cell.AddElement(new Paragraph("Hello"));
    cell.AddElement(list);
    cell.AddElement(image);
    

    在这个 sn-p 中,listList 类型,imageImage 类型。

    第一个sn-p使用文本模式;第二个 sn-p 使用 复合模式。单元格的行为因您使用的模式而异。

    这在documentation中都有解释;你可以找到数百个 C# 示例here

    【讨论】:

      猜你喜欢
      • 2016-03-30
      • 2018-08-23
      • 2018-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多