Seite 1 von 1

Datei Speichern unter per OnClick Schaltfläche

Verfasst: 01.04.2011, 06:13
von LCD-Starter
Hallo Alle,

ich benötige wieder Hilfe!

Basierend auf einem Formular (Anwendung123), erstellt mit LCD, benötige ich eine Schaltfläche zum Speichern des Formulars als PDF.

Soweit noch kein Problem.

Schaltfläche "OnClick" --> Speichern unter , hierbei wird im "Speicher-Unter-Fenster" der Name des Formulars, hier als "Anwendung123" als Name voreingestellt.

Ich benötige aber als Dateinamensvoreinstellung den Inhalt aus drei Feldern des Formulars.

[Dateiname] = Inhalt [Feld1] + Inhalt[Feld2] und Inhalt[Feld3]


Wer kann helfen? - Vielen Dank!

Datei Speichern unter per OnClick Schaltfläche

Verfasst: 01.04.2011, 11:32
von nele_sonntag
Hallösche,

das wurde schon vielfach sehr ausführlich behandelt, schaue doch mal bspw. hier:

http://acronaut.de/view_topic.php?id=761&forum_id=18&highlight=datei+speichern

http://acronaut.de/view_topic.php?id=510&forum_id=34&highlight=datei+speichern letzte Antwort von walde Geschrieben: 23 Mai 2009 00:52 "...Um eine [highlight= #ffff88]Datei[/highlight] durch ausführen eines JavaScripts mit einem frei gewähltem Dateinamen auf einem frei gewählten Pfad zu [highlight= #88ffff]speichern[/highlight] benötigt man einen Folder JavaScript, welcher eine Vertrauenswürdige Funktion (trustedFunction) voraussetzt bzw. beinhaltet..."

evtl. auch das hier: http://acronaut.de/view_topic.php?id=1057&forum_id=34&highlight=datei+speichern

http://acronaut.de/view_topic.php?id=2240&forum_id=6&highlight=datei+speichern

LG Mandy

Datei Speichern unter per OnClick Schaltfläche

Verfasst: 01.04.2011, 12:35
von LCD-Starter
Präzisierung

Soweit ich das jetzt verstanden habe, funktioniert dies über "myTrustedSaveAs = app.trustedFunction(function(doc,path)"

Für diese muss aber eine .js Datei im JavaScript Verzeichnissabgelegt sein.

Mein Formular soll aber an verschiedene Empfänger per Mail versandt werden. Die Empfänger sollen das Formular im Reader öffnen und dann jeweils auf ihrem Rechner speichern.

Hierfür sollte ein einheitlicher Namen verwendet werden.

Am liebsten wäre mir folgendes:
Schaltfläche "OnClick" --> Speichern unter , hierbei wird im "Speicher-Unter-Fenster" der Name des Formulars, hier als "Anwendung123" als Name voreingestellt.

Ich benötige aber als Dateinamensvoreinstellung den Inhalt aus drei Feldern des Formulars.

[Dateiname] = Inhalt [Name] + Inhalt[Datum] und Inhalt[Nummer]


Der Speicherort kann, muss aber nicht vorgegeben werden


Gibt es hierfür eine Lösung, ohne dass auf jedem Rechener eine .js datei angelegt wird?

Vielen Dank für eure Hilfe

Datei Speichern unter per OnClick Schaltfläche

Verfasst: 01.04.2011, 15:22
von Merklin
Hallo,

ist mir nicht bekannt, das es ohne .js geht. Von der rechtlichen Seite ganz zu schweigen.

Mache es doch über ein Popup, das den User auffordert, die Datei unter einen angegeben Namen zu speichern.

VG Merklin

Datei Speichern unter per OnClick Schaltfläche

Verfasst: 17.08.2013, 19:41
von gpolzer
hallo merklin

verwende acrobat x kannst du mir bitte etwas auf die sprünge helfen mit
Mache es doch über ein Popup, das den User auffordert, die Datei unter einen angegeben Namen zu speichern.


mfg und danke günter


Datei Speichern unter per OnClick Schaltfläche

Verfasst: 20.08.2013, 00:33
von Merklin
Hallo günter,

hier ein Beispiel.

VG Merklin

Datei Speichern unter per OnClick Schaltfläche

Verfasst: 20.08.2013, 17:16
von gpolzer
Hallo merklin,

danke für deine antwort

ich habe aber von radznar  ein beispielabweichung_mod.pdf gefunden leider aber mit acrobat live geschrieben was ich am ipad nicht benutzen kann genau das währe es aber was ich suchen würde.

Gibts eine möglichkeit es in acrobat x umzuschreiben

// Standardnamen des Formulars festlegen
var DefaultFileName = "BeispielAbweichung_mod.pdf"

// Counter in extras-Objekt dieses Buttons erstellen
Aktionen.initSaveCounter(this);
var CurrentSaveCount = this.extras.SaveCounter.nodes.item(0).value;

// Variablen
var namePart = Auftrag.rawValue;
var namePart1 = Kunde.rawValue;
var datum = new Date();
var datePart = (datum.getDate() + 0) + "-" + (datum.getMonth() + 1) + "-" + datum.getFullYear();
//var fullName = "/y/Band/GRP/Prod/FERTIGUN/Denkmann/RSV/Bochmann/" + namePart + "-" + namePart1 + " -" + datePart + ".pdf";
var currentFileName = event.target.path;

