我尝试在创建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();
我只想更改不同类型文本的字体
答案 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);