java - itext 5 TextField 使用带有粗体和斜体的中文字体
问题描述
我正在尝试在 itext 5 中使用 TextField。我的字体名称是“微软正黑体”,英文是“Microsoft JhengHei”。我想用粗体和斜体使用这种字体。
初始化字体( 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 结果只有字体样式、大小和颜色是正确的。但是粗体和斜体是行不通的。
解决方案
您只能将 a 设置BaseFont
为字段。这尤其意味着您FontFactory.getFont
调用中的那些属性仅成为返回的一部分Font
而不是底层的一部分BaseFont
,不在您使用检索的基本字体中fontZh.getBaseFont()
,因此未设置为该字段。
以这种方式丢失的属性包括特定的样式信息,例如斜体或粗体(除非引用的字体文件已经是斜体或粗体,或者引用的字体系列已使用粗体或斜体字体文件注册)和颜色。
(您说在您的测试中颜色是正确的;如果是,那不是因为它是通过字体传输的。由于您没有显示足够的代码进行良好的分析,我只能猜测;我推测颜色要么是默认的开始,要么你使用其他指令设置它。)
因此,如果您想在文本字段中使用粗体或斜体字体,则应使用引用字体文件的基本字体,该字体文件已经以所需的粗体和斜体组合绘制字符,例如在Century Gothic使用的情况下GOTHICBI.TTF
的GOTHIC.TTF
。不知道你有没有“微软正黑体”这样的变种。
如果要设置字段的字体颜色,可以通过设置字段来实现,即
field.setTextColor(BC);
在使用构建字段字典之前field.getTextField()
。
推荐阅读
- r - Postgres ARRAY 列类型到 R 中的 tbl 列表列,反之亦然
- python - 引导程序的容器流体类在 django 中不起作用
- python - 抓取和安装时出现html5lib错误
- apache-spark - 如果无法获取纱线容器,则配置参数以终止 spark 作业
- python - 集合理解 VS。对于循环 VS。设置差异
- android - 找不到 com.android.tools.build:gradle:2.2.3
- mqtt - 增加 PUBLISH 和 PUBCOMP 之间的 MQTT 时间
- mysql - 通过 Json 链接将数据插入 WordPress 中的博客
- asp.net - 将代码更改部署到 IIS 中托管的 asp.net 网站
- arrays - golang中另一个结构内的结构数组