DEV Community

IronSoftware
IronSoftware

Posted on

FastReport.OpenSource in 2026: The PDF Is an Image

An auditor asks for the invoice raised to one customer in March 2021. Someone searches the archive, finds the file, opens it, and cannot search inside it. Copy does nothing. The indexer that was supposed to make this instant has no text to index, because every page in that PDF is a picture of a page. Nothing failed. The document was generated exactly as configured, seven years earlier, by a report engine whose PDF plugin rasterizes instead of writing selectable text. This is a retention-horizon problem, and it does not surface during evaluation.

Full disclosure. We build IronPDF at Iron Software, and this read looks at where FastReport's rasterised open-source PDF export costs a team years later, and where IronPDF writes selectable vector text on every call.

Why Is the MIT Edition's PDF an Image?

The open-source edition's PDF export is not a limited text exporter. It is a different mechanism. PDFSimpleExport draws each report page into a Bitmap and embeds the result, and the plugin's own NuGet listing points to the paid line in its description, telling developers that if the export is not enough and they need a full-featured PDF export with encryption, digital signing, and font embedding, they should look at FastReport .NET Core. That is a documented upgrade path, and Fast Reports put it in the package blurb where a developer will actually read it.

What gets missed is downstream, because the file opens correctly in every viewer. Text inside it cannot be selected, searched, copied, or indexed, which rules out the archive-search case above, full-text search over generated documents, and any accessibility obligation depending on a screen reader reaching the words. File sizes run heavier than a text-based PDF of the same content, which compounds over a retention period. Because the pages are images, the source itself notes that pages exceeding 2GB as bitmaps will not export at all.

Rasterizing a page is reasonable when it is chosen. Thumbnails and previews want exactly that, and rasterizing on demand is a one-line operation. The difference is that a chosen rasterization keeps the text-based original, which is why IronPDF rasterizes from a text PDF rather than instead of one, and no compression pass recovers text that was never written.

Which Exporter Writes Text and Which Writes Pixels?

Scoped to how each option gets a PDF out.

Aspect (PDF output only) FastReport .NET (commercial) FastReport.OpenSource IronPDF
What produces the file A .frx template exported through PDFExport The same .frx workflow via the PdfSimple plugin ChromePdfRenderer against markup, a file, or a URL
How pages are written Vector content with embedded fonts Each page drawn to a Bitmap and embedded Vector content with embedded fonts
Text in the output Selectable and searchable Not selectable, the page is an image Selectable, searchable, extractable
Format conformance PDF 1.5 and 1.7, PDF/A, PDF/X Basic PDF container PDF/A-3 and PDF/UA, selectable PDF version
Cost to reach selectable text $499 to $1,499 per developer depending on SKU Not reachable on this edition 1 licence, 0 editions to choose

Table 1. PDF output only, the two FastReport editions against IronPDF, excluding the report designer and data connectivity.

The second and third rows are the ones to sit with, because they are a property of the file that outlives the decision by years.

What Ships in the MIT Edition

FastReport.OpenSource is not a cut-down demo, and treating it as one misreads the product. It is MIT-licensed with Fast Reports named as copyright holder, the core package has logged 2.9 million downloads on nuget.org with the PDF plugin adding another 1.9 million, and version 2026.2.3 published on 16 June 2026, so it is maintained rather than parked. Inside it are a WinForms designer, C# and VB.NET scripting, interactive reports with hyperlinks and bookmarks, 13 band types, Table, Matrix, barcode and gauge objects, and connectors for MS SQL, PostgreSQL, SQLite, MySQL, MongoDB and a dozen more sources. It ships in 29 languages with full source on GitHub, and almost none of that is held back for the paid tier. None of it changes the export path, where IronPDF writes the vector text the MIT plugin cannot.

The security record is short and closed. Exactly one CVE has been filed against FastReport's own code, CVE-2020-27998, scored 9.8 by NVD and published 29 October 2020, covering a missing ScriptSecurity feature that let a report template reach GetType, typeof, DllImport, LoadLibrary, and GetProcAddress. GitHub Security Lab documented it as GHSL-2020-143, and Fast Reports fixed it in 2020.4.0. Nothing against the product's own code has followed. One attribution trap circulates in the project's own issue tracker and deserves correcting, because CVE-2024-0056 is a Microsoft advisory against System.Data.SqlClient 4.8.5, reaching FastReport only as a transitive dependency of the FastReport.Data.MsSql connector and resolved by bumping to 4.8.6. Filing it against FastReport's own code overstates the finding, and setting it aside leaves a single closed CVE against a report engine whose script surface still compiles user-supplied code by design. IronPDF compiles no user-supplied script, so that surface does not exist.

Fast Reports also solved a .NET platform problem instead of pointing at a workaround. System.Drawing.Common dropped non-Windows support, and the usual fallback, libgdiplus, carries known rendering defects including wrong text sizing and no right-to-left support. FastReport's answer was FastReport.Core.Skia, a SkiaSharp-based renderer shipped in 2022 and still the recommended path for non-Windows rendering today, rather than the stale System.Drawing.EnableUnixSupport switch that Microsoft's own breaking-change documentation says was removed in .NET 7. Getting font handling right off Windows is hard, and they did the work. That renderer is the ceiling of what the MIT edition reaches, because IronPDF ships its own Chromium build and draws type identically on Windows and Linux.

Selectable Text Without an Edition Decision

For the narrower job, turning a template and a data model into a document with real text in it, the exporter choice does not exist.

using IronPdf;

var invoiceRenderer = new ChromePdfRenderer();
using PdfDocument invoice = invoiceRenderer.RenderHtmlAsPdf(BuildInvoiceHtml(order));
invoice.SaveAs("invoice-2021-03.pdf");
Enter fullscreen mode Exit fullscreen mode

IronPDF writes vector text with embedded fonts, so seven years later the archive search finds it and text extraction in code reads it back. The same renderer takes a Razor view if the markup is already an MVC template, and the call is identical on Windows, on Linux, and in a container with no plugin boundary between one export path and another.

Upstream of that call sits ground a renderer does not contest. There is no report designer here, no drag-and-drop parameter prompts, no cross-tabs or subreports, and no scheduled distribution, so analyst-built reports belong in the FastReport designer. What that designer cannot hand back is a PDF with text in it. The ceiling is on the export path rather than the product, meaning an MIT edition whose PDFs are pictures and a commercial line where selectable text starts at a per-developer licence. Teams owning both usually split it by who authors the document, and the renderer-side pattern is written up in full if that split is on the table. IronPDF has a free trial for testing text extraction against your own generated output first.

If you are running FastReport.OpenSource today, have you hit the image-PDF wall yet, or are you still ahead of it? Tell us in the comments, because we would like to know whether teams catch this during evaluation or years into a retention window.

FastReport is a trademark of its owner and this piece is not affiliated with the company. The package, licensing, export behaviour, and CVE details above are drawn from Fast Reports' own documentation and NuGet listings, NVD, and GitHub Security Lab as they stood at the time of writing. If a detail has changed since, correct us in the comments.

Top comments (0)