【问题标题】:Acrobat Javascript Save & Exit ButtonAcrobat Javascript 保存和退出按钮
【发布时间】:2010-02-08 13:10:34
【问题描述】:

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

我决定这样做:

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

但这不会保存 pdf。

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

谢谢。

【问题讨论】:

    标签: javascript api pdf acrobat


    【解决方案1】:

    但这不会保存 pdf。

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

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

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

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

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

    见:Acrobat JS API Reference

    【讨论】:

      【解决方案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;
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-08
        • 2012-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多