Synopse PDF engineSynopse PDF engine is an Open Source PDF document creation library for Delphi, embedded in one unit.
It's used e.g. in our mORMot framework, for creating PDF files from reports.
But you can use it stand-alone, without our main ORM/SOA framework.
- Pure Delphi code, with no external .dll, and adding very small code size to your executable;
- Targets Delphi 5 up to Delphi 10.2 Tokyo, for Win32 and Win64 platforms, with full source code provided;
- Includes most vectorial drawing commands, including text,lines or curves;
- Renders bitmaps, and metafiles (even most .emf files with clipping and regioning);
- Introduce metadata, bookmarks and outline information;
- Produce very small .pdf files;
- Optionally encrypt and secure the .pdf content using 40 bit or 128 bit keys;
- Fast file generation with low memory overhead (tested with several thousands of pages);
- Access a true VCL
TCanvasinstance to create the PDF content;
- Optionally embed True Type fonts subsets;
- Unicode ready, even with pre-Unicode versions of Delphi, including advanced Uniscribe Glyph shading and Font fallback;
- Can publish PDF/A-1 archive files;
- Used in a lot of applications, with regular enhancements, mainly from active end-users;
- Licensed under a MPL/GPL/LGPL tri-license.
Latest stable version is available directly from in SynPdf.zip.
Latest unstable version, which should include latest fixes and features can be retrieved from our main repository.
In fact, you have at least three ways of generating pdfs using the library:
- Directly call of a
TPdfCanvasas published by a
TPdfDocumentinstance - this is the most direct but also more difficult way of rendering;
TMetaFiledriven content - see
TPdfDocumentGDI.VCLCanvasproperty and the
TPdfCanvas.RenderMetaFilemethod - this is very easy if you want to use "regular"
TCanvasmethods to draw the page content, especially if you have some existing printing code;
mORMotReportto easily create the content from code, with some report-oriented methods (including complex rtf with
TGDIPages.AppendRichEdit) - for basic reporting features, it is pretty much the solution.
The 2nd and 3rd ways are preferred, for most applications.
For detailed documentation of the unit, see the corresponding page in the API reference of mORMot official documentation, or directly in the interface part of the unit, as methods comments.
Dedicated blog and forumA blog is available at http://blog.synopse.info, and will notify any evolution of this component.
A forum thread is dedicated to this component, and is available on https://synopse.info.
This is the main entry point for support: first search for an existing answer, then ask your question in a new thread.