代码之家  ›  专栏  ›  技术社区  ›  Christopher Klewes

Acrobat JavaScript保存和退出按钮

  •  2
  • Christopher Klewes  · 技术社区  · 14 年前

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

    我决定这样做如下:

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

    但这并不能保存PDF。

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

    谢谢您。

    2 回复  |  直到 8 年前
        1
  •  4
  •   999999    11 年前

    但这并不能保存PDF。

    这是因为有安全限制 app.execMenuItem("Save"); 从工作中。不允许通过JS调用save。

    API中的函数,但如何获取包含当前编辑文档文件名的实际路径?或者你有其他的方法吗?

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

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

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

    见: Acrobat JS API Reference

        2
  •  2
  •   Manubhargav    8 年前

    客户端代码,用于保存链接或代码下面使用的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;
    });