2

私はacrobatproで作成された書き込み可能なPDFフォームを持っています。ここで、フィールドの値を変更し、PDFを保存して閉じる必要があるボタンを追加しました。

私はこれを次のように行うことにしました:

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

しかし、これはpdfを保存しません。

確認ダイアログは必要ありません。APIで関数を見ましたsaveAsが、実パスを含む取得方法。現在の編集ドキュメントのファイル名?または、他のアプローチはありますか?

ありがとうございました。

4

2 に答える 2

4

しかし、これはpdfを保存しません。

これは、動作を妨げるセキュリティ制限があるためapp.execMenuItem("Save");です。JS 経由で Save を呼び出すことはできません。

APIの関数ですが、実際のパスを含む方法を取得する方法. 現在編集中のドキュメントのファイル名? それとも他のアプローチはありますか?

Doc.pathファイル名を含む現在のドキュメントのパスを取得するために使用できます(Doc.documentFilenameファイル名のみを提供します)。

ただし、saveAsセキュリティ上の制限もあり、"特権" コンテキスト (バッチまたはコンソール) でのみ呼び出すことができます。したがって、これも機能しません。

つまり、セキュリティ上の制限により、ユーザーに確認せずにドキュメントを保存することはできなくなります。考えてみれば、それは論理的です。

参照先: Acrobat JS API リファレンス

于 2013-01-09T18:29:08.523 に答える
2

リンクまたはコードの下で使用される PDF データを保存するためのクライアント側コード。入れる必要があるのはクライアント側の信頼できる機能ですC:\Program Files\Adobe\...\JavaScript\Config.js.

Acrobat JavaScript で PDF を保存する方法

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;
});
于 2013-09-19T09:55:14.457 に答える