C# 如何更改iTextSharp表格的默认字体和颜色?

C# 如何更改iTextSharp表格的默认字体和颜色?,c#,fonts,itext,C#,Fonts,Itext,有没有办法,如何更改默认表的iTextSharp字体和单元格的颜色? 我有一个表格,在那里我可以更改字体,但这必须在每个单元格上进行-这是非常不幸的。很可能有更好的方法,但我还没有找到 我想做这个更改的原因是,默认字体不支持捷克字符 我有以下代码: PdfPTable subTable = new PdfPTable(4); Font bigFont = FontFactory.GetFont("c:\\windows\\fonts\\arial.ttf", BaseFont.IDENTITY_

有没有办法,如何更改默认表的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以及单元的颜色。第二个单元格的默认值为all

我还尝试了以下命令,但毫无帮助:

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

谢谢您的提示。

需要将它们拆分为使用不同字体的单独块,并将它们添加到一个阶段,然后将它们作为单元格添加到PdfPTable中。 请看这里:

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

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

var table = new PdfPTable(4);  // <- use wrapper class here
table.DefaultCell.Phrase = new Phrase() { Font = myDefaultFont };
人们也可以将其作为PdfPTable的扩展方法来实现,但由于我使用的是遗留代码,因此我最终采用了上述解决方案。 这样一来,我唯一需要更改的就是更新表时的类型,而不是每次调用
AddCell()


希望它对任何人都有帮助。

这意味着,没有办法,如何为PDF中的所有文本设置一种字体为全局字体?我不知道也不知道,谢谢。那很不幸,但是有了你的链接,我可以做到。
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;
    }