vorweg, ich habe meine Verlängerung von zwei Wochen erhalten und kann euch somit noch weiter über meine Tätigkeiten berichten.
Diese Woche hatte es in sich gehabt. Ich habe sehr viel herumexperimentiert und versucht, den Fehler zu finden, warum das PDF-Dokument nicht ausgedruckt wird.
Wie im letzten Beitrag schon geschrieben, habe ich nun versucht die verschiedenen group-Tags zu löschen. Bevor ich dies machen konnte, musste ich die Pfade aus den
[group 1]
[group 2]
[path 1][/path 1]
...
[/group 2]
[/group 1]
Dazu habe ich mich mit den Methoden AppendChild(), insertAfter() und insertBefore() beschäftigt, wie diese funktionieren. Nach dem ich das Prinzip verstanden habe, habe ich versucht, dieses in dem Source-Code zu implementieren. Was natürlich nicht auf Anhieb klappte. Denn ich erhielt immer die Fehlermeldung, dass das nicht funktioniert, denn die Iterationsliste hat sich geändert. Ist auch logisch. Auf jeden Fall, habe ich es so gelöst, dass ich einfach zweimal die Methode insertAfter aufgerufen habe, um die Pfade aus dem group-Tag herauszubekommen. Komischerweise, hatte er es verstanden und ich erhielt keine Fehlermeldung mehr.
Nun musste ich nur noch die leeren group-Tags löschen. Dank google.de, habe ich auch ein paar Hinweise bekommen, wie man so etwas machen kann. Nach etlichen Stunden, habe ich das auch hinbekommen und konnte somit das Ergebnis testen. Und siehe da, nichts hat sich geändert! Frustrierend.
Immer, wenn ich das Dokument an den Drucker senden wollte, dann wollte dieses „Flattening“. Was ich als erstes übersetzen musste. Denn ich kannte nur das Wort flat. Im Endeffekt wollte er das Dokument ebenen. Was ich nun gar nicht verstand. Denn dies würde bedeuten, dass er versucht, die ganzen einzelnen Layer zu einem großen Layer macht. Ich fand das sehr kurios. Also habe ich mir gedacht, dass ich einfach ein paar Informationen herausnehme und mit diesen arbeiten werde. Aber ich erhielt den gleichen Fehler.
Nun blieb mir nichts anderes übrig, als die Transformationsparameter herauszunehmen und jede Koordinate mit dem offset-Wert zu addieren. Als ich dies implementiert hatte, habe ich festgestellt, dass das Programm sehr lange benötigt, um das PDF zu generieren. Was aber selbstverständlich ist. Denn es sind in der Zwischenzeit mehrere for-Schleifen, Bedingungen und Berechnungen hinzugekommen. Was den Source Code sehr aufblähte. Mit dem Resultat, dass sich nichts geändert hat.
Mit dem Arbeitskollegen habe ich darüber beratschlagt, wie wir nun weiter vorgehen sollen. Er hatte mir nur gesagt, dass wir noch einen Versuch starten könnten; in dem wir die Transparenz herausnehmen. Aber er hatte mir versichert, dass er das schon versucht hatte und dies keinen Erfolgt brachte. In diesem Moment war ich zu allem bereit, denn ich wollte die Aufgabe lösen. Bevor ich mich dieser Idee widmete, habe ich mich im Internet belesen, was das „Flattening“ genau macht. Grunde genommen, nimmt der Acrobat Reader jeden einzelnen Layer und schaut, welcher Objekte sich überschneiden. Ist dies der Fall, dann zerstückelt er diese und fügt es dann wieder zusammen. Hauptsächlich macht er dieses bei Objekten die Transparenz sind. Im Internet habe ich ein paar Informationen gefunden, wie man dieses mit Javascript lösen kann. Ich habe mir dazu ein Javascriptdatei erstellt und diese im Acrobat Reader-Pfad gespeichert. Sie beinhaltete folgende Funktion, this.flattenPages();. Damit wollte ich erreichen, dass ich das Dokument schon vorher Flatten wollte. Aber dies funktionierte auch nicht, da die Funktion nicht im Acrobat Reader unterstützt wird. Dennoch, gingen mir die Ideen nicht aus. Ich hatte mir gedacht, warum sollte man das Dokument nicht einfach als Bild ausdrucken? Und dies hatte auch wunderbar geklappt und habe das meinem Arbeitskollegen gesagt. Er meinte aber, dass wir das nicht nehmen können, denn dies sei nicht Nutzfreundlich. Auch meine Javascriptidee hatte ihm nicht gefallen, die vorweg schon die checkbox PrintAsImage selektiert hatte.
Nun blieb mir nichts anderes übrig, als die Transparenz aus dem Originaldokument herauszulöschen und dieses dann auszuprobieren. Das erzeugte PDF-Dokument stimmte mit dem Original überein und ich musste erstmal nichts an dem Source Code ändern. Als ich das PDF-Dokument anschliessen ausdrucken wollte, hatte es wunderbar geklappt! Denn er braucht das Dokument nicht mehr zu ebnen, was mich sehr gewundert hat. Also lag es an der Transparenz! Stolz, habe ich ihm das gesagt und er meinte nur, dass er das auch ausprobiert hatte und das es bei ihm nicht funktioniert hatte.
Nun habe ich meine ganzen Implementierungen herausgenommen, umzuschauen ob es an der Transformation oder den ganzen group-Tags lag. Aber dem war nicht so, es lag einfach nur an der Transparenz! Herrlich, die ganze Woche, für umsonst programmiert. So schlimm ist es auch nicht, ich habe viel über XML kennen gelernt, wie man zum Beispiel Node ändert, usw.
Nun habe ich den originalen Source Code genommen und eine rekursive Methode implementiert, die die Transparenz herausnimmt und wenn es zu einem Node noch weitere ChildNodes gibt, dann ruft sich die Methode selber wieder auf. Im Endeffekt, hatte mich die Implementierung nur 10 Minuten gedauert! Wenn man sich aber überlegt, wie lange ich gebraucht habe um dahinzugelangen …. Ohne Worte.
Auf jeden Fall, werden wir es am Montag testen, ob es auf seinem Rechner auch läuft. Wenn alles passt, dann wird es dem Kunden gegeben.
Das war die letzte Woche. Nun bin mal gespannt was ich für eine andere Aufgabe erhalten werde.
Ich wünsche euch ein schönes Wochenende,
der glückliche und zufriedene Hagen
Keine Kommentare:
Kommentar veröffentlichen