无论如何使用 iText 最新版本在我的 PDF 中找到特定字段的边框颜色?我可以获得 AcroField.Item,但我没有看到从那里获得边框颜色的选项。
问问题
1137 次
1 回答
1
请查看此 PDF:text_fields.pdf。此 PDF 是使用TextFields示例创建的。以下代码片段用于设置 name 字段的边框text_2
:
text.setBorderStyle(PdfBorderDictionary.STYLE_SOLID);
text.setBorderColor(BaseColor.BLUE);
text.setBorderWidth(2);
现在,当我们使用iText RUPS查看 PDF 内部并查看该字段的字段字典/小部件注释时,我们会看到以下结构:
我们看到一个/BS
字典,它定义了一个实心边框样式(/S
键的值为)和一个值为 2/S
的边框宽度( )。/W
我们还看到条目的边框颜色 ( /BC
) 条目/MK
是一个包含三个值的数组:[ 0 0 1 ]
. 这意味着边框颜色是 RGB 颜色,其中 Red 的值为 0,Green 的值为 0,Blue 的值为 1。这与我们BaseColor.BLUE
在创建文件时设置的颜色一致。
你说你有AcroField.Item
一个字段的对象。现在您需要获取合并的字段/小部件注释字典并按照 iText RUPS 显示的路径:
AcroFields.Item item = acroFields.getFieldItem(fldName);
PdfDictionary merged = item.getMerged(0);
PdfDictionary mk = merged.getAsDict(PdfName.MK);
PdfArray bc = mk.getAsArray(PdfName.BC);
存储在数组中的值bc
将告知您背景颜色。如果数组只有一个值,则为灰色,如果有三个,则为RGB颜色,如果有四个,则为CMYK颜色。
警告:某些值可能不存在(例如,可能没有/BC
条目)。在这种情况下,您可以获得NullPointerException
s。
于 2015-02-04T07:38:21.890 回答