我正在尝试在itext 5中使用TextField。我的字体名称是“微软正黑体”,英文是“ Microsoft JhengHei”。我想将此字体与粗体和斜体一起使用。
Init Font(3是Font.BOLD | Font.ITALIC,BC是我的基本颜色)
Font fontZh = FontFactory.getFont(CurrentFont.getFontName(), BaseFont.IDENTITY_H, BaseFont.EMBEDDED,
CurrentFont.getFontSize(), 3, BC);
我有一个textField变量,并将fontZh设置为setFont。
field.setFont(fontZh.getBaseFont());
pdf结果只有字体样式,大小和颜色正确。但是粗体和斜体是行不通的。
您只能将BaseFont
设置为字段。特别是,这意味着来自FontFactory.getFont
调用的那些属性仅成为返回的Font
而不是基础BaseFont
的一部分,不在您使用fontZh.getBaseFont()
检索的基本字体中,因此不设置为字段。
在这种方式丢失的属性中,尤其是样式信息,例如italic或bold(除非所引用的字体文件已经是斜体或粗体,或者所引用的字体家族已使用粗体或斜体进行了注册)字体文件)和颜色。
((您说在测试中,颜色是正确的;如果是,那不是因为它是通过字体传输的。由于您没有显示足够的代码来进行良好的分析,我只能猜测;我推测颜色要么是默认的开始颜色,要么使用其他说明进行设置。)
因此,如果要在文本字段中使用粗体或斜体字体,则应使用引用了字体文件的基本字体,该字体文件已经以所需的粗体和斜体组合绘制了字符,例如如果是Century Gothic,请使用GOTHICBI.TTF
而不是GOTHIC.TTF
。我不知道您是否有“微软正黑体”的这种变体。
如果要设置字段字体的颜色,可以通过将其设置为字段来进行设置,即
field.setTextColor(BC);
在使用field.getTextField()
建立字段字典之前。