Blog
All Blog Posts | Next Post | Previous Post
Transform PDFs with TMS FNC Core 4.5
Monday, October 5, 2026
TMS FNC Core 4.5 TMS FNC PDF Library 1.1
Business applications don't only create documents. They also receive invoices, contracts, reports and forms that need to be checked, reorganized or stamped before they move to the next step.
With TMS FNC Core 4.5, the TMS FNC PDF Library grows from PDF generation into a full document workflow. Open an existing PDF, rework its pages, draw on top of them, read their text, update the metadata and save the result. All of it runs on the FNC graphics API you already know, with no extra PDF engine to deploy.
- Open and inspect: page count, page sizes, rotation, crop boxes, page text and document metadata.
- Restructure: move, duplicate, rotate, delete, extract and merge pages.
- Stamp and save: overlays, underlays and links drawn with the familiar FNC graphics calls.
From PDF output to a document workflow
Until now, the PDF Library was the component you used to produce a PDF. In 4.5 the same component can open that file again, or one that came from another system, and turn it into the document your workflow needs. Document assembly, invoice stamping, report merging and archive classification all become part of the component you already use.
1. Open and inspect existing PDFs
Opening a document is a single call. After that, its pages and document properties are available through the component:
PDFLib1.OpenDocument('incoming.pdf');
try
Caption := Format('%d page(s)', [PDFLib1.GetPageCount]);
PageInfo := PDFLib1.GetDocumentPageInfo(0);
finally
PDFLib1.CloseDocument;
end;You can also extract readable page text and read the title, author, subject, keywords, creator, producer and document dates. That is all you need to index, classify or retitle incoming files without regenerating their pages.
2. Rearrange pages with a few calls
Page operations work directly on the opened document. Move or duplicate a page, rotate it in 90-degree steps, remove pages you don't need, append another document or extract selected pages into a new PDF:
PDFLib1.OpenDocument('report.pdf');
try
PDFLib1.RotatePage(0, 90);
PDFLib1.DuplicatePage(1);
PDFLib1.MovePage(PDFLib1.GetPageCount - 1, 1);
PDFLib1.MergeDocument('appendix.pdf');
PDFLib1.SaveDocument('assembled.pdf');
finally
PDFLib1.CloseDocument;
end;The original page content, including its fonts and images, is kept as is. Form fields brought in by a merge stay registered with the destination document, so merged forms remain interactive.
3. Stamp, watermark and annotate existing pages
BeginPageEdit turns an existing page into a drawing surface. Pick pelOverlay to draw on top of the original content or pelUnderlay to draw behind it, then use the same FNC graphics calls you already know:
PDFLib1.BeginPageEdit(0, pelOverlay);
try
PDFLib1.Graphics.Font.Size := 22;
PDFLib1.Graphics.Font.Color := gcRed;
PDFLib1.Graphics.DrawText('APPROVED', PointF(36, 48));
finally
PDFLib1.EndPageEdit;
end;Use it for approval stamps, watermarks, letterheads, page numbers, footers, shapes, images and external links. The drawing surface respects the crop box, rotation and page scaling, even in documents that mix page sizes.
4. Extract text and update metadata
Text extraction handles the common PDF font encodings and positioning patterns, so you get readable text back even when the producing software wrote a page one word, or one glyph, at a time. Metadata is editable too, so a short routine can classify a file, record its final state and save it under a new name:
ExtractedText := PDFLib1.GetDocumentPageText(0);
PDFLib1.Title := 'Approved customer document';
PDFLib1.Subject := 'Final version';
PDFLib1.SaveDocument('completed.pdf');Cross-framework by design
The same document model is available for VCL, FireMonkey and TMS WEB Core. Native applications work with files or streams; browser applications use the stream overloads that fit the web sandbox. Delphi and C++Builder are supported for VCL and FireMonkey, and TMS WEB Core uses Delphi. One document workflow reaches Windows, macOS, iOS, Android and the browser, without a separate PDF dependency.
Good to know
The new API is built for structural document work and for adding new content. It does not rewrite text that is already on a page. Encrypted PDFs are not supported yet, and structurally rewriting a document invalidates its existing digital signatures.
More improvements in 4.5
TMS FNC Core 4.5 also brings a broad set of refinements to the shared graphics layer:
- PDF output: better font embedding, clipping, text measurement, wrapping, rotation, bitmap drawing, paths and transforms.
- HTML text: improved
DrawHTMLTextpaging, clipping and alignment for mixed-format text. - SVG: fixed dash patterns, transformed strokes and anti-aliasing on VCL.
- WebView and web: more reliable WebView caching, plus browser graphics and data-binding improvements.
These changes benefit both direct PDF generation and every FNC control and product that exports through the shared graphics layer.
Installing TMS FNC Core 4.5
TMS FNC Core 4.5 is available through the Smart Setup based installation workflow:
tms self-update tms install tms.fnc.*
Existing customers can also download the update from My Products. New to FNC? Try TMS FNC Core with the fully functional trial version.
Try it today and tell us what you think
Whether you assemble reports, stamp invoices, merge appendices, classify an archive or extract selected pages, the new APIs keep the work cross-framework and inside the FNC stack you already use. Let us know how it works in your projects:
TMS FNC Core is the foundation under every FNC product: one graphics layer, one PDF Library and one set of utilities for VCL, FireMonkey and TMS WEB Core. Version 4.5 adds opening, restructuring, stamping and saving existing PDFs to the PDF Library. Learn more about TMS FNC Core.
Pieter Scheldeman
This blog post has received 3 comments.
2. Monday, October 5, 2026 at 1:55:58 PM
Wow!! Fantastic!
Stefano Monterisi
3. Tuesday, October 6, 2026 at 8:53:51 AM
Thanks Thomas & Stefano!
Pieter Scheldeman
All Blog Posts | Next Post | Previous Post
Feichtenschlager Thomas