Joschka Rick
 - 9. März 2016

Adobe Formular mit vorgegebenem Dateinamen speichern

In diesem Beitrag zeige ich Ihnen, wie Sie Ihr Adobe Formular mit vorgegebenen Dateinamen speichern, denn es wird häufig von Außendienst-Mitarbeitern oder Kunden ausgefüllt, und das auf vielen verschiedenen PCs und an vielen Orten außerhalb Ihres Unternehmens.

Der Adobe Reader bietet keine Möglichkeit, den Dateinamen des abzuspeichernden Formulars vorzuschlagen oder vorzugeben. Richtlinien für die Namensgebung werden nur durch Aufwand und Sorgsamkeit des Ausfüllenden eingehalten. So kann immer wieder ein erhöhter Wartungsaufwand beim Archivieren oder Einordnen der Dokumente entstehen.

Vorteil der Lösung

Mit dieser Lösung können Sie den Namen von Ihrem Adobe Formular vorgeben und dynamisch zusammensetzen. Durch das Coding können dynamische Bestandteile für den Namen festgelegt werden und das Dokument wird an einem vorbestimmten Ort gespeichert. So ist die Hürde zum Einhalten der Richtlinien geringer, Ihr Wartungsaufwand sinkt und das automatische Verarbeiten von den Dokumenten wird ermöglicht.

E-Book: SAP Adobe Forms

Im folgenden E-Book wird die neue Formulartechnologie SAP Adobe Forms im Detail vorgestellt und ein Bezug zur Praxis hergestellt.

Bitte beachten Sie, dass dieses Tutorial für Adobe Reader 9.0 geschrieben ist. Bei anderen Adobe Reader Versionen können die Schritte von diesem HowTo abweichen.

Speicherung mit vorgegebenem Dateinamen

Schritt 1 – Die JavaScript Datei

Um das Speichern mit vorgegebenem Namen zu ermöglichen, legen wir die Datei myJSFile.js an, wobei der Name frei wählbar ist. Unter Windows muss die Datei unter folgendem Pfad (kann je nach Installation abweichen) abgespeichert werden:

C:\Program Files (x86)\Adobe\Reader9.0\Reader\Javascripts\myJSFile.js

In diesem Ordner werden JavaScript Dateien gespeichert, welche der Adobe Reader ausführen darf.

Die Datei myJSFile.js füllen wir mit folgendem Inhalt:

var myTrustedSaveAs = app.trustedFunction( function(doc, path)
{
    app.beginPriv();
    doc.saveAs(path);
    app.endPriv();
});

Was passiert hier?

Mit dem Befehl myTrustedSaveAs = app.trustedFunction(…) geben wir einer Funktion die Privilegien, die es benötigt, um auf das Windows-Dateisystem zuzugreifen. Diese privilegierte Funktion speichern wir durch die Zuweisung als myTrustedSaveAs ab.

Als Parameter der Funktion trustedFunction(…) erzeugen wir mit dem Befehl function(doc, path){…} eine eigene Funktion, welche als Parameter doc und path erhalten wird.

Im Funktionsrumpf starten wir per app.beginPriv(); den privilegierten Modus von Adobe. Mit dem Befehl doc.saveAs(path); führen wir die Funktion saveAs(…) des Objektes doc aus. In unserem Fall wird das dazu führen, dass das in doc hinterlegte Dokument unter dem angegebenen Pfad path abgespeichert wird.

Nun wird per app.endPriv(); der privilegierte Modus wieder beendet.

Weitere Informationen zu dem privilegierten Modus finden Sie hier.

Schritt 2 – Einbinden im Adobe Formular

Öffnen Sie nun ihr Adobe Formular im LiveCycle Designer. Hier kann die gerade erzeugte Funktion myTrustedSaveAs jetzt als Funktionsaufruf genutzt werden. Dies kann zum Beispiel mit dem Klick eines Buttons geschehen.

