Acrobat Javascript Save&退出按钮

时间:2010-02-08 13:10:34

标签: javascript api pdf acrobat

我在acrobat pro中创建了一个可写的pdf表单。现在,我添加了一个按钮,它必须更改字段值,保存pdf并关闭它。

我决定这样做:

var fieldX = this.getField("xxxxField");
fieldX.value = 1;
app.execMenuItem("Save");
this.closeDoc(true);

但这并没有保存pdf。

我不想要一个确认对话框。我在API中看到了saveAs函数但是如何获得实际路径包含。当前编辑文件的文件名?或者你有其他方法吗?

谢谢。

2 个答案:

答案 0 :(得分:4)

  

但这并没有保存pdf。

这是因为存在阻止app.execMenuItem("Save");工作的安全限制。你不能通过JS调用Save。

  API中的

功能,但如何获得实际路径包含。当前编辑文件的文件名?或者你有其他方法吗?

您可以使用Doc.path获取当前文档的路径,包括其文件名(Doc.documentFilename仅为您提供文件名。)

但是,saveAs也受安全限制,只能在“特权”上下文(批处理或控制台)中调用。所以这也行不通。

简而言之,安全限制将阻止您在不询问用户的情况下保存文档。如果你考虑一下,这是合乎逻辑的。

请参阅:Acrobat JS API Reference

答案 1 :(得分:2)

保存PDF链接或代码下方使用的数据的客户端代码。这是客户端可信任的功能,您需要将其放入C:\Program Files\Adobe\...\JavaScript\Config.js.

How to Save a PDF with Acrobat JavaScript

1)用于在文件夹级别保存数据的代码。

var mySaveAs = app.trustedFunction ( function(oDoc,cPath,cFlName)
{

app.beginPriv();
    var flag=false; 

    cPath = cPath.replace(/([^\/])$/, "$1/");

    if(cPath.indexOf("http://") !== -1 || cPath.indexOf("https://") !== -1)
    {
        cPath = cPath.replace('http://', "\\\\");
        cPath = cPath.replace('https://', "\\\\");

        while(cPath.indexOf("/") !== -1)
        {
            cPath = cPath.replace('/', "\\\\");          
        }
    }

    if(cPath.indexOf(":") !== -1)
    {       
        cPath = cPath.replace(":","@"); 
    }


    try{

        oDoc.saveAs(cPath + cFlName);        

        flag = true;

    }catch(e){
        app.alert("Error During Save");
    }
    app.endPriv();

    return flag;
});

2)在SharePoint上保存数据的代码。

var mySaveAs = app.trustedFunction ( function(oDoc,cPath,cFlName)
{

    app.beginPriv();
    var flag=false;
    try{                         
        app.execMenuItem("Save");        
        flag = true;         
    }catch(e){
        app.alert("Error During Save");
    }
    app.endPriv();  
    return flag;
});