Seite 1 von 1

Formular unter anderem Namen speichern

Verfasst: 28.11.2011, 10:24
von Stormy
Nachdem ich tagelang versucht habe, ein Krankenkassen-Formular, mit dem ich meine Rechnungen einreiche, unter einem bestimmten Ordner mit Zeitstempel versehenen Namen per Javascript abzuspeichern, bin ich mehr aus Zufall auf eine Lösung gestoßen, die direkt aus Acrobat X Pro funktioniert. Die hier im Forum gefundene Lösung mit trustedsave... JS lief nur, wenn ich das Formular im Livecycle Designer erstellte, der mir das Formular nicht nur verratschte, sondern auch von 83kB auf 1,1MB aufblies. Diese Lösung, dessen Urheber mir leider nicht mehr bekannt ist (an dieser Stelle vielen Dank an ihn), möchte ich Euch nicht vorenthalten:

/* Save files with a timestamp filename */
/* this script does not overwrite existing files - unique names are created */
/* EverMap LLC, 2009 */

function DoesFileExists(pathname)
{
var result = false;
try
{
var otherDoc = app.openDoc(pathname);
if (otherDoc != null)
{
result = true;
otherDoc.closeDoc();
}
}
catch(e)
{
result = false;
}
return result;
}

// create a unique filename for output file
function GetUniqueOutputFileName(pathName)
{
var i = 1;
var baseName = pathName.slice(0, pathName.length - 4);
var testName = pathName;
while (DoesFileExists(testName) == true)
{
testName = baseName + " " + i + ".pdf";
i++;
}
return testName;
}

var i = this.path.search(/[^:/]+\.pdf$/);
var fname = this.path.slice(i, this.path.length - 4);

// replace /c/data/ with a desired folder path where to store extracted files
var folder = "/F/Office/PBeaKK/Anträge/";

// now add time stamp data to the filename
var t = new Date();
fname += " - " + t.toLocaleString();
var outputname = fname.replace(/[,\/\?*<>]/g," ");
outputname = outputname.replace(/[:]/g,"-");

var outputpath = folder + outputname + ".pdf";
this.saveAs(GetUniqueOutputFileName(outputpath));

Ich habe das Ganze etwas für meine Zwecke modifiziert und die Funktionen direkt als Javascriptanweisung für Dokumente eingebunden. Bei Benutzung bitte daran denken, die "var folder"-Anweisung Euren Wünschen entsprechend anzupassen.
Gruß
Peter

Formular unter anderem Namen speichern

Verfasst: 28.11.2011, 11:52
von radzmar
Das klappt aber nur, wenn Du das Skript in direkt in die JavaScript-Konsole eingibst und ausführst oder in einer Aktion (Batch) abspeicherst. Bei einem Button verbieten die Sicherheitseinstellungen das Ausführen der Funktion "saveAs()".

Formular unter anderem Namen speichern

Verfasst: 28.11.2011, 12:04
von Stormy
Hallo radzmar,

das stimmt so nicht! Bei mir läuft es über einen Button, alles andere wäre auch Unsinn und unergonomisch (ich hab's halt gerne einfach).
Mein System: Win7 Ultimate 64bit und das ist ja bekannterweise voll mit Restriktionen.

Gruß
Peter

Formular unter anderem Namen speichern

Verfasst: 28.11.2011, 23:11
von Merklin
Hallo Peter,

also bei mir, funktioniert es jedenfalls nicht.

NotAllowedError: Sicherheitseinstellungen verhindern den Zugriff auf diese Eigenschaft oder Methode.
Doc.saveAs:51:Field Schaltfläche2:Mouse Up


Verwende allerdings auch Acrobat 9

VG Merklin

Formular unter anderem Namen speichern

Verfasst: 29.11.2011, 07:39
von radzmar
Mich hätte auch gewundert, wenn das gehen würde.
Die saveAs-Methode kann seit jeher nur aus einem previlegierten Kontext heraus ausgeführt werden, wie ein Folder Level Script, die Konsole oder eine Aktion/Stapelverarbeitung (Batch).
Welche Acrobat/Reader-Version verwendet wird, ist egal.

Steht alles in der JS API Referenz auf Seite 333.
http://www.adobe.com/content/dam/Adobe/ ... erence.pdf

Formular unter anderem Namen speichern

Verfasst: 30.11.2011, 17:35
von Stormy
Ich kann nur nochmal wiederholen: bei mir funktioniert es so und zwar beim Klick auf einen Button, der mir das Formular gleichzeitig doppelseitig ausdruckt (zum Versenden an die Krankenkasse) und dann unter einem von mir gewählten Namen, der auch das Datum enthält in einem von mir gewählten Ordner abspeichert.

Formular unter anderem Namen speichern

Verfasst: 12.10.2014, 13:39
von jagga007
Hi Stormy,

ich suche auch sowas ähnliches. Konntest du schon mehr in Erfahrung bringen so das dieses Script funktioniert?



Gruß jagga007