【问题标题】:How to change default font and color for iTextSharp table?如何更改 iTextSharp 表格的默认字体和颜色?
【发布时间】:2017-07-04 10:40:06
【问题描述】:

有什么办法,如何更改默认表格的 iTextSharp 字体和单元格的颜色? 我有一个表格,我可以在其中更改字体,但这必须在每个单元格上完成 - 这是非常不幸的。很可能有更好的方法,但我还没有找到。

我要进行此更改的原因是,默认字体不支持捷克字符。

我有以下代码:

PdfPTable subTable = new PdfPTable(4);
Font bigFont = FontFactory.GetFont("c:\\windows\\fonts\\arial.ttf", BaseFont.IDENTITY_H, 8, Font.NORMAL, BaseColor.RED);
PdfPCell subCell = new PdfPCell(new Phrase("Bělení fáze 1",bigFont));
subCell.BackgroundColor = new BaseColor(196, 231, 234);
subTable.AddCell(subCell);
subTable.AddCell("Test");

第一个打印的单元格将定义字体 - arial,以及单元格的颜色。第二个单元格将全部默认。

我也尝试了以下命令,但这根本没有帮助:

subTable.DefaultCell.Phrase = new Phrase() { Font = bigFont };

感谢任何提示。

【问题讨论】:

    标签: c# fonts itext


    【解决方案1】:

    需要将它们拆分为使用不同字体的单独块并将它们添加到一个阶段,然后将它们作为一个单元格添加到 PdfPTable。 看这里: iTextSharp - Is it possible to set a different font color for the same cell and row?

    【讨论】:

    • 也就是说,没有办法,如何将一种字体设置为PDF中所有文本的全局字体?
    • 我不知道或找不到
    • 好的,非常感谢。很不幸,但是通过您的链接,我能够做到这一点。
    【解决方案2】:

    我遇到了同样的问题,遇到了这个老问题。 虽然 iTextSharp 已被 iText 7 弃用并取代,但我不得不使用旧的 iTextSharp。 对于处于相同位置的任何人,这就是我最终的结果。

    就像最初的提问者一样,我首先尝试以这种方式实现它,在我看来,这将是直观的:

    var table = new PdfPTable(4);  // <- use wrapper class here
    table.DefaultCell.Phrase = new Phrase() { Font = myDefaultFont };
    

    这显然行不通。但是您可以通过为 PdfPTable 编写一个包装类并像这样覆盖它的AddCell(string text) 来使其工作

    public class MyPdfTable : PdfPTable
    {
        public new void AddCell(string text)
        {
            Phrase defaultPhrase = DefaultCell.Phrase;
            Phrase phrase = defaultPhrase == null ? new Phrase(text) : new Phrase(text, defaultPhrase.Font);
            base.AddCell(phrase);
    
            // for some reason iTextSharp sets this to null after AddCell() is called, so we restore it
            DefaultCell.Phrase = defaultPhrase;
        }
    

    也可以将此作为 PdfPTable 的扩展方法来实现,但由于我使用的是遗留代码,因此我最终得到了上述解决方案。 这样我唯一需要改变的是更新表格时的类型,而不是每次调用AddCell()

    希望对大家有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多