如何使用iText获取AcroField属性?

Mah*_*rma 3 java pdf itext

我正在使用iText来阅读pdf文件.我的pdf中有20个Acro文本字段,具有不同的fillColor属性.我试图阅读属性,但无法阅读.有没有什么办法可以让我们在java中获得具有特定颜色的字段作为fillcolor属性?

编辑: 我使用以下Adobe Javascript在pdf中创建了acro字段

   var oFld = this.addField("nameOfField", "button", 0, fldRect);
    if (oFld != null) {
        oFld.buttonSetCaption("");
        oFld.borderStyle = border.s;
        oFld.fillColor = color.gray;
        oFld.textColor = color.white;
        oFld.lineWidth = 1;
    }
Run Code Online (Sandbox Code Playgroud)

更新:

现在我能够读取颜色属性.

我不确定这是否是正确的做法?

  if(dict.getAsDict(PdfName.MK).get(PdfName.BG) !=null){
            if(dict.getAsDict(PdfName.MK).get(PdfName.BG).toString().trim().equals("     
    [0.0, 1.0, 0.0]")){
                System.out.println(entry.getKey());
                System.out.println("Green");
            }
            if(dict.getAsDict(PdfName.MK).get(PdfName.BG).toString().trim().equals("
        [1.0, 0.0, 0.0]")){
                System.out.println(entry.getKey());
                System.out.println("Red");
            }

        }
Run Code Online (Sandbox Code Playgroud)

Bru*_*gie 5

我的书的第8章从相当高的层面讨论了AcroForm字段.如果你想深入挖掘,你需要第13章.在页449,表13.11列出了不同的AcroFields.Item方法.如您所知,使用表单字典描述表单字段.使用一个或多个小部件注释来描述(或者)描述字段的视觉表示.您正在寻找外观的属性,因此您需要注释字典.

您还知道,当一个字段与一个窗口小部件注释相对应时,通常会合并字段字典和窗口小部件字典,这就是AcroFields.Item该类具有调用方法的原因getMerged().对于特定字段的每个窗口小部件注释,它返回字段和窗口小部件注释的合并属性.

这就是理论.我们来看一个例子:InspectForm

Map<String,AcroFields.Item> fields = form.getFields();
AcroFields.Item item;
PdfDictionary dict;
int flags;
for (Map.Entry<String,AcroFields.Item> entry : fields.entrySet()) {
    out.write(entry.getKey());
    item = entry.getValue();
    dict = item.getMerged(0);
    // inspect dict
}
Run Code Online (Sandbox Code Playgroud)

在该示例中,我们检查字段flags(/FF),它们是字段字典的属性.你对外观特征很感兴趣,所以我猜你要检查这个/MK条目,即(ISO-32000-1表188):

外观特征字典(参见表189),用于构造指定页面上注释的可视化表示的动态外观流.此条目的MK名称仅具有历史意义,没有直接含义.

您需要查看表189以找出所需的特定属性:

R integer(可选):窗口小部件注释相对于页面逆时针旋转的度数.该值应为90的倍数.默认值:0.

BC 数组(可选): 一个数字数组,其范围应为0.0到1.0,用于指定窗口小部件注释边框的颜色.数组元素的数量决定了颜色应该定义的颜色空间:0没有颜色; 透明1 DeviceGray 3 DeviceRGB 4 DeviceCMYK

BG 数组(可选):一个数字数组,其范围应为0.0到1.0,用于指定窗口小部件注释背景的颜色.数组元素的数量应确定颜色空间,如BC所述.

CA 文本字符串(可选;仅限按钮字段):窗口小部件注释的常规标题,在不与用户交互时显示.与此表中列出的仅适用于与按钮字段关联的窗口小部件注释的其余条目(请参阅12.7.4.2中的按钮,"按钮字段")不同,CA条目可以与任何类型的按钮字段一起使用,包括复选框(请参阅12.7.4.2,"按钮字段")和单选按钮(12.7.4.2中的单选按钮,"按钮字段")中的复选框.

RC 文本字符串(可选;仅限按钮字段):窗口小部件注释的翻转标题,当用户将光标滚动到其活动区域而不按下鼠标按钮时,将显示该标题.

AC 文本字符串(可选;仅限按钮字段):窗口小部件注释的备用(向下)标题,在其活动区域中按下鼠标按钮时将显示该标题.

当您要求填充颜色时,我假设您指的是背景颜色,这意味着您必须查看颜色空间的BC条目,并在BG条目中查看实际颜色值.