itext 5 TextField使用粗体和斜体的中文字体

问题描述 投票:0回答:1

我正在尝试在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结果只有字体样式,大小和颜色正确。但是粗体和斜体是行不通的。

java itext
1个回答
0
投票

您只能将BaseFont设置为字段。特别是,这意味着来自FontFactory.getFont调用的那些属性仅成为返回的Font而不是基础BaseFont的一部分,不在您使用fontZh.getBaseFont()检索的基本字体中,因此不设置为字段。

在这种方式丢失的属性中,尤其是样式信息,例如italicbold(除非所引用的字体文件已经是斜体或粗体,或者所引用的字体家族已使用粗体或斜体进行了注册)字体文件)和颜色。

((您说在测试中,颜色是正确的;如果是,那不是因为它是通过字体传输的。由于您没有显示足够的代码来进行良好的分析,我只能猜测;我推测颜色要么是默认的开始颜色,要么使用其他说明进行设置。)

因此,如果要在文本字段中使用粗体或斜体字体,则应使用引用了字体文件的基本字体,该字体文件已经以所需的粗体和斜体组合绘制了字符,例如如果是Century Gothic,请使用GOTHICBI.TTF而不是GOTHIC.TTF。我不知道您是否有“微软正黑体”的这种变体。

如果要设置字段字体的颜色,可以通过将其设置为字段来进行设置,即

field.setTextColor(BC);

在使用field.getTextField()建立字段字典之前。

© www.soinside.com 2019 - 2024. All rights reserved.