Formular unter anderem Namen speichern
Verfasst: 28.11.2011, 10:24
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
/* 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