Acrobat JavaScript Save & Exit Button
-
19-09-2019 - |
Frage
Ich habe ein schriftliches PDF -Formular, das in Acrobat Pro erstellt wurde. Jetzt habe ich eine Schaltfläche hinzugefügt, die einen Felderwert ändern, das PDF speichern und schließen muss.
Ich habe mich dafür entschieden, dies zu tun, wie folgt:
var fieldX = this.getField("xxxxField");
fieldX.value = 1;
app.execMenuItem("Save");
this.closeDoc(true);
Aber das speichert die PDF nicht.
Ich möchte keinen Bestätigungsdialog haben. Ich sah saveAs
Funktion in der API, aber wie man den realen Pfad inkl. Dateiname des aktuellen Bearbeitungsdokuments? Oder haben Sie andere Ansätze?
Danke.
Lösung
Aber das speichert die PDF nicht.
Das liegt daran, dass es Sicherheitsbeschränkungen gibt, die verhindern app.execMenuItem("Save");
von der Arbeit. Sie dürfen Save Save nicht über JS anrufen.
Funktion in der API, aber wie man den realen Pfad inkl. Dateiname des aktuellen Bearbeitungsdokuments? Oder haben Sie andere Ansätze?
Sie können verwenden Doc.path
Um den Pfad des aktuellen Dokuments einschließlich des Dateinamens zu erhalten (und Doc.documentFilename
gibt Ihnen nur den Dateinamen).
Jedoch, saveAs
unterliegt auch Sicherheitsbeschränkungen und kann nur in einen "privilegierten" Kontext (Stapel oder Konsole) aufgerufen werden. Das funktioniert also auch nicht.
Kurz gesagt, Sicherheitsbeschränkungen hindern Sie daran, Dokumente zu speichern, ohne den Benutzer zu fragen. Wenn Sie darüber nachdenken, ist es nur logisch.
Sehen: Acrobat JS API Referenz
Andere Tipps
Client -Seitencode zum Speichern von PDF -Daten, die unten unter dem Link oder Code verwendet werden. Es ist die vertrauenswürdige Funktion der Kunden, die Sie einsetzen müssen C:\Program Files\Adobe\...\JavaScript\Config.js.
So speichern Sie ein PDF mit Acrobat JavaScript
1) Code zum Speichern von Daten auf Ordnerebene.
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) Code zum Speichern von Daten unter 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;
});