News, Updates

After over two years in development, endless tests, and thanks to the patience and support of many loyal users, DynaPDF 3.0 is finally here.

Just over a year later than planned, but better than ever before, DynaPDF goes into the third round. The main new feature is of course the new rendering engine. In addition to the functions to render PDF pages or entire PDF files, there are also examples of a PDF viewer that renders pages smooth like butter.

The main work is done by the PDFCanvas Control. This control comes with source codes for C# and Delphi, it can be used with C#, Delphi, and Visual Basic .Net (a Visual Basic 6 version will follow in a few weeks).

The PDFCanvas Control encapsulates the page cache of DynaPDF, it can be placed on form like any other component. The Control takes care of the complicated things, such as scrolling, redrawing, typical keyboard codes such as Up, Down, Home, End, etc., MouseWheel events, as well as the error handling. Especially the latter must be carefully implemented in a multi-threaded application.

The second main feature is the new PDF imported. The new algorithm repairs damaged PDF files, it can import files of any size, and there are new functions and flags to drastically reduce the memory usage.

Especially the reduction of the memory usage was one of the most important requirements. And there's a good news: If you want to reduce the memory usage of your with DynaPDF 2.5 compiled application, then you only need to set the new flag if2UseProxy with SetImportFlags2 (), finished!

This small flag has a huge impact on the memory usage and with a single line of code this change is more than manageable. The only condition is that the input file must not be deleted until the new file was closed.

But even without any change is already much more possible than before. All classes and structures have been optimized for minimal memory usage and DynaPDF holds no more  uncompressed data in memory.

For the really tough cases, there is now also an option with FlushPages() to write no longer needed pages into the output file. In this way you can easily create up to 4 GB large PDF files, even if the system has no more than 128 or 256 MB of memory installed.

BTW - The new import algorithm is fully PDF 1.7, Extension Level 5 compatible. It supports also future features which are not yet defined. As long as the PDF syntax will not be changed, you can import future PDF versions without loss of data. Data that DynaPDF does not understood will be imported as is, this is also the case for private data that were created by third party vendors.

Besides the main features, which claimed the majority of development time, there are also smaller news, such as support for images with an alpha channel, soft masks, transparency groups and countless improvements in detail.

For example, DynaPDF supports now full names for font selection. This sounds not really important but when processing spool EMF files, it can make the difference between a correct and incorrect font selection. Windows uses full names, while postscript names, in contrast, are not supported by Windows.

The new version is of course fully backward compatible, with exception of two rarely used functions. No function were removed or incompatibly altered. Also the functions that were marked as obsolete remain in the library. The upgrade should be as easy as possible for you.

You find more detailed information about extended structures, enums, new functions and so on in the download area in the file Implementation_Notes.pdf.

Linux, Unix and Mac OS X versions are now also usable without an Enterprise license. Because these versions are delivered without source codes, you can of course only use the precompiled binaries. For the shared libraries this is normally no problem but if you want to use the static libraries it is possible that you get linker errors, e.g. if you use a different GCC version as we used to compile the library.

Static libraries which were compiled with different GCC versions are not necessarily binary compatible and in such a case you would get a linker error and the application cannot be compiled.

One solution is to install the same GCC version that we used to compile the library. Another solution is to use the shared library instead. If you want to work with the static library and if you want to avoid possible trouble with certain GCC versions then it is still recommended to use DynaPDF Enterprise instead. This eliminates all incompatibilities because you can compile the library on your own system.