javascript - 如何在 adobe acrobat reader 中获取 SOAP 网络服务的响应?

标签 javascript ajax adobe acrobat

我创建了一个肥皂网络服务,并希望在 adobe acrobat reader 中显示该网络服务的响应。我在 adobe acrobat->reader->javascripts 文件夹中创建了一个名为 MenuConfig.js 的新文件,并在该文件中添加了代码。 现在我尝试使用 ajax 调用来显示 SOAP Web 服务的响应。

这是我的代码:

app.addMenuItem({
    cName: "-",
    cParent: "File",
    cExec: " "
});
app.addMenuItem({
    cName: "Save to Sharepoint",
    cParent: "File",
    cExec: "ShowDialog()",
    nPos: 0
});

// Dialog Definition 
var oDlg = {
    strName: "",
    initialize: function(dialog) {
        dialog.load({
            "desc": this.strName
        });
    },
    commit: function(dialog) {
        var data = dialog.store();
        this.strName = data["desc"];
    },
    description: {
        name: "Sharepoint", // Dialog box title
        align_children: "align_left",
        width: 250,
        height: 250,
        elements: [{
            type: "cluster",
            name: "Save File",
            align_children: "align_left",
            elements: [{
                    type: "view",
                    align_children: "align_row",
                    elements: [{
                            type: "static_text",
                            name: "Description",
                            width: 70
                        },
                        {
                            item_id: "desc", //item_id needs 4 characters only
                            type: "edit_text",
                            alignment: "align_right",
                            width: 200,
                            height: 20
                        }
                    ]
                },
                {
                    type: "view",
                    align_children: "align_row",
                    elements: [{
                            type: "static_text",
                            name: "1. Client",
                            width: 70
                        },
                        {
                            item_id: "Clnt",
                            type: "popup",
                            alignment: "align_right",
                            width: 165,
                            height: 20
                        }
                    ]
                },
                {
                    type: "view",
                    align_children: "align_row",
                    elements: [{
                            type: "static_text",
                            name: "2. Matter",
                            width: 70
                        },
                        {
                            item_id: "Matr",
                            type: "popup",
                            alignment: "align_right",
                            width: 165,
                            height: 20
                        }
                    ]
                },
                {
                    type: "view",
                    align_children: "align_row",
                    elements: [{
                            type: "static_text",
                            name: "3. Doc. Type",
                            width: 70
                        },
                        {
                            item_id: "DocT",
                            type: "popup",
                            alignment: "align_right",
                            width: 165,
                            height: 20
                        }
                    ]
                },
                {
                    type: "view",
                    align_children: "align_row",
                    elements: [{
                            type: "static_text",
                            name: "4. User ID",
                            width: 70
                        },
                        {
                            item_id: "UsID",
                            type: "edit_text",
                            alignment: "align_right",
                            width: 200,
                            height: 20
                        }
                    ]
                },
                {
                    //alignment: "align_right",
                    type: "ok_cancel",
                    align_children: "align_row",
                    ok_name: "Ok",
                    cancel_name: "Cancel"
                }
            ]
        }]
    }
};

function ShowDialog() {
    var listId = '{19736DC6-B732-4D25-8DAA-9E0FD808CA30}';
    var siteUrl = "http://www.rajman.in/json/productlistclient.php?wsdl";
    oDlg.strName = "Larry";
    if ("ok" == app.execDialog(oDlg)) {
        getDocTypeListItems(siteUrl, listId);
    }
}

function getDocTypeListItems(siteUrl, listId) {
    var cURL = "http://www.rajman.in/json/productlist.php?wsdl";
    ajax = function(siteUrl) {
        var params = {
            cVerb: "GET",
            cURL: siteUrl,
            oHandler: {
                response: function(msg, uri, e, h) {
                    var stream = msg;
                    var string = "";
                    string = SOAP.stringFromStream(stream);
                    app.alert(string);
                }
            }
        };

        Net.HTTP.request(params);
    }
}

最佳答案

两个问题:

1) 您无法使用 Acrobat JavaScript 扩展来使用 ajax 进行连接; ajax 是 JavaScript 的浏览器扩展。 Reader/Acrobat 的 Javascript 看起来更像这样

   var oAuthenticator =
   {
      Username: "myUserName",
      Password: "myPassword"
   };
   var response = SOAP.request(
   {
      cURL: cURL,
      oRequest: {
         "http://soapinterop.org/:echoString":
         {
            inputString: cTestString
         }
      },
      cAction: "http://soapinterop.org/",
      oAuthenticate: oAuthenticator
   });

然后您将处理响应对象。请参阅此处有关如何使用 Acrobat 扩展连接到 SOAP 的文档... http://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FSOAP_methods.htm%23TOC_request1bc-4&rhtocid=_6_1_8_70_1_3

2) 除非文件启用了扩展使用权限,否则您根本无法在 Adob​​e Reader 中使用 SOAP...除非您使用 LiveCycle 或 Datalogics PDF JavaToolkit,否则您无法执行此操作。您无法使用 Acrobat 添加 SOAP 使用权限。使用权往往相当昂贵,因此您可能需要重新考虑您的解决方案。您可以通过添加一个步骤来完成同样的事情,其中​​ SOAP 响应在服务器上重新格式化为 FDF 或 XFDF,FDF 或 XFDF 可以由 Reader/Acrobat 自动导入,并且是免费的解决方案。

关于javascript - 如何在 adobe acrobat reader 中获取 SOAP 网络服务的响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44858114/

相关文章:

JavaScript: trim .toPrecision() 尾随零

javascript - Angular-Google-Analytics 存在 PhoneGap 问题, "Refused to load the script"

php - 创建预约时段

javascript - 如何在codeigniter中将2个或更多数据传递给ajax

c - 如何通过 Alchemy gcc 编译 ffmpeg?

javascript - ExpressJS 和 Cookie - 无法获取 express-cookie 来初始化 Cookie

javascript - 异步函数声明在 Internet Explorer 中需要 ';'

javascript - Bootstrap-select with ajax jquery 不工作

apache-flex - 如何为按钮栏按钮设置工具提示

adobe - 在 CQ DAM 中添加自定义元数据命名空间