Всплывающее окно динамической печати Acrobat для отображения комментария к марке - PullRequest
0 голосов
/ 03 ноября 2018

Я создаю приложение с всплывающим окном динамического штампа acrobat, и мне бы хотелось, чтобы оно отражало комментарий штампа. У моего динамического штампа есть некоторый JavaScript, который сгенерирует всплывающее окно. Информация в текстовом поле всплывающего окна станет частью штампа. Я пытаюсь добавить содержимое всплывающего окна в двух областях.

  1. На динамическом штампе (сделано)
  2. В комментариях к марке (нужна помощь)

Ниже я добавил JavaScript, который у меня сейчас есть. Если кто-нибудь здесь может помочь мне найти решение, я буду очень признателен.

enter image description here

var builder = 

{
        // These map to Text Fields in the Stamp
    textBoxes :
    [
        { field:"IsoNum", description:"Isometric Number:", default:function() { return Collab.user; } }     

    ]
}


/*********** belongs to: AcroForm:Calculation:Calculate ***********/

// SEE GLOBAL JAVASCRIPT SECTION FOR CUSTOMIZATION

if (event.source.forReal)
{
    var stampDialog = CreateDialog(builder);
    app.execDialog(stampDialog);    


    for (var i = 0; i < builder.textBoxes.length; ++i)
    {
        var t = builder.textBoxes[i];
        this.getField(t.field).value = stampDialog.textBoxResults[i];
    }
}

function CreateDialog(dialogBuilder)
{
    var sd = new Object();
    sd.builder = dialogBuilder;
    sd.textBoxResults = new Array();

    var optionsElements = new Array();  
    for (var i = 0; i < dialogBuilder.textBoxes.length; ++i)
    {
        var view = new Object();        
        view.type = "view";
        view.align_children = "align_row";
        view.elements = new Array();

        var t = dialogBuilder.textBoxes[i];

        var s = new Object();
        s.type = "static_text";
        s.item_id = "sta" + i;
        s.name = t.description;
        s.width = 110;

        var e = new Object();
        e.type = "edit_text";
        e.item_id = "edt" + i;
        e.width = 150;

        view.elements[0] = s;
        view.elements[1] = e;       

        optionsElements[i] = view;
    }

    var optionsCluster = 
    {
        type: "cluster",
        name: "Options",
        elements: optionsElements
    };

    sd.initialize = function(dialog)
    {
        var init = new Object();
        for (var i = 0; i < this.builder.textBoxes.length; ++i)
        {
            var t = this.builder.textBoxes[i];
            var id = "edt" + i;         
            init[id] = t.default();
        }

        dialog.load(init);
    };

    sd.commit = function(dialog)
    {
        var res = dialog.store();               

        for (var i = 0; i < this.builder.textBoxes.length; ++i)
        {
            var t = this.builder.textBoxes[i];
            var id = "edt" + i;
            this.textBoxResults[i] = res[id];           
        }
    };

    sd.description = 
    {
        name: "Stamp Dialog",
        elements:
        [
            {
                type: "view",
                align_children: "align_fill",
                elements:
                [
                    optionsCluster
                ]
            },
            {
                type: "ok"
            }
        ]
    };

    return sd;
}

1 Ответ

0 голосов
/ 03 ноября 2018

У меня нет конкретного кода, но, похоже, вы понимаете достаточно Acrobat JavaScript, чтобы понять мои инструкции.

Код диалога запускается между временем, когда вы выбираете и устанавливаете штамп, и когда штамп фактически создается. По этой причине вы не можете установить содержание заметки непосредственно в своем коде, потому что аннотация штампа фактически не существует, пока ваша функция фиксации не завершится. Вместо этого вам нужно создать функцию, которая устанавливает содержимое заметки в timeOut и использует задержку около половины секунды.

...