ich bin auf der Suche nach einem Datencontainer, den ich im xdp File anlegen und dann später im Reader (wenn das Formular fertig befüllt wurde) wieder entfernen kann. Der Anwender soll aus vielen Optionen wählen können, die mit Bildern illustriert sind. Letztlich werden aber nur wenige Bilder am Ende benötigt. Ziel ist es, die Speichergröße des ausgefüllten PDFs massiv zu reduzieren. Die Bilder selbst sind schon minimal groß.
Mein erster Ansatz war, die Daten im XDP statisch als dataGroup unter datasets abzulegen. Dann wird das PDF mit erweiterten Readerfunktionen gespeichert. Beim erneuten Speichern des ausgefüllten PDFs im Reader wird die dataGroup dann entfernt:
Code: Alles auswählen
xfa.datasets.nodes.remove(xfa.datasets.nodes.namedItem("myDataGroup"));
Mein zweiter Ansatz war, die Daten dynamisch im Acrobat hinzuzufügen, bevor das PDF die erweiterten Readerfunktionen erhält. Dazu habe ich folgenden Code von radzmar benutzt:
Code: Alles auswählen
var vStream = util.readFileIntoStream();
if (vStream) {
var vImport = util.stringFromStream(vStream);
// erzeuge dataValue mit eingelesenen Daten
var oMyDataValue = xfa.datasets.createNode("dataValue", "myDataValue");
oMyDataValue.value = vImport;
// füge dataValue der dataGroup hinzu
var oMyDataGroup = xfa.datasets.createNode("dataGroup", "myDataGroup");
oMyDataGroup.nodes.append(oMyDataValue);
// füge dataGroup datasets hinzu
xfa.datasets.nodes.append(oMyDataGroup);
}
Mein dritter Ansatz war, die Daten dynamisch (also wie im Ansatz 2) im Reader hinzuzufügen (nachdem das PDF die erweiterten Readerfunktionen bekommen hat).
Nun zeigt sich endlich das gewünschte Verhalten: Nachdem finalen speichern benötigt das PDF mehrere MB weniger.
Wenn also die dataGroup im Reader hinzugefügt wird, kann sie auch im Reader vollständig gelöscht werden.
Wenn sie im XDP oder Acrobat hinzugefügt wird, kann sie zwar gelöscht werden, ist jedoch noch irgendwo vorhanden.
1) Kann mir jemand erklären, wo die Daten im Ansatz 1/2 verbleiben?
2) Gibt es eine Möglichkeit, die Daten schon im XDP abzulegen und dennoch löschen zu können?
Vielen Dank im Vorraus!