C# 如何更改ShowTextAligned的Itextsharp字体

C# 如何更改ShowTextAligned的Itextsharp字体,c#,itext,C#,Itext,我尝试在创建PDF时更改一行的字体,但没有结果。笑话是颜色的变化,如果是一些愚蠢的错误 我尝试了不同于谷歌疯狂搜索的方法 var bf = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); pdfContentByte.SetColorFill(BaseColor.RED); pdfContentByte.SetFontAndSize(bf, 15); pdfConten

我尝试在创建PDF时更改一行的字体,但没有结果。笑话是颜色的变化,如果是一些愚蠢的错误

我尝试了不同于谷歌疯狂搜索的方法

var bf = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
pdfContentByte.SetColorFill(BaseColor.RED);
pdfContentByte.SetFontAndSize(bf, 15);


pdfContentByte.BeginText();
ColumnText.ShowTextAligned(pdfContentByte, Element.ALIGN_LEFT, new Phrase(ProjNr), 60, 130, 0);
pdfContentByte.EndText();

我只想更改不同类型文本的字体

您的代码混合了API级别

当您直接调用
PdfContentByte
方法时,您使用的是最低的API级别,直接将指令写入页面内容流

另一方面,在调用
ColumnText.ShowTextAligned
时,您处于中等API级别。在这个级别,iText类(如
ColumnText
)在底层页面内容流中创建所有必需的指令;实际上,直接编写的指令会干扰由
ColumnText
编写的指令,并导致指令序列无效

您确实应该一次只停留在一个API级别,直到您确切地知道自己在做什么。我建议你使用中等水平,而不是低水平

在这种情况下,将
基本字体
、字体大小和文本颜色组合到
字体
对象中,将此字体添加到
短语
对象中,然后让iText完成所有工作:

var bf = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
Font font = new Font(bf, 15, Font.NORMAL, BaseColor.RED);

ColumnText.ShowTextAligned(pdfContentByte, Element.ALIGN_LEFT, new Phrase(ProjNr, font), 60, 130, 0);

非常感谢,也很好的解释了!