如何使用iText获取AcroField属性?

时间:2013-11-25 07:27:16

标签: 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;
    }

更新

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

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

  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");
            }

        }

1 个答案:

答案 0 :(得分:5)

本书的

Chapter 8从相当高的层面讨论了AcroForm字段。如果你想深入挖掘,你需要chapter 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
}

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

  

应为的外观特征字典(见表189)   用于构造指定的动态外观流   注释在页面上的视觉呈现。这个名字MK   入境仅具有历史意义,没有直接意义。

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

  

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

     

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

     

BG 数组(可选):一组数字,其范围应为0.0   指定小部件注释背景的颜色。   数组元素的数量应确定颜色空间,如   为BC描述。

     

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

     

RC 文字字符串(可选;仅限按钮字段):窗口小部件注释的翻转   标题,用户将光标移入时显示   它的活动区域没有按下鼠标按钮。

     

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

当您要求填充颜色时,我假设您指的是背景颜色,这意味着您必须查看颜色空间的 BC 条目,并且< strong> BG 输入实际颜色值。