如何更改ShowTextAligned的Itextsharp字体

时间:2019-07-11 13:11:00

标签: c# itext

我尝试在创建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();

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

1 个答案:

答案 0 :(得分:1)

您的代码混合了API级别。

在直接调用PdfContentByte方法的地方,您正在最低的API级别上工作,直接将指令写入页面内容流中。

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

实际上,您一次应该保持一个API级别,直到您确切知道自己在做什么。我建议您使用中等级别,而不是低级别。

在这种情况下,您将BaseFont,字体大小和文本颜色组合到Font对象中,将此字体添加到Phrase对象中,然后让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);