Operating Systems

A single API for all operating systems...

Operating Systems

Software companies that want to port their software to another operating system face an enormous challenge. What works on both platforms? Which parts of the software need to be redeveloped?

Ultimately, the goal is always to reuse as much existing code as possible. The larger the shared code base, the lower the software maintenance costs.

DynaPDF runs on almost all platforms, and the API is the same on all platforms.

Developing a PDF output for multiple platforms is a breeze with DynaPDF. One less problem for you to worry about!

Font handling

By default, DynaPDF automatically loads system fonts on Windows, macOS, and iOS operating systems. Of course, this only happens when fonts are needed.

Accessing system fonts on Android is not straightforward, as system folders require special permissions. Therefore, required fonts must be included with the application and loaded with AddFontSearchPath(), for example.

On Linux systems, automatically loading system fonts would be possible, but rarely practical, as most applications are web based. The lifetime of a PDF instance is simply too short on such systems to reasonable use a font cache. For optimal performance, required fonts should be copied to a separate directory and loaded using AddFontSearchPath().

Incidentally, system fonts can also be loaded using the same function, if needed.

Windows

DynaPDF is developed on Windows. All versions of Windows since XP are officially supported. Pre-compiled DLLs are delivered for x86, x64, and arm64.

DynaPDF Enterprise includes the original Visual Studio workspaces which are used to compile all Windows and Android binaries, as well as the Windows PHP DLLs. This version is also required if static binding is wanted.

This is due to the fact that modern Visual Studio versions are not able to create a single static library that has no further dependencies. This makes delivery and use too cumbersome.

macOS

DynaPDF is delivered as Universal binary for x64 and arm64. The archive includes dynamic and static libraries.

The usage on macOS is almost identically to Windows. System fonts are loaded automatically, therefore a very comfortable working is possible.

DynaPDF Enterprise includes the original build system (make and configure files), as well as a pre-defined XCode workspace that can be used to compile the library for macOS and iOS.

Linux

DynaPDF for Linux is available for x86 and ARM-based CPUs, each in 32-bit and 64-bit versions. The libraries are distributed as static and shared libraries.

The ARM versions were compiled using the following cross-platform toolchains:

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

Android

Android was not officially supported for a long time because the first versions did not support C++ exceptions. This has been changed and Android was added again to the list of officially supported operating systems.

DynaPDF is delivered as a shared library for Android (arm32 and arm64). Since there is no Java interface for DynaPDF, the library is better suited for native programming languages or frameworks such as Qt, FireMonkey, Xojo, or FileMaker.

iOS

Since DynaPDF 5.0, pre-compiled static import libraries are available for iOS. Therefore, a DynaPDF Enterprise license is no longer required for this target os.

For Intel based Macs, a fat binary is provided that works with the simulator and iOS devices. Unfortunately, this is not possible for ARM based Macs. Therefore, two separate libraries must be used on such systems.

Other

Prior versions of DynaPDF were also available for AIX, HP-UX, and Solaris. However, the market for these operating systems has become too small in recent years, hence precompiled binaries are no longer delivered.

Since pre-compiled binaries are no longer created for these operating systems, we do not test whether the library can still be compiled with native compilers such as Solaris Studio. However, if GCC is available, the library can most likely be compiled for the target system.

DynaPDF can also be compiled as WebAssembly (WASM) for use with JavaScript in a web browser. While it is possible to compile the library for this purpose, it should be noted that no predefined JavaScript interface is available. Therefore, its use can be quite challenging.

Desktop
x86, x64, arm64 (pre-compiled)
x64, arm64 (Universal Binary, pre-compiled)
x86, x64, arm32, arm64 (pre-compiled)
Mobile
arm32, arm64 (pre-compiled)

iOS

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