Nehmen wir an, es existiert an Button, der die gewünschte Funktion auslösen soll. Markieren Sie den Button und lassen Sie sich den Skript-Editor anzeigen (Strg+Umschalt+F5, oder per Fenster->Skript-Editor). Hier wählen Sie in der Box neben Anzeigen das Event click aus. Im Skripting-Bereich können Sie nun folgenden Funktionsaufruf hinzufügen:

myTrustedSaveAs(event.target,"/c/dokument_export/wartungsdokument.pdf");

Als Dokument übergeben Sie der Funktion durch das Angeben von event.target das aktuelle PDF Dokument. Der im Pfad angegebene Ordner muss bereits existieren und als Trennzeichen muss ein Slash (Schrägstrich) verwendet werden. Sind alle Voraussetzungen erfüllt, wird das Formular jetzt per Klick unter dem angegebenen Namen abgespeichert.

Adobe Formular

HowTo Speichern per JavaScript

Optional können Sie nach dem Ausführen der Funktion noch den User über eine Message Box benachrichtigen, dass der Vorgang abgeschlossen wurde. Fügen Sie dazu z. B. folgende Zeile ein:

xfa.host.messageBox("Ihr Dokument wurde erfolgreich gespeichert.");

Fazit

Auf Basis dieser Anleitung können Sie nun das Speichern einer Datei aus einem Adobe Formular auslösen. Um die Funktionalität ihren Wünschen entsprechend anzupassen, können Sie bspw. den Speicherort dynamisch festlegen, eine Abfrage auf Existenz des Ordners einbauen, den Namen der gespeicherten PDF Datei mit der aktuellen Uhrzeit, dem Benutzernamen oder einer Belegnummer aus Ihrem SAP System versehen usw.

 Haben Sie fragen oder ist etwas unklar? Dann hinterlassen Sie gerne ein Kommentar und wir werden Ihnen zeitnah antworten.

Soll ihr Adobe Formular gar nicht mehr gespeichert, sondern direkt per E-Mail versendet werden? Dann schauen Sie sich doch unseren Artikel Adobe Formular per Email versenden an.

Joschka Rick

"Geht nicht" gibt es bei mir nicht! Mit meiner Wissbegierde und meinem breiten technischen Verständnis habe ich bisher immer eine Lösung gefunden. Mein Name ist Joschka Rick und ich bin Senior Consultant im Kernteam mindforms. Um Ihre Projekte zum Erfolg zu führen, lege ich besonderen Wert auf Zuverlässigkeit, gute Integration und Kommunikation. Mein fachlicher Fokus liegt auf Etiketten-Druck, Software Architektur, ABAP OO und Archivierung.

Sie haben Fragen? Kontaktieren Sie mich!



Das könnte Sie auch interessieren


2 Kommentare zu "Adobe Formular mit vorgegebenem Dateinamen speichern"

Claudia Schütz - 16. März 2017 | 09:40

Vielen Dank für die Anleitung. Könnte man auch ein Meldung ausgeben falls das Speichern nicht erfolgreich war – z.Bsp. weil das Formular bereits geöffnet ist?

Antworten
Joschka Rick - 31. März 2017 | 10:02

Hallo Frau Schütz. Möglich ist dies sicherlich, allerdings auch eine Frage des Aufwandes.

Was ich nicht weiß ist, ob die Funktion saveAs einen Rückgabewert erzeugt, der ein erfolgreiches Abspeichern bestätigt.

Falls dem nicht so ist, könnten Sie in dem JavaScript File einen JavaScript Befehl ausführen, der prüft, ob die angegebene Datei gerade Schreibgeschützt ist oder nicht.

Hilft Ihnen das weiter?

Antworten

Schreiben Sie einen Kommentar

Bitte füllen Sie alle mit * gekennzeichneten Felder aus. Ihre E-Mail Adresse wird nicht veröffentlicht.





Angebot anfordern
Preisliste herunterladen
Expert Session
Support