【问题标题】:ItextSharp (Itext) - set custom font for paragraphItextSharp (Itext) - 为段落设置自定义字体
【发布时间】:2012-02-27 01:02:36
【问题描述】:

我正在尝试将自定义字体设置为段落,但我无法使其工作。 我尝试设置 .Font= ,但它只适用于大小,但它忽略字体。你能帮忙吗?

Paragraph T = new Paragraph(newTempLine);
iTextSharp.text.Font contentFont = iTextSharp.text.FontFactory.GetFont("Webdings", 12, iTextSharp.text.Font.NORMAL);
T.Font = contentFont;
myDocument.Add(T);

【问题讨论】:

    标签: c# fonts itextsharp itext


    【解决方案1】:

    设置在the constructor:

    Font contentFont = FontFactory.GetFont(…);
    Paragraph para = new Paragraph(newTempLine, contentFont);
    

    【讨论】:

    • 您是否有任何信息说明为什么它有效而T.Font = ... 无效?
    • @Nenotlep 我并不是 iText 内部的真正权威,我不得不戳源或其他东西,但我猜设置字体属性只会改变你的文本字体稍后添加到段落中。 (这是基于Paragraph有一个add(Element)方法,所以它本身似乎是一个复合元素。)
    • @Nenotlep 请记住,PDF不是声明性标记,它是 PostScript 的派生品,PostScript 是一种命令式绘图语言,经过优化,无需将它们完全保存在内存中即可渲染非常大的文档.为了允许流输出,iText 也不会在内存中构建文档表示 - 我相信当您将元素添加到文档时,它通常会立即写出。因此,您似乎正在操纵文档结构的逻辑表示,但流可能会通过这种抽象泄漏。
    • @Nenotlep 另外,为了摆脱我的假设和有根据的猜测,如果您对使用 PDF 感兴趣,您可能需要购买并浏览 iText in Action。我相信它足以说明 PDF 格式在低级别的工作原理,以便您在使用库生成它时很好地推理它。
    • 非常感谢 cmets,这很有教育意义,现在想想也合乎逻辑。下次我从 Manning 订购东西时,我可能真的会拿起这本书。
    【解决方案2】:

    检查以下是否有效:

    string name = "Century Gothic Bold";
    if (!FontFactory.IsRegistered(name))
    {
        string systemRoot = Environment.GetEnvironmentVariable("SystemRoot");
        string path = Path.Combine(systemRoot, "fonts", @"GOTHICB.TTF");
        FontFactory.Register(path);
    }
    
    var font = FontFactory.GetFont(name, fontSize, textColor);
    var paragraph = new Paragraph(text, font);
    Phrase phrase = new Phrase(paragraph);
    var myPdfCell = new PdfPCell(phrase);
    

    【讨论】:

      猜你喜欢
      • 2011-08-14
      • 2015-06-13
      • 2011-02-07
      • 1970-01-01
      • 1970-01-01
      • 2013-07-09
      • 2023-04-06
      • 1970-01-01
      • 2011-03-30
      相关资源
      最近更新 更多