Java 如何从acroform中获取字体颜色?

Java 如何从acroform中获取字体颜色?,java,itext,itext7,Java,Itext,Itext7,我使用的是itext7,我需要从pdfform字段中的acroform获取font color 我在pdffort中未找到此属性 如何执行此操作?可以使用 Color textColor = field.getColor(); 对于PdfFormField字段 不过,请注意: iText 7仅提取使用操作符g、rg和k之一设置的文本颜色,这些操作符分别是设置DeviceGray、DeviceGB和DeviceCMYK非行程颜色的方便操作符。如果使用其他运算符选择颜色,或者根本没有颜色设置运算

我使用的是
itext7
,我需要从pdfform字段中的acroform获取
font color

我在
pdffort
中未找到此属性

如何执行此操作?

可以使用

Color textColor = field.getColor();
对于
PdfFormField字段

不过,请注意:

  • iText 7仅提取使用操作符grgk之一设置的文本颜色,这些操作符分别是设置DeviceGrayDeviceGBDeviceCMYK非行程颜色的方便操作符。如果使用其他运算符选择颜色,或者根本没有颜色设置运算符,则将返回
    null

    我还没有观察到使用其他颜色设置操作符的表单字段默认外观的PDF。因此,根据我的经验,这种执行已经足够

  • 如果该字段是富文本字段,则默认样式字符串可能会否决默认外观中的任何内容,因此使用
    getColor()
    检索的颜色可能不正确

    不过,在这种情况下,填写字段的用户可以自由使用不同的颜色。因此,在这种情况下,检索“字段的文本颜色”的尝试无论如何都是有问题的

  • PDF处理器或PDF中的JavaScript代码可以忽略或覆盖默认外观颜色。因此,您永远无法确定此处返回的颜色实际上是用户最终将感知文本颜色的颜色


这是否回答了您的问题@A在这种情况下,没有字体颜色信息。
PdfFormField
没有
getColor()
方法。我使用的是
itext 7.0.4
版本。@John“PdfFormField没有getColor()方法”-有,它是大约8个月前添加的。“我正在使用itext 7.0.4版本”-您正在使用这样一个旧版本(超过两年),这是您应该添加到问题中的信息。根据@mkl注释,此方法已添加到版本7.1.6中(7.1.9将于2019年12月2日发布)。这是一个在7.0和7.1之间非常顺利的升级,所以我强烈建议您这样做。