【问题标题】:Is it possible to add 'Open a web link action' action to acroform field programmatically using iText?是否可以使用 iText 以编程方式将“打开 Web 链接操作”操作添加到 acroform 字段?
【发布时间】:2015-03-24 08:14:35
【问题描述】:

在 Adob​​e Acrobat 中,可以将“打开 Web 链接操作”添加到 acroform。是否可以使用 iText 使用现有的 acroform 来做到这一点?

我在 iText 文档中找不到任何关于它的提及,因此尝试以编程方式创建新的 acrofield 并将此操作添加到其中,但没有成功。这是我的代码:

PdfReader pdfReader = new PdfReader(templateStream);
        PdfStamper stamper = new PdfStamper(pdfReader, new FileOutputStream("delivery.pdf"));
        stamper.setFormFlattening(true);
        stamper.getAcroFields().setField("package", packages);
        stamper.getAcroFields().setField("purchase_id", purchaseId);
        stamper.getAcroFields().setField("activation_code", activationCode);
        if (partner != "") {
            PdfFormField field = PdfFormField.createTextField(stamper.getWriter(), false,
                    false, 100);
            field.setFieldName("partner");
            PdfAction action = new PdfAction(partner);
            field.setAction(action);
            field.setColor(new BaseColor(0,0,255));
            PdfAppearance appearance = stamper.getUnderContent(1).
                    createAppearance(200, 20);
            appearance.setFontAndSize(BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED), 12f);
            appearance.setColorFill(BaseColor.BLUE);
            field.setAppearance(PdfAnnotation.APPEARANCE_DOWN, appearance);
            field.setDefaultAppearanceString(appearance);
            stamper.getAcroFields().setField("partner", "Click here to show partner's web site");
        }

显示的结果 PDF 文档没有合作伙伴字段。请指出我的一些文档或错误的代码。

【问题讨论】:

    标签: java pdf hyperlink itext acrofields


    【解决方案1】:

    您正在尝试向表单添加交互性。但是,您也使用此行丢弃了所有交互性:

    stamper.setFormFlattening(true);
    

    您还声称您正在添加一个额外的字段。据我所知,这种说法是错误的。您创建了一个字段名称field(并且您以困难的方式创建它;我希望您改用TextField 类)。但是,我没有看到您在任何地方添加该字段。我错过了以下行:

    stamper.addAnnotation(field, 1);
    

    请注意,这行没有意义:

    stamper.getAcroFields().setField("partner", "Click here to show partner's web site");
    

    为什么要先创建一个字段(并可能添加标题),然后立即更改它?为什么不从一开始就正确创建字段?

    最后,您似乎想创建一个可以被人们点击的按钮。那你为什么要创建一个文本字段?创建一个按钮不是更有意义吗?

    这是一个机器会回答的问题示例:错误太多...也许您应该考虑在尝试修复代码之前阅读the documentation

    【讨论】:

      猜你喜欢
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-26
      • 1970-01-01
      相关资源
      最近更新 更多