Seite 1 von 2

Listenfeld

Verfasst: 25.08.2009, 16:34
von ra_be
Hallo,

ich versuche in einem Listenfeld Werte aus einer Exceldatei (am besten 2 Spalten, d.h. Zelle A1 und Zelle B1 zusammen in Zeile 1 des Listenfeldes) anzuzeigen. Eine TXT Datei würde es zur Not auch machen.

1. Geht das überhaupt?

Und 2.
Die Exceldatei liegt dabei relativ zum PDF in einem Verzeichnis (also immer "Unterordner", aber es kann aber auch "c:testUnterordner" oder "e:ABCUnterordner" sein.

Vielen Dank.
Grüße
ra_be

Listenfeld

Verfasst: 01.09.2009, 21:45
von walde
Hallo ra_be,

 

Man kann in ein Formular eine Textdatei als Anhang einfügen und diese dann auslesen. Hierzu muss die Datei in Excel als eine Tab Stop getrennte Datei gespeichert werden (kann auch eine *.xls Datei sein). Siehe Beispieldatei.

Mit dem Objekt "importDataObject" wird im Acrobat ein Dialogfenster geöffnet welches dem Benutzer erlaubt die einzufügende Datei als Anhang auszuwählen.

Will man die Anhangdatei unter Berücksichtigung des relativen Pfades automatisch in das PDF Formular einfügen um diese dann auszulesen, so kommt man nicht umher einen Folder Java Script zu schreiben.

 

gruß,

 

Walde

Listenfeld

Verfasst: 27.09.2009, 21:54
von Julischka
Hallo Walde,

vielen Dank für die Musterdatei. Sie lässt mich hoffen, das mein Vorhaben evtl. auch umsetzbar ist.

Hierfür benötige ich jedoch eine etwas andere Variante.

Ich habe in meinem Formular ein Feld für die Kundennummer.
Danach sind dort noch weitere Textfelder für die Anschriftsdaten der Firmen. (Siehe Anhang)

Nun will ich nur die Kundennummer in das Formular eintragen und aus Excel soll sich das Formular den Rest automatisch ziehen.
(bis auf das Feld z.HD.: soll leer bleiben)

Ist dies möglich?

Wenn ja, zweite Frage:
Kann ein Reader Nutzer dieses Formulars evtl. auch immer wieder die Excelliste erweitern indem er neue Kundennummern und Adressen in die Excelliste einpflegt?

Über eine Antwort wäre ich überglücklich, da es so ziemlich das letzte Element meines Formulars ist, was mir noch fehlt. (...und ich noch gar keine Ahnung habe, wie ich dies umsetzen kann)

Vielen herzlichen Dank
Julischka

Listenfeld

Verfasst: 28.09.2009, 16:09
von walde
Hallo Julischka,

 

Es ist möglich, Daten aus einer Excel Tabelle auszulesen und diese auf Ihre Werte zu prüfen.

Die Funktion würde dann folgendermaßen aussehen:

Es wird eine Kundennummer in ein Feld eingegeben. Beim verlassen dieses Feldes wird jede Zeile aus der Excel Datei ausgelesen und auf die passende Kundennummer überprüft. Findet sich eine Übereinstimmung, so wird die ganze Zeile in ihre Spalten aufgeteilt und festgelegte Spalten werden den jeweiligen Feldern im Formular zugeordnet. z.B. Spalte 3 enthält PLZ so wird im Formular dem Feld Postleitzahl der wert der 3. Spalte zugeordnet.

Man kann der Excel Liste auch neue Daten zufügen.

Folgende Voraussetzungen sollten gegeben sein:

1. Die Excel Liste sollte als eine Tab getrennte Textdatei gespeichert werden (kann auch eine *.xls Datei sein).

2. Es sollte in der Excel Datei immer die Gleiche Spalte für immer den gleichen Datentyp verwendet werden z.B. PLZ immer auf Spalte 3, Nachname immer in Spalte 1 usw.

3. Die Excel Datei kann im Formular nur dann ausgelesen und beschrieben werden, wenn diese in das Formular als eine Anhangdatei eingefügt wird.

 

Gruß,

 

Walde

Listenfeld

Verfasst: 28.09.2009, 20:50
von walde
Hallo Zusammen,

 

Anbei eine Beispieldatei. Diese erlaubt es nach jedem Wert in der angehängten *.XLS Datei zu suchen und darzustellen. Werte in die *.XLS Datei kann man damit noch nicht schreiben, werde die Beispieldatei aber bei Bedarf dementsprechend abändern.

 

Die *.XLS Datei enthält folgendes.

Kundennummer Vorname  Nachname
123                   Name1    Nachname1
456                   Name2    Nachname2
789                   Name3    Nachname3

Jeder Begriff kann als Suchbegriff eingegeben werden.

 

Gruß,

 

Walde


Listenfeld

Verfasst: 28.09.2009, 21:41
von Julischka
Hallo Walde,

das ist ja super klasse!!! Ich bin begeistert und bedanke mich ganz herzlich für Ihre Mühe!.

Habe es sogar schon hinbekommen Ihre Datei so weiter zu führen, daß ich die vollständigen Adressdaten habe.

Jetzt werde ich es nur noch versuchen in mein Formular umzusetzen und mal eine ganz neue Exceldatei anzulegen.

Ist es eigentlich auch noch möglich eine zweite Excel Datei anzuhängen? Da ich die gleiche Prozedur noch für die Produktartikel benötige?

Wenn ja, wie muss ich das in meinem Formular angeben, damit in der zweiten Liste gesucht wird. Reicht es aus, wenn ich hier in dieser ersten Scriptzeile "for(var i in xlsDataSplit){" Einfach nur den Namen der Datei ändere, eine zweite Variable anlege und dort das gleiche Script mit anderem Dateinamen einfüge? ..und natürlich auch noch den Namen "testfeld 1 für das neue Suchfeld ändere, sowie das Script das hinter suchen liegt?



Nochmal vielen, vielen Dank!!

Grüße Julischka

Listenfeld

Verfasst: 21.10.2009, 12:11
von Z0kk4
Hallo Gemeinde,

Wie komme ich an das Skript um es an meine Bedürfnisse anzupassen? Desweiteren würde ich gern auf eine externe Datei zugreifen, die auf einem netzlaufwerk liegt. Ist das auch möglich? ebenso wäre es für unsere Zwecke schöner, das ganze nciht durch Tab-Stopp zu trennen sondern durch Semikolon. Geht das auch?

Ich bin auf dem Gebiet Adobe Acrobat pro extenden und LCD absoluter Frischling (2 Wochen) und für jeden Tip dankbar.

Mit freundlichen Grüßen

Christian

Listenfeld

Verfasst: 21.10.2009, 13:07
von walde
Hallo Z0KK4,

 

Als erstes sollten sie im Live Cycle Designer den Script Editor einblenden. Dies geht über "Fenster - Script Editor". Nun können Sie die einzelnen Objekte in Ihrer Formular Hierarchie anklicken und sehen dann im Script Editor die entsprechenden Scripte.

Desweiteren spielt es keine Rolle, wie die XLS Datei getrennt ist. Es muss im Script lediglich das Trennzeichen angepasst werden.

Zugreifen auf Externe Daten ist nur unter bestimmten Voraussetzungen möglich.

1. Es muss mit Adobe Acrobat geschehen.

2. Der User muss die berechtigung für das Netzlaufwerk haben.

3. Wenn der Zugriff auf die Datei im Hintergrund erfolgen soll (ohne Dialogfenster, welches zur Auswahl der Datei auffordert), so muss ein Folder Level JavaScript geschrieben werden. Dieser muss dann in einem bestimmten Verzeichniss auf der Festplatte des Users gespeichert werden. Hintergrund für diese Aktion ist es zu verhindern, dass ohne Wissen des Users zugriff auf Daten  und Dateien erteilt wird. Dies würde nämlich gegen die Sicherheitsrichtlinien verstossen.

 

Gruß,

 

Walde

Listenfeld

Verfasst: 21.10.2009, 13:56
von Z0kk4
Wow, superschnelle Antwort, Vielen lieben Dank.

Also den Tab-Stopp ändere ich wahrscheinlich in dem Teil xlsDataSplit.split(";") oder? (\t durch ; ersetzt)

Meine Fragen wären jetzt noch:

1. Gibt es irgendwie eine Seite, auf der man eine Übersicht der Befehle hat?

2. Wie ändere ich, dass die xls bzw csv nicht im Anhang liegt, sondern auf dem laufwerk?

ich hatte es jetzt erstmal auf einem lokalen LW versucht, um dem Berechtigungsdingen aus dem Weg zu gehen...

var xlsFile = event.target.getDataObjectContents("D:\XXX\xxxx\Kundendaten.xls"); // xls Datei suchen

so hab ich es jetzt, aber es funktioniert nicht :-(

3. Der zugriff soll im Hintergrund ablaufen... Wie funktioniert das?

Ich hoffe, das sind nciht zuviele Fragen mit einmal

Grüße

Christian


Listenfeld

Verfasst: 22.10.2009, 00:56
von walde
Hallo Z0KK4,

 

Zu 1: Es gibt die "JavaScript for Acrobat API Reference" und die "XML Forms Architecture (XFA) Specification" und die Adobe LiveCycle Designer Skript Referenz nachfolgend zu finden:
http://livedocs.adobe.com/acrobat_sdk/9/Acrobat9_HTMLHelp/wwhelp/wwhimpl/js/html/wwhelp.htm?&accessible=true
http://partners.adobe.com/public/developer/xml/index_arch.html
Unter LCD "Hilfe - Skript Referenz"

Zu 2: Die Datei kann auf dem Laufwerk liegen bleiben. Diese wird dann über das Folder Level JavaScript in das Formular importiert, ausgelesen und wieder gelöscht.
Zu 3: Siehe Beispieldatei. Diese enthält das Formular als *.PDF, eine Beispieldatei zum Importieren (*.jpg) und eine *.JS Datei. Öffnen Sie in Acrobat die Debug Console mit "Strg + J" und geben den folgenden Befehl ein "app.getPath("user", "javascript");" nun markieren sie diesen und drücken nun "Strg + Enter". Jetzt wird Ihnen das Verzeichniss auf Ihrer Festlatte angezeigt in welches die *.JS Datei reinkommen soll. Nach dem Kopieren der *.JS Datei sollte Acrobat beendet und wieder geöffnet werden. Beim Öffnen lädt Acrobat automatisch alle Scripte aus dem JavaScript Verzeichniss Ihrer Festplatte. Die position der *.jpg Datei ist im Formular (*.PDF) als relativ zum Formular angegeben. Dies bedeutet, dass beide im gleichen Verzeichniss gespeichert werden sollten.

Wenn alles erledigt ist demonstriert das Formular wie man mit der "Hinzufügen" Schaltfläche die *.jpg Datei in das Formular als Anlage importiert und mit der "Entfernen" Schaltfläche wieder aus dem Formular entfernt. Dazwischen sollte die Datei natürlich ausgelesen werden.

P.S:
Die *.JS Datei enthält das folgende JavaScript:

Code: Alles auswählen

myImportDataObject = app.trustedFunction(function(doc,path)
{
app.beginPriv();
doc.importDataObject("test", path);
app.endPriv();
});

Das Formular Folgendes:

Code: Alles auswählen

Formular1.#subform[0].Schaltfläche1::click - (JavaScript, client)

var nDoc = event.target;

var nPath = "../Unbenannt-1.jpg";

myImportDataObject(nDoc, nPath);

Formular1.#subform[0].Schaltfläche2::click - (JavaScript, client)

event.target.removeDataObject("test");
Gruß,

Walde