Betriebssysteme

Eine API für alle Betriebssysteme...

Betriebssysteme

Softwarefirmen die ihre Software auf ein anderes Betriebssystem portieren möchten, stehen vor einer enormen Herausforderung. Was funktioniert auf beiden Plattformen? Welche Teile der Software müssen neu entwickelt werden?

Letztendlich ist das Ziel immer so viel bestehenden Code wie möglich weiter zu verwenden. Je größer die gemeinsame Codebasis, desto geringer die Kosten für die Softwarewartung.

DynaPDF läuft auf fast allen Plattformen und die API ist auf allen Plattformen nahezu identisch.

Eine PDF Ausgabe für mehrere Plattformen zu entwickeln ist mit DynaPDF ein Kinderspiel. Ein Problem weniger mit dem sie sich befassen müssen!

Schrifthandling

Standardmäßig lädt DynaPDF Systemschriften automatisch auf den Betriebssystemen Windows, macOS, und iOS. Natürlich erst, wenn Schriften benötigt werden.

Unter Android ist der Zugriff auf Systemschriften nicht ohne Weiteres möglich, da auf Systemordner nur mit speziellen Berechtigungen zugegriffen werden kann. Benötigte Schriften müssen daher mit der Anwendung ausgeliefert und bspw. mit AddFontSearchPath() geladen werden.

Auf Linux Systemen wäre das automatische Laden von Systemschriften durchaus möglich aber nur selten sinnvoll, da es sich meistens um Webanwendungen handelt. Die Lebenszeit einer PDF Instanz ist auf solchen System schlicht und ergreifend zu kurz um einen Schriftcache sinnvoll einsetzen zu können. Für optimale Performance sollten benötigte Schriften in ein eigenes Verzeichnis kopiert und mit AddFontSearchPath() geladen werden.

Mit der gleichen Funktion können übrigens auch Systemschriften geladen werden, falls benötigt.

Windows

DynaPDF wird mit Visual Studio unter Windows entwickelt. Alle Windows Versionen ab XP werden offiziell unterstützt. Vorkompilierte DLLs werden für x86, x64 und arm64 bereitgestellt.

DynaPDF Enterprise enthält die originalen Visual Studio Arbeitsbereiche, die zum Kompilieren aller Windows und Android Binärdateien, sowie der Windows PHP DLLs verwendet werden. Diese Version ist auch erforderlich, wenn sie unter Windows statisch Linken möchten.

Das liegt daran, dass moderne Visual Studio-Versionen keine statischen Importbibliotheken erzeugen können, die keine weiteren Abhängkeiten haben. Dadurch ist Auslieferung und Verwendung zu umständlich.

macOS

DynaPDF wird als Universal Binary für x64 und arm64 ausgeliefert. Das Archiv enthält Static und Shared Libraries.

Die Verwendung unter macOS ist nahezu identisch mit der unter Windows. Systemschriftarten werden automatisch geladen, was ein sehr komfortables Arbeiten ermöglicht.

DynaPDF Enterprise enthält die originalen Make und Configure Dateien, sowie einen XCode Arbeitsbereich, mit dem die Bibliothek für macOS und iOS kompiliert werden kann.

Linux

DynaPDF für Linux ist für x86 und ARM basierte CPUs erhältlich, jeweils in einer 32 Bit und 64 Bit Version. Die Bibliotheken werden als Static und Shared Library ausgeliefert.

Die ARM Versionen wurden mit folgenden Cross-Platform Toolchains compiliert:

  • arm32: arm-linux-gnueabihf-8.2.1
  • arm64: aarch64-linux-gnu-7.3

Android

Android gehörte lange Zeit nicht zu den offiziell unterstützten Betriebssystemen, da die ersten Versionen keine C++ Exceptions unterstützten. Das hat sich mittlerweile geändert, daher gehört auch Android wieder zu den offiziell unterstützten Betriebssystemen.

DynaPDF wird für Android als Shared Library ausgeliefert (arm32 und arm64). Da es für DynaPDF kein Java Interface gibt, ist die Bibliothek eher für native Programmiersprachen oder Frameworks geeignet, wie bspw. Qt, FireMonkey, Xojo oder bspw. FileMaker.

iOS

Seit DynaPDF 5.0 werden auch für iOS statische Importbibliotheken ausgeliefert. Daher ist keine DynaPDF Enterprise Lizenz mehr erforderlich.

Für Intel basierte Macs wird ein Fat Binary ausgeliefert das mit dem Simulator und iOS Geräten funktioniert. Für ARM basierte Macs ist das leider nicht möglich, daher müssen auf solchen Systemen zwei separate Bibliotheken verwendet werden.

Andere

Frühere Versionen von DynaPDF waren auch für AIX, HP-UX und Solaris verfügbar. Der Markt für diese Betriebssysteme ist jedoch in den letzten Jahren zu klein geworden, daher können vorkompilierte Binärdateien nicht mehr ausgeliefert werden.

Da für diese Betriebssysteme keine vorkompilierten Binärdateien mehr erstellt werden, testen wir auch nicht, ob die Bibliothek noch mit nativen Compilern wie bspw. Solaris Studio kompiliert werden kann. Wenn GCC verfügbar ist, kann die Bibliothek jedoch mit hoher Wahrscheinlich für das Zielsystem kompiliert werden.

DynaPDF kann auch als WebAssembly (WASM) für die Verwendung mit Javascript in einem Webbrowser kompiliert werden. Auch wenn es möglich ist die Bibliothek für dieses Ziel zu kompilieren, sollte beachtet werden, dass kein vordefiniertes Javascript Interface verfügbar ist. Die Verwendung ist daher durchaus herausfordernd.

Desktop
x86, x64, arm64 (Vorkompiliert)
x64, arm64 (Universal Binary, Vorkompiliert)
x86, x64, arm32, arm64 (Vorkompiliert)
Mobil
arm32, arm64 (Vorkompiliert)

iOS

x64 Sim, arm64 Sim, arm64 (Vorkompiliert)
AIX, HP-UX, Solaris, WebAssembly