Der Export klappt hier noch relativ einfach über eine E-Mail aber der Import bleibt einen ohne LiveCycle Reader Extensions ersteinmal verwehrt.
Dabei kann man schon seit Version 9.2 externe Dateien mit dem Reader importieren.
Möglich macht das die JavaScript-Methode readFileIntoStream().
Dieses Beispiel zeigt, wie man damit Daten einer XML-Datei in ein XFA-Formular importieren kann – in Adobe Reader natürlich!
When it comes to import and export of data you'll be faced to many barriers, especially in Adobe Reader.
Ok, you can export your data quite easily by sending an email, but the import is a forbidden fruit unless you have LiveCycle Reader Extensions at hand.
Well, since Reader version 9.2 you're already able to import files with Reader.
This is possible through the JavaScript method readFileIntoStream().
This example shows, how you can import data into XFA forms from external XML files – In Adobe Reader of course!
Skript zum Importieren einer XML-Datei
//
Script to import a XML file
var vStream = util.readFileIntoStream(); if (vStream) { var vImport, vImportData, vImportXML; vImport = util.stringFromStream(vStream) .replace(/(\<\?.*\?\>\s*)|(\<!-{2}(.|\n|\r)*-{2}\>)|(\r\n|\r|\n)/g, ""); vImportData = eval(vImport); vImportXML = vImportData.toXMLString(); xfa.datasets.data.loadXML(vImportXML, false, true); }
//
Sample files
https://files.acrobat.com/a/preview/4bbd94e6-c3e9-413a-badc-5154731720a7
Hallo,
AntwortenLöschenschönes Beispiel, Danke dafür :-)
Ich suche noch nach ner Möglichkeit das beim öffnen des PDF's
die xml Daten automatisch importiert werden (ohne Button und Livecycle Server). Dem Anwender stehen Reader und Acrobat zur Verfügung.
ne Idee?
Viele Grüße
Stephan
Hallo,
AntwortenLöschenhierfür würde evtl. sich die FormCalc-Methode Get() anbieten.
Diese läd den Inhalt einer URL herunter, z.B. um ein Textfeld zu befüllen.
Formular1.#subform[0].Textfeld1::docReady - (FormCalc, client)
$ = Get("http://www.w3schools.com/xml/cd_catalog.xml")
Hallo,
AntwortenLöschendie Datendatei liegt lokal oder auf einem Netzlaufwerk.
geht da auch was?
Also der lokale Zugriff per file Protokoll funktioniert offenbar nicht.
AntwortenLöschenDie XFA-Spezifikation sagt zwar, dass dies mit Get() geht, aber gibt auch gleich mit an, dass es Sache des Hosts ist, ob er das unterstützt oder nicht.
Versuche mit z.B: Get("file:///D:/cd_catalog.xml") wurden mir jedenfalls mit dem Fehler 'Operation "file:/" wird nicht unterstützt.' quittiert.
Bliebe evtl. noch Get("ftp://..."). Hab ich selbst noch nicht probiert.
Ein mehrzeiliger Kommentar im XML verhindert den Import. Daher wäre diese Zeile besser:
AntwortenLöschenvImport = util.stringFromStream(vStream).replace(/^\<\?.*\?\>\s*/, "").replace(/(\r\n|\n|\r)/gm, "").replace(/\/, "");
Guter Tipp,
AntwortenLöschenhabe das Beispiel dahingehend etwas verändert.