سؤال

لدي نموذج 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