Seite 1 von 1

Formular mit externen Daten füllen

Verfasst: 24.08.2013, 10:25
von Ulrike
Hallo Euch allen,

ich bin neu hier und freue mich, dass es ein solches Portal gibt.

Was mich aktuell auf der Stelle treten lässt:

Ich möchte Word-Formulare auf PDF umstellen. Dabei muss ich Daten aus einer Inidatei in Felder der PDF-Datei einlesen.

Meine Frage an Euch:
Was muss ich tun, um z. B. aus einer Datei BENUTZERDATEN.INI aus dem Block ADRESSE die Angabe WOHNORT in das Textfeld WOHNORT der PDF-Datei zu holen?

Mit Util.readFileIntoStream scheint man das in Java wohl anzugehen, aber mir fehlen im Moment die nötigen Kenntnisse von Java, um mein Problem selber zu lösen.

Ich kann auch derzeit gar nicht einschätzen, ob ich mich für FormCalc oder Java entscheiden soll - und warum...

Danke für's "Zuhören". Ein schönes Wochenende.

Ulrike

Formular mit externen Daten füllen

Verfasst: 24.08.2013, 13:22
von radzmar
Also das Einlesen einer externen Datei wäre nicht das Problem (ab Reader/Acrobat 9.2), aber ohne den Inhalt der ini-Datei zu kennen, kann dir keiner beantworten, wie man die Daten darin auswerten kann.
Wieso überhaupt ini?


Und wichtig ist auch, dass Acrobat kein Java kann, sondern JavaScript. DAS IST NICHT DASSELBE!

Formular mit externen Daten füllen

Verfasst: 25.08.2013, 08:27
von Ulrike
Danke für die rasche Antwort
richtig, ich meine Javascript.
Folgend ein Auszug aus der Ini-Datei. Sie liegt im Userprofil und wird von vielen anderen Anwendungen (Word, Excel, Access per VBA) ausgewertet, daher Name und Aufbau.
BENUTZERDATEN.INI
[Namenszeilen]
Name1=Unternehmen FlickFlack - Abteilung Werbung
Name2= Unternehmen FlickFlack - Abteilung Personal


[Adresse]
Strasse=Große Allee 1
Postfach=14 60
PLZStr=34454
PLZPF=34444
Wohnort=Bad Wohlfühlhausen
Tel=05691/893-0
FAX=05691/893-170
EMail=mail@flickflack.de
Bearbeiter=Max Meier
 
Gruß Ulrike

Formular mit externen Daten füllen

Verfasst: 27.08.2013, 16:05
von radzmar
Ok, ich habe dir mal ein Beispiel erstellt, dass eine ini-Datei nach dem zuvorgenannten Schema impotieren kann, nach passenden Einträgen absucht und dann die entsprechenden Felder vorbefüllt.
Das Ganze ist aber nur als Skizze zu betrachten und kann noch diverse Optimierungen vertragen, aber dafür fehlt mir die Zeit.

Formular mit externen Daten füllen

Verfasst: 27.08.2013, 16:25
von Ulrike
Lieber Radzmar,

danke für Deine Antwort.

Ich habe in den letzten Tagen ganz viel ausprobiert in Sachen Javascript im  LifeCycleDesigner in Bezug auf "Einlesen externer Daten auf dem Client". Und kam zu KEINEM lauffähigem Ergebnis. - Immer endete ich in Fehlermeldungen bezüglich Sicherheitseinstellungen. Was ist das denn nun wieder?

Großes Danke für Deine heutige Antwort. Ich werde gleich ausprobieren und dann Rückmeldung geben.

Ulrike

Formular mit externen Daten füllen

Verfasst: 28.08.2013, 07:36
von Ulrike
Das mit dem Separieren der Daten hat mir sehr geholfen, ich habe das viel umständlicher gemacht. Danke.
Mein Problem ist noch immer, dass ich den Öffnen-Dialogs nicht nehmen kann, ich muss für die Textdatei deren Pfad bei util.readFileIntoStream({bEncodeBase64:true}) angeben, damit die Ini-Daten sich automatisch einziehen. Die Datei liegt bei jedem Anwender lokal auf C: in seinem Userprofil\Unterordner Bearbeiterdaten. Ich habe in anderen Foren auch nur dieses Problem, aber keinen Lösungsansatz gefunden. Zu util.readFileIntoStream finde ich nur die Aussage, dass, wenn man den Pfad wegläßt, der Öffnen-Dialog kommt. Finde aber kein Beispiel für eine Pfadangabe. Wahrscheinlich ist das auch mit der Systemvariable Userprofile ein Problem. Weißt Du evtl. mehr?

Ulrike

Formular mit externen Daten füllen

Verfasst: 29.08.2013, 14:04
von radzmar
Hallo,

hier mal ein Auszug aus dem JavaScript-Handbuch.
readFileIntoStream

Loads an external file into a JavaScript stream, optionally base64 encodes it, and returns the content as a
base64 encoded stream.

Parameters:

cDIPath (optional) A device-independent path to an arbitrary file on the user's hard drive.
This path may be absolute or relative to the current document.
If not specified, the user is presented with the File Open dialog to locate the file.
If the cDIPath parameter is specified, this method can only be executed in privileged
context, during a batch or console event (or when the document is certified with a
certificate trusted to execute "embedded high privileged JavaScript").

bEncodeBase64 (optional) If true, base64-encode the file content.

Returns:

The File content as a ReadStream object that is optionally base 64-encoded.

Example:

Assume there is a text field myField in this document. This example reads the contents of a file
c:/data/myData.txt in a ReadStream object, converts it to a string, and displays it in the multiline text field.
var rStream = util.readFileIntoStream("/c/data/myData.txt");
var cFile = util.stringFromStream(rStream);
this.getField("myTextField").value = cFile;
Den Pfad kann man also nur mitgeben, wenn das Formular entweder zertifiziert eird oder das Skript aus einem vertrauenswürdigen Kontext z.B. einem Folder Level Script heraus aufgerufen wird.

Formular mit externen Daten füllen

Verfasst: 29.08.2013, 18:22
von Ulrike
Ich würde es ja mit einem Folder Level Script zu versuchen.

Aber:
Javascript erwartet seit Windows7 den User-Ordner an neuem Ort.
Daher eine Fehlermeldung bei app.getPath("user","javascript").

Um nun diesen ...\Privileged\... - Pfad ansprechen zu können, müsste ich bei allen Usern dafür Sorge tragen, dass dieses Ordner existiert und mit den erforderlichen Dateine (Ini und *js) versorgt ist. Kaum durchzusetzen.

Bin diesbezüglich u. a. auch auf diese Seite gestoßen:

http://acrobatninja.blogspot.de/2011/09 ... anges.html





Formular mit externen Daten füllen

Verfasst: 29.08.2013, 19:53
von radzmar
Also der Pfad für folder Level scripts hängt nicht vom Betriebssystem ab, sondern von der Version des Adobe Reader.
Ab 10.1 muss der Previleged-Ordner vorhanden sein oder man nimmt den JavaScript-Ordner der App selbst.

Also app.getPath("app", "javascript");

Formular mit externen Daten füllen

Verfasst: 29.08.2013, 20:11
von Ulrike
Stimmt, hast Recht.
Ich hoffe, ich komme jetzt alleine klar.
Danke für Deinen Input.