[Lazarus] PDF generator
Michael Van Canneyt
michael at freepascal.org
Sat Mar 5 18:27:24 CET 2016
I have committed a PDF generator to FPC Subversion: fcl-pdf.
Why a new pascal PDF generator ?
Mainly because the existing ones written in Object Pascal suffer from
- Font support usually incomplete or downright buggy.
- Dependency on a GUI (LCL, VCL, Windows).
The latter is important because the PDFs must be generated on a headless (no
So, the fcl-pdf package contains a PDF generating unit fppdf that does not depend
on any external libraries or GUI system.
The PDF generator has the following features:
- Support for basic shapes.
- Support for basic line styles.
- Dictionary support.
- Multi-page PDF.
- Image support.
- TTF Font support.
- Font embedding.
- Unicode font support.
- Stream Compression.
- Image embedding.
- Several paper types.
- Support for multiple measurement units.
- Rotation matrix system.
- PDF creator information.
- The generated PDF passes several PDF validators.
The library is based on a library that came with FPGUI, with a feature set
which came closest to what I desired. It was completed for the company I
work for by Graeme Geldenhuys, and is heavily unit tested.
It is not yet feature-complete, but the above should be ample for most
In the near future, I expect to commit a reporting engine which, likewise,
does not need a GUI (but can use one) and uses the PDF generator as one
- Implement TFPCustomCanvas descendent (TPDFCanvas) that draws on a PDF.
(should allow easy integration in LCL)
- Partial embedding of (unicode) fonts (only used glyphs) for smaller PDFs.
- On windows (possibly mac), allow to use native font mechanisms for extracting info from TTF files.
- Reduce memory usage by streaming finished pages to file.
- PDF Forms ?
- Archive format ?
- Signatures ?
I would welcome additional tests/demos, suggestions, bugreports, improvements or patches.
More information about the Lazarus