// Prüfen, ob Variablen nicht leer sind
if (namePart !== null && namePart !== "" && namePart1 !== null && namePart1 !== "") {
// Wenn der SaveCounter noch bei 0 ist, dann Formular erst mal speichern
if (CurrentSaveCount < 1) {
// Counter um 1 erhöhen
this.extras.SaveCounter.nodes.item(0).value = this.extras.SaveCounter.nodes.item(0).value + 1;
// Speicherpfad aus dem Variablen zusammenbasteln und als globale Variable speichern (Wichtig für Folder Level Script!)
SaveAsTarget = Aktionen.createSavePath(namePart, namePart1, datePart, DefaultFileName);
// Namen des aktuellen Formulars mit dem Speicherpfad vergleichen. Wäre ja möglich, dass das Formular umbenannt wurde.
if (SaveAsTarget !== currentFileName) {
// Versuchen, das Formular unter dem Speicherpfad zu speichern
try {
// Folder Level Script aufrufen
event.target.SaveAsFunction(event.target);
// Mitteilen, wo Formular gespeichert wurde
xfa.host.messageBox("Formular gespeichert unter:\r\r" + SaveAsTarget, "Formular gespeichert", 3, 0);
} catch (e) {
xfa.host.messageBox(e.toString().replace("RaiseError: ", "") + "\r\rStellen Sie sicher, dass der Zielordner existiert und keine gleichbenannte Datei dort existiert!", "Fehler beim Speichern des Formulars", 0, 0);
app.execMenuItem("SaveAs");
}
// MailTo-Funktion zeitverzögert ausführen.
app.setTimeOut(Aktionen.MailForm(), 3000);
// Formular nur speichern, wenn der aktuelle Name von Standardnamen abweicht.
} else {
try {
app.execMenuItem("SaveAs");
} catch(e) {
this.extras.SaveCounter.nodes.item(0).value = this.extras.SaveCounter.nodes.item(0).value - 1;
}
}
// Wenn der Counter höher als 0 ist, dann Formular nur mailen
} else {
Aktionen.MailForm();
}
// Warnen, wenn min. eine Variable leer ist
} else {
xfa.host.messageBox("Bitte erst die erforderlichen Felder ausfüllen");
}

Und die Funktionen im Skriptobjekt:
// Counter erstellen
function initSaveCounter(targetObject)
{
if (targetObject.extras.nodes.namedItem("SaveCounter") === null)
{
targetObject.extras.nodes.append(xfa.form.createNode("extras", "SaveCounter"));
targetObject.extras.SaveCounter.nodes.append(xfa.form.createNode("integer", "state"));
while (targetObject.extras.SaveCounter.nodes.length > 0)
{
targetObject.extras.SaveCounter.nodes.remove(targetObject.extras.SaveCounter.nodes.item(targetObject.extras.SaveCounter.nodes.length-1));
}
var newState = xfa.form.createNode("integer", "SaveCounter");
newState.value = 0;
targetObject.extras.SaveCounter.nodes.append(newState);
}
}

// Formular mailen
function MailForm() {
var Mailto = "a@b.c";
var Betreff = Auftrag.rawValue;
var Betreff1 = Kunde.rawValue;
var Nachricht = "Abweichungsmeldung über ein Band";
var CC = "";
var BCC = "";

var Mail = "mailto:" + Mailto + "?Subject=Abweichungsmeldung für " + Betreff + " - " + Betreff1 + "&Body=" + Nachricht + "&cc=" + CC + "&bcc=" + BCC;
event.target.submitForm({
cURL: Mail,
bEmpty: true,
cSubmitAs: "PDF"
});
}

// Speicherpfad erstellen
function createSavePath(namePart, namePart1, datePart, DefaultFileName) {
// Variablen
var Var1 = namePart;
var Var2 = namePart1;

// Zeitstempel
var TimeStamp = datePart;

// Dateinamen mit Standardnamen vergleichen
if (event.target.documentFileName === DefaultFileName) {
// Variablen zu neuem Speicherpfad verketten
var NewFileName = DefaultFileName.replace(".pdf", "_");
NewFileName += Var1 + "_";
NewFileName += Var2 + "_";
NewFileName += TimeStamp;
NewFileName += ".pdf";
// Alle unsicheren Zeichen aus dem Speicherpfad entfernen und durch Unterstrich ersetzen, um Raise Error zu verhindern (Wichtig!)
NewFileName = NewFileName.replace(/[\s\!\?\<\>\'\"\*\/\\=\?\^\`\{\}\|\~]+/g, "_");
// Speicherpfad zurückgeben
return event.target.path.replace(event.target.documentFileName, "") + NewFileName;
} else {
return event.target.path;
}
}

Das Formular braucht anderes Folder Level Skript, da ich deines nicht hatte, brauchst Du dieses hier.
var SaveAsFunction = app.trustedFunction(function(doc)
{
app.beginPriv();
var newSaveAsTarget = SaveAsTarget;
doc.saveAs({cPath: newSaveAsTarget});
app.endPriv();
});



danke und mfg günter