Кнопка Acrobat Javascript для сохранения и выхода - PullRequest
2 голосов
/ 08 февраля 2010

У меня есть записываемая PDF-форма, созданная в acrobat pro. Теперь я добавил кнопку, которая должна изменить значение поля, сохранить PDF и закрыть его.

Я решил сделать это следующим образом:

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

Но это не спасает PDF.

Я не хочу иметь диалоговое окно подтверждения. Я видел функцию saveAs в API, но как получить реальный путь вкл. имя файла текущего редактируемого документа? Или у тебя есть другие подходы?

спасибо.

Ответы [ 2 ]

4 голосов
/ 09 января 2013

Но это не сохраняет PDF.

Это потому, что существуют ограничения безопасности, которые не позволяют app.execMenuItem("Save"); работать. Вы не можете позвонить Сохранить через JS.

функция в API, но как получить реальный путь вкл. имя файла текущего редактируемого документа? Или у тебя есть другие подходы?

Вы можете использовать Doc.path, чтобы получить путь к текущему документу, включая его имя файла (а Doc.documentFilename дает вам только имя файла).

Однако на saveAs также распространяются ограничения безопасности, и его можно вызывать только в «привилегированном» контексте (пакетном или консольном). Так что это тоже не сработает.

Короче говоря, ограничения безопасности не позволят вам сохранять документы, не спрашивая пользователя. Если вы думаете об этом, это только логично.

См .: Справочник по Acrobat JS API

2 голосов
/ 19 сентября 2013

Код на стороне клиента для сохранения PDF. Используемые ниже ссылки или код. Это доверенная функция на стороне клиента, которую нужно добавить в C:\Program Files\Adobe\...\JavaScript\Config.js.

Как сохранить PDF с помощью 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;
});
...