在破碎的pdf表单上恢复内容的脚本

时间:2017-04-18 01:33:51

标签: javascript pdf adobe acrobat

这是我的第一个问题,请与我好心。

我们最近在使用可填写的PDF表单时遇到了问题。基本上,如果已经键入数据然后保存在Macintosh上,数据似乎完全消失 (你可以在这里阅读更多相关信息:https://forums.adobe.com/message/3951187

我准备了以下脚本来自动完成这个过程(感谢JoelGeraci。你可以查看他的GitHub页面以获取更多信息@ https://gist.github.com/JoelGeraci/05e15f3792b299b68be900ab4489e959)但是当我运行时它不会在每个字段中循环在adobe reader DC中。关于如何解决这个问题的任何建议?

代码:

/*Code to fix broken PDF Forms*/

//Check version
if (app.viewerType != "Reader" || app.viewerVersion >= 11) {
    app.addMenuItem({

    //Add new menu item under the "Edit" tab
    cName: "PPDF_fixFields",
    cUser: 'Fix Field Appearances',
    cParent: 'Edit',

    //Run the function "fixFields()"
    cExec: "fixFields()",

    //Enable this option if the number of fields is greater than 0
    cEnable: "event.rc = (this.numFields > 0);"
});

function fixFields() {
    //Number of Fields
    nFields = this.numFields;

    //shows the progress bar
    var t = app.thermometer;
    t.duration = nFields;
    t.begin();

    //Cycle through all fields
    for (var i = 0; i < nFields; i++) {

        //nth Field
        var f = this.getField(this.getNthFieldName(i));

        //toggle delay to refresh content
        f.delay = true;
        f.delay = false

        //progress bar
        t.value = i;
    }
    //End progress bar
    t.end();

    //Producer info
    if (app.viewerType != "Reader") {
        this.info.Producer = "Adobe Acrobat " + app.viewerVersion
    }
}

1 个答案:

答案 0 :(得分:1)

因此,您还注意到Preview.app对于PDF表单来说是纯粹的毒药。不幸的是,损害不仅仅是不创造外观,而且形式中的任何逻辑也会被破坏。

因此,将表单数据(实际上仍然存在)导出为FDF会更安全,并将其导入到表单的空白版本中。 Reader XI及更新版本中应提供导出/导入。