Neuigkeiten, Updates

   
Nach über zwei Jahren Entwicklungszeit, unendlich vielen Tests, und dank der Geduld und Mithilfe vieler treuer DynaPDF Anwender ist DynaPDF 3.0 nun endlich verfügbar.

Gut ein Jahr später als geplant, aber dafür besser als je zuvor, geht DynaPDF in die dritte Runde. Das neue Hauptfeature ist natürlich die Rendering Engine. Neben Funktionen zum Rendern von PDF Seiten und ganzen PDF Dateien, gibt es auch Viewer Beispiele die PDF Seiten butterweich rendern.

Die Hauptarbeit wird vom PDFCanvas Control erledigt. Dieses Control wird mit Quellcodes für C# und Delphi ausgeliefert und kann derzeit mit C#, Delphi, und Visual Basic .Net verwendet werden (eine Visual Basic 6 Version folgt in ein paar Wochen).

Das PDFCanvas Control kapselt den Seitencache von DynaPDF und kann wie jede andere Komponente einfach auf einem Formular platziert werden. Das Control kümmert sich um die komplizierten Dinge, wie Scrollen, Neuzeichnen, typische Tastaturcodes wie Up, Down, Home, End usw., MouseWheel Ereignisse, sowie um das Fehlerhandling. Vor allem letzteres muss bei einer Multi-Threaded Anwendung sorgfältig  implementiert werden, da es sonst unweigerlich zu Kollisionen kommen würde.

Für C/C++ Entwickler gibt es mangels verfügbarer Formular Designer keine Komponente die einfach auf einem Formular platziert werden könnte. Das ist bei diesen Programmiersprachen allerdings auch nicht notwendig, da hier in der Regel direkt mit dem Messageloop gearbeitet wird.

Das zweite Hauptfeature in DynaPDF 3.0 ist der neue PDF Import. Der neue Algorithmus repariert beschädigte Dateien, kann PDF Dateien beliebiger Größe importieren, und es gibt neue Funktionen und Flags zur drastischen Reduzierung des Speicherverbrauchs.

Vor allem die Reduzierung des Speicherverbrauchs war einer der wichtigsten Anforderungen. Und es gibt noch eine gute Nachricht: Wenn Sie den Speicherverbrauch Ihrer mit DynaPDF 2.5 kompilierten Anwendung drastisch reduzieren möchten, dann brauchen Sie nur das neue Flag if2UseProxy mit SetImportFlags2() zu setzen, fertig!

Dieses kleine Flag hat enorme Auswirkungen auf den Speicherverbrauch und mit einer einzigen Zeile Code ist die Änderung mehr als überschaubar. Einzige Bedingung ist, dass die Eingabedatei bis zur vollständigen Erzeugung der neuen Datei nicht gelöscht werden darf, da DynaPDF benötigte Teile erst lädt wenn die neue Datei geschlossen wird.

Aber auch ohne jede Änderung geht bereits wesentlich mehr als vorher. Alle Klassen und Strukturen wurden auf minimalen Speicherbedarf optimiert und DynaPDF hält grundsätzlich keine unkomprimierten Daten mehr im Speicher.

Für die ganz harten Fälle gibt es nun auch noch die Möglichkeit mit FlushPages() nicht mehr benötigte Seiten in die Ausgabedatei zu schreiben. So können problemlos PDF Dateien bis zu 4 GB Größe erzeugt werden, selbst wenn auf dem System nicht mehr als 128 oder 256 MB Speicher installiert sind.

Der neue Import Algorithmus ist übrigens vollständig PDF 1.7, Extension Level 5 kompatibel. Es werden aber auch künftige Features unterstützt, die es jetzt noch gar nicht gibt. Solange die PDF Syntax nicht geändert wird, können Sie mit DynaPDF 3.0 auch künftige PDF Versionen importieren, ohne Datenverlust. Daten die DynaPDF nicht versteht werden einfach so importiert wie sie sind, das gilt natürlich auch für private Daten, die von Drittherstellern erzeugt wurden.

Neben den Hauptfeatures, die den Großteil der Entwicklungszeit für sich beansprucht haben, gibt es natürlich auch kleinere Neuigkeiten, wie bspw. Unterstützung von Bildern mit Alpha Kanal, Softmasken, Transparenzgruppen, sowie unzählige Verbesserungen im Detail.

Bspw. unterstützt DynaPDF jetzt auch Full Names für die Schriftsuche. Das erscheint nebensächlich, macht aber bei der Verarbeitung von EMF Druckspools nicht selten den entscheidenden Unterschied zwischen einer korrekten und fehlerhaften Schriftauswahl aus. Windows verwendet eben Full Names, Postscript Namen werden hingegen von Windows nicht unterstützt.

Natürlich ist die neue Version, mit Ausnahme von zwei eher selten benutzten Funktionen, zu 100% abwärtskompatibel. Es wurden keine Funktionen entfernt oder inkompatibel geändert. Auch die Funktionen, die bereits seit geraumer Zeit als Obsolete markiert waren, bleiben in der Bibliothek. Der Umstieg soll für Sie so einfach wie möglich sein.

Genauere Informationen über erweiterte Strukturen, Enums, neue Funktionen usw. finden Sie im Downloadbereich in der Datei Implementation_Notes.pdf.

Linux, Unix und Mac OS X Versionen können ab sofort auch ohne Enterprise Lizenz verwendet werden. Da diese Versionen jedoch nicht mit Quellcodes ausgeliefert werden, können Sie nur die vorkompilierten Binaries verwenden. Bei der Shared Library Version ist das in der Regel kein Problem, bei der Static Library kann es jedoch zu Linkerfehlern kommen, bspw. wenn Sie eine andere GCC Version verwenden, als die mit der DynaPDF kompiliert wurde.

Static Libraries die mit unterschiedlichen GCC Versionen kompiliert werden, sind leider nicht immer binärkompatibel und verursachen dann Linkerfehler. In einem solchen Fall kann entweder die gleiche GCC Version installiert werden, oder Sie wechseln auf die Shared Library. Wer lieber auf Nummer sicher gehen möchte, sollte nach wie vor DynaPDF Enterprise lizenzieren. Dann entfallen sämtliche Inkompatibilitäten, da Sie DynaPDF auf Ihrem System selbst kompilieren können.