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

SAP Adobe Forms ist der zukünftige Standard für Druckformulare, denn es ermöglicht effizientes und gewinnbringendes Arbeiten.

Unser E-Book zu SAP_Adobe_Forms

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

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

SAP Interactive Forms by Adobe bietet die Möglichkeit, xHTML-Texte auf Formularen darzustellen. Dabei werden die Texteigenschaften wie Schriftgröße und Schriftart oder anderes über die Attribute angegeben. Dies hat den Vorteil, dass so das Aussehen eines Textes dynamisch im Code bestimmt […]

weiterlesen

Sie haben sich die Frage gestellt, wie Sie einen Drucker/Etikettendrucker für SAP Interactive Forms by Adobe(SIFbA) einrichten? Dann sind Sie hier genau richtig.

weiterlesen

Wenige Applikationen wie bspw. der PDF Expert 5 beherrschen den Umgang mit interaktiven Formularen, kosten aber im Schnitt 10€ pro Lizenz - ein Preis, den die wenigsten Unternehmen bezahlen wollen, wenn es z. B. nur um die Darstellung von Hyperlinks […]

weiterlesen

6 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
Sven Kunzendorf - 22. Dezember 2019 | 10:45

Hallo, ich möchte eine PDF mit einem Button versehen, wenn ich diesen drücke, wird die PDF in einen vorher festgelegten Ordner gespeichert, der Datei Name soll aus dem Feld ( Name des Monteurs) erzeugt werden. ist dies möglich?

MfG Sven

Antworten
Joschka Rick - 10. Januar 2020 | 10:34

Hi Sven. Das lässt sich realisieren. In Schritt 2 kannst du anstelle des statischen Pfads selbe reinen Pfad zusammenbauen, wo du den Namen des Monteurs in den Pfad konkatenierst. Damit steuerst du dann auch den Dateinamen.

Wichtige Information dazu: Das Script muss auf jedem PC verfügbar sein, der deine interaktive PDF-Datei nutzen will. Jeder Monteur müsste also die Javascript-Datei bei sich in den korrekten Ordner kopieren. Sowas ist häufig schwer und sehr Fehler-anfällig. Falls es nur sehr wenige Monteure sind, die diese PDF-Datei nutzen, kann es natürlich trotzdem lohnenswert sein.

Viele Grüße
Joschka

Antworten
Anonymous - 3. Juli 2020 | 09:32

Hallo Joschka,

vielen Dank für die Anleitung. Ich habe genau wie die Anleitung gemacht und leider hat es nicht geklappt. Bei mir wenn man auf den Button geklickt hat, dann wurde das Formular nicht gespeichert. Ich habe Adobe Reader DC. Kann es sein, dass es daran liegt?

Vielen Dank für deine Rückmeldung im Voraus.

Viele Grüße

Jennifer Hoang

Antworten
Joschka Rick - 5. Juli 2020 | 20:38

Hallo Jennifer,

das lässt sich aus der Ferne schwer beurteilen. Wichtig ist, dass das Script myJSfile für den Adobe Reader DC auffindbar ist. Der von mir angegebene Pfad stimmt nur für den normalen Adobe Reader 9.0.

Vielleicht findest du unter “C:\Program Files (x86)\Adobe\” noch einen passenden Ordner für den Adobe Reader DC, wo das Script rein kann?

Viele Grüße
Joschka Rick

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