IText7如何解码字段的默认外观int字体对象及其属性
Posted
技术标签:
【中文标题】IText7如何解码字段的默认外观int字体对象及其属性【英文标题】:IText7 How to decode field's default appearance int Font object and its properties 【发布时间】:2017-05-08 16:52:04 【问题描述】:我有一个带有一些字段的AcroForm
,我需要获取其中一个字段的字体信息。我知道我必须使用
(PdfFormField)field.getDefaultAppearance()
但这会导致像
这样的字符串/Helv 12 Tf 0.25 0.25 0.25 rg`
有没有一种简单的方法可以将该字符串解析为PdfFont
对象?
很明显,我可以从给定的字符串中手动解析它,但我怀疑 IText 有一些工具可以为我做这件事不是吗?
除了/Helv
只是“参考”或类似的东西,显然指向Helvetica
但如果我有某种自定义字体呢?
谢谢!
【问题讨论】:
关于Helv等:通常相关字体资源字典中的字体名称映射到字体定义。但是,DefaultA 外观中的字体名称有时不是,参见。 this answer 中的使用 /Helv、/HeBo、... 部分。 【参考方案1】:如果要在表单域中使用字体,可以使用PdfFormField#getFont()
方法,这将返回直接使用的PdfFont
对象。要设置自定义字体,请使用PdfFormField#setFont(PdfFont font)
,这也将重新创建表单域的外观。使用PdfFormField#setFontSize(float fontsize)
设置字段内文本的大小。使用PdfFormField#setClor(..)
设置文字颜色。
你从getDefaultAppearance()得到的信息是用pdf语法写的,可以解析如下:
`/Helv 12 Tf 0.25 0.25 0.25 rg`
font size Tf
指令为后面的文本指令设置 font(subset) 和 size。使用它们插入到 pdf 中的名称来引用字体。在这种情况下 /Helv,它可能会指向 Helvetica 的(一个子集)。然而,它不一定是 helvetica,一些小丑可以插入 Comic Sans 并将其命名为 /Helv。 12 是字体大小。
x y z rg
方法使用 RGB 值设置字体颜色,x, y 和 z 相对强度值在区间 [0.0,1.0] 内。
【讨论】:
以上是关于IText7如何解码字段的默认外观int字体对象及其属性的主要内容,如果未能解决你的问题,请参考以下文章
iText7高级教程之html2pdf——6.在pdfHTML中使用字体
iText7高级教程之html2pdf——6.在pdfHTML中使用字体