Вопрос

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

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

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

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

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

благодарю вас.

Это было полезно?

Решение

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

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

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

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

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

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

Видеть: ACROBAT JS API Ссылка

Другие советы

Клиентский код стороны для сохранения данных 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;
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top