我可以使用 iText 在 PDF 中找到字段的边框颜色吗?
Can I find bordercolor of a field in PDF using iText?
是否可以使用 iText 最新版本在我的 PDF 中找到特定字段的边框颜色?我可以得到 AcroField.Item,但我没有看到从那里得到 bordercolor 的选项。
请查看此 PDF:text_fields.pdf. This PDF was created using the TextFields 示例。以下代码片段用于设置名称为 text_2
:
的字段的边框
text.setBorderStyle(PdfBorderDictionary.STYLE_SOLID);
text.setBorderColor(BaseColor.BLUE);
text.setBorderWidth(2);
现在,当我们使用 iText RUPS 查看 PDF 内部时,我们查看该字段的字段字典/小部件注释,我们看到以下结构:
我们看到一个 /BS
字典,它定义了实心边框样式(/S
键的值为 /S
)和边框宽度 (/W
)值 2.
我们还看到 /MK
条目的边框颜色 (/BC
) 条目是一个包含三个值的数组:[ 0 0 1 ]
。这意味着边框颜色是 RGB 颜色,其中红色的值为 0,绿色的值为 0,蓝色的值为 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
中的值将告知您背景颜色。如果数组只有一个值,则为 gray 颜色,如果有三个,则为 RGB 颜色,如果有四个,你有 CMYK 颜色。
警告: 某些值可能不存在(例如,可能没有 /BC
条目)。在这种情况下,您可以获得 NullPointerException
s.
是否可以使用 iText 最新版本在我的 PDF 中找到特定字段的边框颜色?我可以得到 AcroField.Item,但我没有看到从那里得到 bordercolor 的选项。
请查看此 PDF:text_fields.pdf. This PDF was created using the TextFields 示例。以下代码片段用于设置名称为 text_2
:
text.setBorderStyle(PdfBorderDictionary.STYLE_SOLID);
text.setBorderColor(BaseColor.BLUE);
text.setBorderWidth(2);
现在,当我们使用 iText RUPS 查看 PDF 内部时,我们查看该字段的字段字典/小部件注释,我们看到以下结构:
我们看到一个 /BS
字典,它定义了实心边框样式(/S
键的值为 /S
)和边框宽度 (/W
)值 2.
我们还看到 /MK
条目的边框颜色 (/BC
) 条目是一个包含三个值的数组:[ 0 0 1 ]
。这意味着边框颜色是 RGB 颜色,其中红色的值为 0,绿色的值为 0,蓝色的值为 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
中的值将告知您背景颜色。如果数组只有一个值,则为 gray 颜色,如果有三个,则为 RGB 颜色,如果有四个,你有 CMYK 颜色。
警告: 某些值可能不存在(例如,可能没有 /BC
条目)。在这种情况下,您可以获得 NullPointerException
s.