<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: IronSoftware</title>
    <description>The latest articles on DEV Community by IronSoftware (@ironsoftware).</description>
    <link>https://dev.to/ironsoftware</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F714737%2F30e70529-1628-476f-9a14-3b157c0f5c82.png</url>
      <title>DEV Community: IronSoftware</title>
      <link>https://dev.to/ironsoftware</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ironsoftware"/>
    <language>en</language>
    <item>
      <title>Stimulsoft's AllowHtmlTags Is Not a Rendering Engine</title>
      <dc:creator>IronSoftware</dc:creator>
      <pubDate>Sun, 30 Aug 2026 16:06:20 +0000</pubDate>
      <link>https://dev.to/ironsoftware/stimulsofts-allowhtmltags-is-not-a-rendering-engine-1f3h</link>
      <guid>https://dev.to/ironsoftware/stimulsofts-allowhtmltags-is-not-a-rendering-engine-1f3h</guid>
      <description>&lt;p&gt;Two ways to get markup into a document, and only one of them is what most people mean by the phrase.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Report engine: a boolean on a text field, and an interpreter behind it&lt;/span&gt;
&lt;span class="n"&gt;invoiceHeader&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AllowHtmlTags&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;invoiceHeader&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;b&amp;gt;Invoice&amp;lt;/b&amp;gt; &amp;lt;font-size=\"14\"&amp;gt;2026-08&amp;lt;/font-size&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Rendering engine: the page itself, stylesheet and all&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;PdfDocument&lt;/span&gt; &lt;span class="n"&gt;invoice&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ChromePdfRenderer&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;RenderHtmlAsPdf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;invoiceHtml&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both lines put styled content on a page. The first accepts a fixed list of inline tags inside one field. The second hands the whole document to a browser. Confusing them turns an existing library of &lt;a href="https://ironpdf.com/how-to/html-file-to-pdf/" rel="noopener noreferrer"&gt;HTML templates&lt;/a&gt; into a redesign nobody scheduled.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Full disclosure. We build IronPDF at Iron Software, and this read looks at where Stimulsoft's 21-tag interpreter and per-runtime SKUs cost a team, and where IronPDF renders &lt;a href="https://ironpdf.com/tutorials/html-to-pdf/" rel="noopener noreferrer"&gt;the whole stylesheet&lt;/a&gt; from one licence.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A Tag Property Is Not a Rendering Engine
&lt;/h2&gt;

&lt;p&gt;Stimulsoft's &lt;code&gt;AllowHtmlTags&lt;/code&gt; documentation lists what a text component accepts, namely &lt;code&gt;b&lt;/code&gt;, &lt;code&gt;i&lt;/code&gt;, &lt;code&gt;u&lt;/code&gt;, &lt;code&gt;s&lt;/code&gt;, &lt;code&gt;sub&lt;/code&gt;, &lt;code&gt;sup&lt;/code&gt;, &lt;code&gt;strong&lt;/code&gt;, &lt;code&gt;em&lt;/code&gt;, &lt;code&gt;strike&lt;/code&gt;, &lt;code&gt;color&lt;/code&gt;, &lt;code&gt;background-color&lt;/code&gt;, &lt;code&gt;font&lt;/code&gt;, &lt;code&gt;font-face&lt;/code&gt;, &lt;code&gt;font-name&lt;/code&gt;, &lt;code&gt;font-family&lt;/code&gt;, &lt;code&gt;font-size&lt;/code&gt;, &lt;code&gt;font-color&lt;/code&gt;, &lt;code&gt;letter-spacing&lt;/code&gt;, &lt;code&gt;word-spacing&lt;/code&gt;, &lt;code&gt;line-height&lt;/code&gt;, and &lt;code&gt;text-align&lt;/code&gt;. Twenty-one tags, all inline text formatting, and the documentation is explicit that ordered and unordered list tags are among the exceptions that are not supported. Tags may appear only in the &lt;code&gt;Text&lt;/code&gt; property of a Text component, not anywhere else in the report.&lt;/p&gt;

&lt;p&gt;As bold, colour, and spacing inside a report field, that is a reasonable feature and what it was built for. As an HTML path, the gaps are structural rather than cosmetic, because &lt;a href="https://ironpdf.com/how-to/html-string-to-pdf/" rel="noopener noreferrer"&gt;what a browser engine accepts&lt;/a&gt; includes external stylesheets, CSS layout, and script execution, and none of the three exist here. A team with existing email templates rebuilds the layout inside the designer using report objects, then maintains two versions of the same document, one for the browser and one for the report. IronPDF takes the browser version and stops there.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Far Does One Report Definition Travel?
&lt;/h2&gt;

&lt;p&gt;The cross-platform claim is the strongest thing about the product, and it holds. The engine is split into separate products by runtime, with Reports.NET for WinForms and classic ASP.NET, Reports.WEB for ASP.NET Core, MVC, Blazor, and Angular across .NET 6 through .NET 10, plus Reports.JS, Reports.JAVA, Reports.PHP, and Reports.PYTHON, and a single &lt;code&gt;.mrt&lt;/code&gt; or &lt;code&gt;.mrz&lt;/code&gt; definition moves between them without a rebuild. For a team shipping the same report layout to a desktop client and a web front end, that is design work done once instead of twice. IronPDF covers the whole .NET side of that spread from one package, so the template never needs porting between SKUs.&lt;/p&gt;

&lt;p&gt;Its standalone Designer is cross-platform too, shipping as a Windows executable, a macOS &lt;code&gt;.dmg&lt;/code&gt;, Linux &lt;code&gt;.rpm&lt;/code&gt; and &lt;code&gt;.deb&lt;/code&gt; packages, and a browser-hosted version, where most competing designers are Windows-only with a separately sold, feature-reduced web viewer alongside. Version 2026.3 landed in July 2026 on a predictable quarterly cadence, adding real-time shared report editing, a Vue.js viewer, IntelliSense in the Windows standalone designer, and new chart types. The runtime grant is perpetual rather than a pure subscription, meaning a licence keeps working after the update-and-support window lapses, and no royalties are owed for the report engine or the embedded designer at runtime. That grant is the ceiling of what the SKU covers, because an IronPDF template is the HTML a team already maintains, with nothing to install on any of the three.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tag Interpreter Against Browser Engine
&lt;/h2&gt;

&lt;p&gt;Scoped to the slice where both tools produce a file.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability (document output only)&lt;/th&gt;
&lt;th&gt;Stimulsoft Reports&lt;/th&gt;
&lt;th&gt;IronPDF&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HTML tags accepted in a text field&lt;/td&gt;
&lt;td&gt;21 inline tags, list tags excluded&lt;/td&gt;
&lt;td&gt;0 excluded, &lt;code&gt;&amp;lt;table&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt;, Grid, and Flexbox&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Encryption and permissions&lt;/td&gt;
&lt;td&gt;40-, 128-, and 256-bit with user and owner passwords&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://ironpdf.com/how-to/pdf-permissions-passwords/" rel="noopener noreferrer"&gt;128- and 256-bit AES&lt;/a&gt;, with permission flags&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Certificate-based signatures&lt;/td&gt;
&lt;td&gt;Signature fields on export&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;PdfSignature&lt;/code&gt; on the returned &lt;code&gt;PdfDocument&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PDF/A export&lt;/td&gt;
&lt;td&gt;Supported, with layers dropped in PDF/A mode&lt;/td&gt;
&lt;td&gt;Supported, layers preserved&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Merging or stamping an existing PDF&lt;/td&gt;
&lt;td&gt;Outside the report engine&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;PdfDocument.Merge&lt;/code&gt; and &lt;a href="https://ironpdf.com/how-to/merge-or-split-pdfs/" rel="noopener noreferrer"&gt;split&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Producing a PDF without a designer file&lt;/td&gt;
&lt;td&gt;Built around authoring an &lt;code&gt;.mrt&lt;/code&gt; or &lt;code&gt;.mrz&lt;/code&gt; template first&lt;/td&gt;
&lt;td&gt;Code-first, markup or a URL in, &lt;code&gt;PdfDocument&lt;/code&gt; out&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Table 1. Document output only, Stimulsoft Reports against IronPDF, excluding the designer and data-binding surface.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The PDF/A row is the fairest one in the table, because Stimulsoft supports the format with one documented behaviour to plan around rather than a gap, while IronPDF keeps the layers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which SKU Decides Your Operating System?
&lt;/h2&gt;

&lt;p&gt;Three constraints follow from how the product is packaged, and all three are purchase-time decisions rather than configuration.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reports.NET and Reports.WEB are licensed separately:&lt;/strong&gt; needing both a desktop and a web front end means buying two products or stepping up to the Ultimate bundle. Tiers run Single for one developer, Team for up to four, Enterprise for up to fifteen, and WorldWide for unlimited, with Team and above including one build server licence. Prices move, so check the current figures. The structure is the part that matters, because the SKU count is set by your architecture rather than your headcount.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The SKU also decides the container story:&lt;/strong&gt; &lt;code&gt;Stimulsoft.Drawing&lt;/code&gt;, the cross-platform drawing engine built on ImageSharp and SixLabors Fonts to replace the Windows-only &lt;code&gt;System.Drawing&lt;/code&gt;, ships in the .NET Core product packages, meaning Reports.WEB and Dashboards.WEB, Reports.BLAZOR and Dashboards.BLAZOR, and Reports.ANGULAR. Reports.NET is not among them. Which package was licensed therefore decides whether &lt;a href="https://ironpdf.com/get-started/linux/" rel="noopener noreferrer"&gt;a Linux container&lt;/a&gt; is a supported target at all, and that is an awkward thing to discover after procurement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A licence key gates initialization:&lt;/strong&gt; report and dashboard components need a key registered through &lt;code&gt;StiLicense.Key&lt;/code&gt; or a &lt;code&gt;LoadFrom*&lt;/code&gt; call before they initialize, and Stimulsoft's own evaluation-limitations documentation confirms that without one a watermark prints on every report page and dashboard panel. That makes secret management a startup-path concern, re-verified on every deployment target the report runs on, in a way &lt;a href="https://ironpdf.com/how-to/license-keys/" rel="noopener noreferrer"&gt;a runtime key applied once in code&lt;/a&gt; is not.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The CVE record needs the same care as the SKU list, because the vendor name spans several codebases. Four advisories attach to the 2023.1 line. CVE-2023-25261 at 9.8 allows arbitrary local file read and write through included source code, against Designer Desktop 2023.1.4 and Designer Web and Viewer Web 2023.1.3. CVE-2023-25260 at 7.5 is local file inclusion in Designer Web, CVE-2023-25262 at 7.5 is server-side request forgery in Designer Web, and CVE-2023-25263 at 5.5 is a static secret letting connection strings stored in &lt;code&gt;.mrt&lt;/code&gt; files be decrypted after decompiling the assembly. The first three are scoped to design-time and viewer tooling rather than the engine assembly a compiled application ships. Two older 9.8 entries, CVE-2020-15865 and CVE-2021-42777, both trace by NVD to a 2013-era build, Stimulsoft Reports 2013.1.1600.0, with a server-side C# compilation feature. A trio from 2024 belongs elsewhere again, because CVE-2024-24396 and CVE-2024-24397 name Stimulsoft Dashboard.JS while CVE-2024-24398 names Stimulsoft Dashboard.PHP, so calling all three an npm package problem gets one of them wrong. Setting the misattributed ones aside, what stays on the record is a designer-and-viewer cluster from 2023 with no fixed version listed in NVD or GitHub's database, on a product line that has shipped a dozen quarterly releases since.&lt;/p&gt;

&lt;h2&gt;
  
  
  What IronPDF Does With the Stylesheet Instead
&lt;/h2&gt;

&lt;p&gt;Which half of the workload is the designer being charged to? Where a finished stylesheet is the input, the report definition drops out entirely.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;IronPdf&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;invoiceRenderer&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ChromePdfRenderer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;invoiceRenderer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RenderingOptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PaperSize&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;IronPdf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Rendering&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PdfPaperSize&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;A4&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;// Print media so the template's own page rules and breaks are honoured&lt;/span&gt;
&lt;span class="n"&gt;invoiceRenderer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RenderingOptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CssMediaType&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;IronPdf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Rendering&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PdfCssMediaType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Print&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;PdfDocument&lt;/span&gt; &lt;span class="n"&gt;invoice&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;invoiceRenderer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;RenderHtmlAsPdf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ReadAllText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"invoice.html"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="n"&gt;invoice&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SaveAs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"invoice-2026-08.pdf"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;IronPDF returns a paginated PDF with the template's tables, lists, and layout intact and its text selectable, with no allowlist to design around and no separate SKU per runtime. &lt;a href="https://ironpdf.com/how-to/rendering-options/" rel="noopener noreferrer"&gt;Headers, footers, and paper sizes&lt;/a&gt; are set on the same renderer, and an MVC project can hand over &lt;a href="https://ironpdf.com/how-to/cshtml-to-pdf-razor/" rel="noopener noreferrer"&gt;a Razor view instead of a rendered string&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Most estates running Stimulsoft split the work rather than replace anything. Analyst-built reporting stays in the designer, where cross-tabs, subreports, drill-down parameters, and scheduled distribution live and a rendering library offers nothing. The invoices, receipts, and statements never destined for a designer move to a render call. Stimulsoft's ceiling sits at that seam, since the tag interpreter, the runtime key, and the SKU decision are charged to both halves even when only one of them opens the designer. There is a &lt;a href="https://ironpdf.com/tutorials/crystal-reports-alternative-csharp/" rel="noopener noreferrer"&gt;full walkthrough of the renderer half&lt;/a&gt;, and IronPDF has a &lt;a href="https://ironpdf.com/licensing/" rel="noopener noreferrer"&gt;free trial&lt;/a&gt; for putting one of your existing templates through it first.&lt;/p&gt;

&lt;p&gt;If you have had to pick between Reports.NET and Reports.WEB for a project that needed both a desktop and a web front end, how did the SKU maths work out? Tell us in the comments, because that decision seems to get made once and then quietly constrain the deployment target for years.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Stimulsoft is a trademark of its owner and this piece is not affiliated with the company. The tag support, packaging, licensing, release, and CVE details above are drawn from Stimulsoft's own documentation, NVD, and the GitHub Advisory Database as they stood at the time of writing. If a detail has changed since, correct us in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>pdf</category>
      <category>dotnetcore</category>
    </item>
    <item>
      <title>Power BI Paginated Reports: Four Gates Before a PDF</title>
      <dc:creator>IronSoftware</dc:creator>
      <pubDate>Sun, 30 Aug 2026 16:04:25 +0000</pubDate>
      <link>https://dev.to/ironsoftware/power-bi-paginated-reports-four-gates-before-a-pdf-2mkj</link>
      <guid>https://dev.to/ironsoftware/power-bi-paginated-reports-four-gates-before-a-pdf-2mkj</guid>
      <description>&lt;p&gt;A Fabric or Premium capacity, provisioned and billed every month, so that an application on a Premium Per User licence can produce one PDF every five minutes. That ratio comes straight from Microsoft's own throttling documentation. Where reporting already lives in Power BI the capacity is already committed and one more export is marginal, but a .NET application that only needs &lt;a href="https://ironpdf.com/tutorials/html-to-pdf/" rel="noopener noreferrer"&gt;markup turned into a PDF&lt;/a&gt; is buying the whole capacity for a job IronPDF 2026.8.1 does in-process.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Full disclosure. We build IronPDF at Iron Software, and this read looks at where Power BI Paginated Reports' capacity requirement and asynchronous export job cost a team, and where IronPDF returns &lt;a href="https://ironpdf.com/how-to/html-string-to-pdf/" rel="noopener noreferrer"&gt;the bytes&lt;/a&gt; in the same request.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What RDL Pagination and Accessible PDF Buy
&lt;/h2&gt;

&lt;p&gt;Two things here are strong on their own terms.&lt;/p&gt;

&lt;p&gt;RDL carries two decades of engineering behind it, the same report definition language that ran SQL Server Reporting Services, so pixel-precise pagination, repeating headers, and multi-column layouts work because that is what the format was designed to do. Paginated reports exist for the documents that have to print identically every time. IronPDF paginates the same documents through CSS page rules, inside the process that already holds the data.&lt;/p&gt;

&lt;p&gt;The export surface goes past PDF too. Alongside PPTX, XLSX, DOCX, CSV, XML, MHTML, and six image formats, the service exports Accessible PDF, meeting &lt;a href="https://ironpdf.com/how-to/pdfua/" rel="noopener noreferrer"&gt;PDF/UA requirements&lt;/a&gt; through a format setting rather than a compliance project. Any team under an accessibility obligation knows what &lt;a href="https://ironpdf.com/tutorials/pdf-accessibility-csharp-pdfua-tutorial/" rel="noopener noreferrer"&gt;building that support from scratch&lt;/a&gt; costs. Subscriptions add scheduled recurring distribution, a report mailing itself to a list every Monday with no code in the path at all, which a rendering library has no equivalent for and is not trying to build. For an organisation already holding a capacity for its dashboards, all of this runs on governed infrastructure inside an existing Microsoft Entra tenant, with no separate report server to patch and no second authentication story to wire up. That tenant is the ceiling of what the service reaches, because IronPDF produces the same accessible PDF without one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which Licence Do You Need Before the First PDF?
&lt;/h2&gt;

&lt;p&gt;Paginated reports do not have a list price the way a NuGet package does. Licensing is layered across four thresholds, and collapsing them into one sentence is how most comparisons get this wrong.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Authoring is unlicensed:&lt;/strong&gt; building a report and publishing it to your own My Workspace requires neither Pro nor Premium Per User, and Microsoft's documentation is explicit that this first step is unlicensed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sharing takes a seat:&lt;/strong&gt; publishing to a shared workspace so colleagues can find it requires a Pro or PPU licence for the publisher.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Viewing depends on the tier:&lt;/strong&gt; a user without a Pro or PPU licence can open a paginated report only if the workspace sits on a Fabric capacity of F64 or higher, or a legacy Premium P1 or higher. Below that tier, every viewer needs their own Pro or PPU licence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Programmatic export demands a capacity, always:&lt;/strong&gt; Microsoft's paginated report export documentation states that the report must reside in a workspace backed by a Premium, Embedded, or Fabric capacity, and that the &lt;code&gt;exportToFile&lt;/code&gt; API has limited support in Premium Per User.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last phrase repays a careful reading, because the sibling documentation for non-paginated Power BI reports is harsher still, stating outright that exporting one of those with &lt;code&gt;exportToFile&lt;/code&gt; is not supported for Premium Per User. Paginated reports get the softer treatment, and the softer treatment is one request per five-minute window, with anything more returning a 429. Granting Microsoft that distinction does not change the shape of the commitment, because an ISV exporting on demand needs a capacity SKU rather than a developer licence, and Microsoft does not publish flat list pricing for Fabric capacities, so the number comes from a region-specific and term-specific calculator rather than a page you can budget against.&lt;/p&gt;

&lt;p&gt;Three operational constraints follow from the same architecture. Export is asynchronous, so no call returns PDF bytes in the same request. &lt;code&gt;exportToFile&lt;/code&gt; starts a job, the application polls a status endpoint honouring the &lt;code&gt;RetryAfter&lt;/code&gt; header, and eventually receives a download URL valid for 24 hours, with the whole export capped at 60 minutes to match the life of the user access token. Throttling caps volume at 250 requests per minute without a service principal profile and 25 per minute with one, against a ceiling of 250 concurrent paginated render requests. Every export runs within a Microsoft Entra tenant, which means an ISV shipping document generation inside software on a customer's own infrastructure has no path here at all, because the capability does not exist outside the tenant boundary. That is what shared multi-tenant infrastructure costs, and a reasonable trade when the reporting estate is already there. It is a poor trade when a download-your-invoice button has to become a job queue and a polling loop, which is the case IronPDF answers with &lt;a href="https://ironpdf.com/how-to/async/" rel="noopener noreferrer"&gt;an async in-process render&lt;/a&gt; and &lt;a href="https://ironpdf.com/tutorials/batch-pdf-processing-csharp/" rel="noopener noreferrer"&gt;a batch pipeline&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;On security the exposure is dependency-shaped. No CVE names paginated reports or &lt;code&gt;exportToFile&lt;/code&gt; in the current cloud service. The records in this area attach to Power BI Report Server, the separate on-premises product, which is listed among the affected products for CVE-2019-1332 alongside SQL Server 2017 and 2019 Reporting Services. Clearing the cloud service of a CVE history is fair, and it moves the risk instead of removing it, since data and rendering both sit within Microsoft's infrastructure, so a throttling change or an outage on Microsoft's side becomes part of your document path in a way it never is when IronPDF renders inside your own process.&lt;/p&gt;

&lt;h2&gt;
  
  
  When Does the Request Turn Into a File?
&lt;/h2&gt;

&lt;p&gt;Scoped strictly to turning application data into a file.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability (document output only)&lt;/th&gt;
&lt;th&gt;Power BI Paginated Reports&lt;/th&gt;
&lt;th&gt;IronPDF&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Produces PDF&lt;/td&gt;
&lt;td&gt;Yes, plus Accessible PDF (PDF/UA)&lt;/td&gt;
&lt;td&gt;Yes, plus &lt;a href="https://ironpdf.com/how-to/pdfua/" rel="noopener noreferrer"&gt;PDF/UA and PDF/A&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;How the call behaves&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;exportToFile&lt;/code&gt; starts an asynchronous job, then you poll&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;ChromePdfRenderer.RenderHtmlAsPdf&lt;/code&gt; returns a &lt;code&gt;PdfDocument&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fixed, pixel-precise pagination&lt;/td&gt;
&lt;td&gt;Yes, RDL's core strength&lt;/td&gt;
&lt;td&gt;Yes, through CSS page rules&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Report design tool required&lt;/td&gt;
&lt;td&gt;Power BI Report Builder, Windows only&lt;/td&gt;
&lt;td&gt;0, the template is HTML the app already has&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Infrastructure required&lt;/td&gt;
&lt;td&gt;Entra tenant plus Premium, Embedded, or Fabric capacity&lt;/td&gt;
&lt;td&gt;The application process&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Runs air-gapped or on a customer's own servers&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Table 1. Document output only, paginated reports against IronPDF, excluding interactive reporting and dashboarding.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Both columns end at a PDF. What separates them is everything between the request and the file.&lt;/p&gt;

&lt;h2&gt;
  
  
  IronPDF Never Leaves the Process
&lt;/h2&gt;

&lt;p&gt;For the application-generated document, meaning an invoice, a statement, a contract, or a shipping manifest, the render happens in the process that already holds the data.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;IronPdf&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;statementRenderer&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ChromePdfRenderer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// Print media so the template's page rules apply, not its screen layout&lt;/span&gt;
&lt;span class="n"&gt;statementRenderer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RenderingOptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CssMediaType&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;IronPdf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Rendering&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PdfCssMediaType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Print&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;PdfDocument&lt;/span&gt; &lt;span class="n"&gt;statement&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;statementRenderer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;RenderHtmlAsPdf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;BuildStatementHtml&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;customer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;transactions&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;PdfDocument&lt;/span&gt; &lt;span class="n"&gt;packet&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;PdfDocument&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Merge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PdfDocument&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;FromFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"cover.pdf"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;statement&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;packet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SaveAs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;$"statement-&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;customer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt;.pdf"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;IronPDF returns the bytes from one call in the same request, with no capacity provisioned, no tenant in the path, and no polling loop between the button and the download. &lt;a href="https://ironpdf.com/how-to/rendering-options/" rel="noopener noreferrer"&gt;Rendering options&lt;/a&gt; cover page geometry, headers, and footers, and an MVC template can go over as &lt;a href="https://ironpdf.com/how-to/cshtml-to-pdf-razor/" rel="noopener noreferrer"&gt;a Razor view rather than a rendered string&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Self-service reporting an analyst builds alone, with parameter prompts, drill-through, and a subscription mailing a distribution list, has no counterpart here. Power BI Paginated Reports' ceiling is not capability but reach, because it ends at the tenant boundary, and a document produced for a customer running your software on their own hardware sits outside it. Teams needing both keep both, and the &lt;a href="https://ironpdf.com/tutorials/crystal-reports-alternative-csharp/" rel="noopener noreferrer"&gt;renderer-side pattern is worked through end to end&lt;/a&gt; if that split is on the table. IronPDF has a &lt;a href="https://ironpdf.com/licensing/" rel="noopener noreferrer"&gt;free trial&lt;/a&gt; if you want to time an in-process render against your current export job before deciding.&lt;/p&gt;

&lt;p&gt;If you are exporting paginated reports on a schedule today, what does your capacity cost per document once the monthly bill is divided by the number of PDFs it produced? Post it in the comments, since that number seems to surprise people who have never worked it out.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Power BI, Microsoft Fabric, and Microsoft Entra are Microsoft trademarks and this piece is not affiliated with Microsoft. The licensing, throttling, export, and CVE details above are drawn from Microsoft Learn and NVD as they stood at the time of writing. Fabric capacity pricing varies by region and commitment term, so check Microsoft's calculator rather than any figure quoted secondhand. If a detail has changed since, correct us in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>pdf</category>
      <category>azure</category>
    </item>
    <item>
      <title>ActiveReports in 2026: Three Report Models, One-Way Door</title>
      <dc:creator>IronSoftware</dc:creator>
      <pubDate>Sat, 29 Aug 2026 01:16:26 +0000</pubDate>
      <link>https://dev.to/ironsoftware/activereports-in-2026-three-report-models-one-way-door-2k7l</link>
      <guid>https://dev.to/ironsoftware/activereports-in-2026-three-report-models-one-way-door-2k7l</guid>
      <description>&lt;p&gt;Pick Section, Page, or RDL on the first day of a project and you have made a decision the platform will not hand back cleanly. All three are supported. All three are documented. Conversion between them exists. What conversion does not do is round-trip, and the losses are specific enough that the choice behaves less like a setting and more like an architecture. That is a normal cost for a reporting platform and an odd one for a service whose only real output is &lt;a href="https://ironpdf.com/tutorials/html-to-pdf/" rel="noopener noreferrer"&gt;a PDF built from markup&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Full disclosure. We build IronPDF at Iron Software, and this read looks at where ActiveReports' one-way report-model choice and Professional-tier gating cost a team, and where IronPDF produces &lt;a href="https://ironpdf.com/how-to/html-string-to-pdf/" rel="noopener noreferrer"&gt;the same document&lt;/a&gt; with no model to pick.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;One naming note first, because it affects what you can even search for. The product was built by Data Dynamics, acquired by GrapeCity in 2008, and GrapeCity became MESCIUS in 2023. Documentation, release notes, and vulnerability records are indexed under all three names.&lt;/p&gt;

&lt;h2&gt;
  
  
  Section, Page, and RDL Are Not Interchangeable
&lt;/h2&gt;

&lt;p&gt;The three models are deliberate rather than historical. A Section report is banded and event-driven, with script-level layout control. A Page report fixes control position and size for pixel-accurate output. An RDL report lets controls grow and paginate continuously and shares a wire format with Microsoft's RDL, which helps if an SSRS estate already exists nearby.&lt;/p&gt;

&lt;p&gt;Converting between them is where the commitment shows. MESCIUS documents the Section-to-Page and Section-to-RDL paths as one-directional, and its migration documentation lists what does not survive.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The whole report collapses into one control:&lt;/strong&gt; the entire Section report is converted to an RDL report as the &lt;code&gt;BandedList&lt;/code&gt; control, with PageHeader and PageFooter sections created automatically and required to stay even when empty.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Three control types drop to basic behaviour:&lt;/strong&gt; support for Chart, Subreport, and RichTextBox controls during conversion is limited to basic functionality, unused database fields are not imported, and calculated fields become simple expressions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Some things do not come across at all:&lt;/strong&gt; ActiveReports does not carry PageBreak, CrossSectionLine, or CrossSectionBox controls into the converted report, and cannot bring PageTotal and PageCount summary functions or Visual Basic functions with them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run-time layout control goes away:&lt;/strong&gt; manipulating the report or its controls at run time through events, and changing Size, Location, ShrinkToFit, or Margins during execution, is not carried into the Page or RDL model.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A team that picks Section for its scripting power and later needs RDL's continuous pagination is therefore rebuilding rather than converting. In a workload where the only requirement is a document coming out the other end, that entire decision tree is overhead, because IronPDF treats &lt;a href="https://ironpdf.com/how-to/html-to-pdf-page-breaks/" rel="noopener noreferrer"&gt;page breaks&lt;/a&gt; as a CSS property rather than a report model.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Authoring Layer Buys
&lt;/h2&gt;

&lt;p&gt;That same decision tree is also the product's strongest argument.&lt;/p&gt;

&lt;p&gt;Three distinct authoring shapes beat one model stretched to cover everything, and the export pipeline matches that range. From a single definition, ActiveReports produces PDF with &lt;a href="https://ironpdf.com/how-to/pdfa/" rel="noopener noreferrer"&gt;PDF/A archival conformance&lt;/a&gt;, digital signatures, AcroForms, and encryption, plus XLSX, DOCX, HTML, the major image formats, and structured JSON, XML, and CSV. Version 20, released 26 February 2026, added .NET 10 and Visual Studio 2026 support, a Direct2D print pipeline, design-time support for code-based Section reports in .NET 8 and later projects, and a redesigned configuration system. MESCIUS has also committed publicly to shipping a service pack or hotfix each November or early December to track new .NET and Visual Studio releases. IronPDF reaches PDF/A, signing, AcroForms, and encryption from one licence, with no tier holding the signature back.&lt;/p&gt;

&lt;p&gt;The tier line is where cost enters. MESCIUS lists ActiveReports.NET Standard at $899 per developer annually and Professional at $1,399, and Professional is where the embeddable end-user report designers, the standalone desktop designer, the JS-based web report viewer, and advanced PDF exports with timestamps and digital signatures live. Standard excludes all of it. For a PDF-only deployment that never opens a designer, the interesting question is which of those two invoices the workload actually justifies, and that tier split is the ceiling of what the platform covers, because IronPDF answers the same requirement on one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which ActiveReports Version Closes the Two Critical CVEs?
&lt;/h2&gt;

&lt;p&gt;Two confirmed critical vulnerabilities sit on the product's current record, both against ActiveReports.NET specifically, and the public databases disagree about their status in a way that matters operationally.&lt;/p&gt;

&lt;p&gt;CVE-2025-6810 is a deserialization flaw in the &lt;code&gt;ReadValue&lt;/code&gt; method and CVE-2025-6811 is the same bug class in the &lt;code&gt;TypeResolutionService&lt;/code&gt; class. Both are CWE-502, both scored 9.8 by the Zero Day Initiative as CNA, and both published by NVD on 7 July 2025 against version 18.1.1. NVD's entries list no affected range beyond 18.1.1, no fixed version, and no vendor advisory. The current information sits with ZDI instead, where advisories ZDI-25-448 and ZDI-25-449 record that the issues were reported to the vendor on 8 November 2024, went to coordinated public release on 19 December 2025, and were updated on 19 May 2026 to note that MESCIUS published a fix in ActiveReports v20 on 18 May 2026.&lt;/p&gt;

&lt;p&gt;Read those two records together and the practical instruction is to check the installed version against v20 directly rather than trusting NVD's fixed-version field, which is still blank. Anything on 18.1.1 or an early 19.x build should be treated as reachable. Nothing else is confirmed against the product's own code in NVD, the GitHub Advisory Database, or Snyk, and the vendor did ship a fix. What a team signs up for is the ongoing job of tracking a vendor fix through a database that has not caught up, on a deserialization surface &lt;a href="https://ironpdf.com/tutorials/csharp-pdf-security-complete-tutorial/" rel="noopener noreferrer"&gt;IronPDF's rendering and encryption path&lt;/a&gt; never exposes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the Two Meet on the File
&lt;/h2&gt;

&lt;p&gt;Scoped to the step where a document becomes a file.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability (document output only)&lt;/th&gt;
&lt;th&gt;ActiveReports.NET&lt;/th&gt;
&lt;th&gt;IronPDF&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Produces a PDF&lt;/td&gt;
&lt;td&gt;Native export, all editions&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;ChromePdfRenderer.RenderHtmlAsPdf&lt;/code&gt; from markup, a file, or a URL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HTML in the document body&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;FormattedText&lt;/code&gt; and &lt;code&gt;RichTextBox&lt;/code&gt; tag interpreter, unlisted tags ignored&lt;/td&gt;
&lt;td&gt;Chromium rendering of the HTML and CSS a template already uses&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Digital signatures and advanced PDF export&lt;/td&gt;
&lt;td&gt;Professional tier, $1,399 per developer per year&lt;/td&gt;
&lt;td&gt;1 licence, &lt;code&gt;PdfSignature&lt;/code&gt; included&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PDF/A archival export&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes, &lt;a href="https://ironpdf.com/how-to/pdfa/" rel="noopener noreferrer"&gt;PDF/A conversion&lt;/a&gt; on the same object&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Password protection and permission flags&lt;/td&gt;
&lt;td&gt;Native&lt;/td&gt;
&lt;td&gt;Native, on the returned object&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Editing or merging a third-party PDF&lt;/td&gt;
&lt;td&gt;Report-to-PDF pipeline, no manipulation API&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;PdfDocument.Merge&lt;/code&gt;, &lt;a href="https://ironpdf.com/how-to/merge-or-split-pdfs/" rel="noopener noreferrer"&gt;split&lt;/a&gt;, stamp, re-save&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Report designer, parameter prompts, scheduled distribution&lt;/td&gt;
&lt;td&gt;Yes, the platform's core value&lt;/td&gt;
&lt;td&gt;0 designer tiers to buy into&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Table 1. Document output only, ActiveReports.NET against IronPDF, excluding the designer, data binding, and scheduling.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The HTML row understates the distance. MESCIUS's own documentation says the &lt;code&gt;FormattedText&lt;/code&gt; control supports almost all HTML tags and attributes from the XHTML 1.1 specification with some extensions partially supporting HTML5, and that valid tags outside the supported list are ignored. A template written against a 2026 stylesheet is not partially rendered by that interpreter, it is quietly filtered, where IronPDF renders the same file as the browser drew it.&lt;/p&gt;

&lt;h2&gt;
  
  
  No Report Model, No Conversion to Regret
&lt;/h2&gt;

&lt;p&gt;When the deliverable is a document and the content already exists as markup, there is no model to pick and no conversion to plan for.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;IronPdf&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;invoiceRenderer&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ChromePdfRenderer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;PdfDocument&lt;/span&gt; &lt;span class="n"&gt;invoice&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;invoiceRenderer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;RenderHtmlAsPdf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;invoiceHtml&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Distribution copy, restricting edits without blocking the recipient from opening it&lt;/span&gt;
&lt;span class="n"&gt;invoice&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SecuritySettings&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;UserPassword&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;distributionPassword&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;invoice&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SaveAs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"invoice-2026-08.pdf"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;IronPDF returns a password-protected PDF with selectable text and the template's own layout, from one call on Windows, on &lt;a href="https://ironpdf.com/get-started/linux/" rel="noopener noreferrer"&gt;Linux&lt;/a&gt;, and in a container. The &lt;code&gt;.cshtml&lt;/code&gt; case is one call away too, since the same renderer &lt;a href="https://ironpdf.com/how-to/cshtml-to-pdf-razor/" rel="noopener noreferrer"&gt;takes a Razor view directly&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Everything before that step is ActiveReports territory and stays there. There is no report designer here, no RDL support, no parameter prompts, no cross-tab or drill-down authoring, and no scheduled distribution. The ceiling on ActiveReports is narrower than a feature list suggests, because the model choice, the tier decision, and the tag interpreter all apply equally to a pipeline that only calls the export method. Most teams running both split it that way, and the &lt;a href="https://ironpdf.com/tutorials/crystal-reports-alternative-csharp/" rel="noopener noreferrer"&gt;renderer-side pattern is worked through here&lt;/a&gt;. IronPDF has a &lt;a href="https://ironpdf.com/licensing/" rel="noopener noreferrer"&gt;free trial&lt;/a&gt; for putting one of your existing report outputs through it before deciding.&lt;/p&gt;

&lt;p&gt;Has anyone here actually converted a Section report to RDL in anger? Tell us in the comments how much of it survived, because the documented loss list and the lived experience of that migration are not always the same length.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;ActiveReports, MESCIUS, and GrapeCity are trademarks of their owners and this piece is not affiliated with the company. The pricing, migration behaviour, release, and CVE details above are drawn from MESCIUS's own documentation, NVD, and the Zero Day Initiative as they stood at the time of writing. If a detail has changed since, correct us in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>pdf</category>
      <category>security</category>
    </item>
    <item>
      <title>SSRS in 2026: The Report Server You Still Have to Run</title>
      <dc:creator>IronSoftware</dc:creator>
      <pubDate>Sat, 29 Aug 2026 01:16:16 +0000</pubDate>
      <link>https://dev.to/ironsoftware/ssrs-in-2026-the-report-server-you-still-have-to-run-4jbp</link>
      <guid>https://dev.to/ironsoftware/ssrs-in-2026-the-report-server-you-still-have-to-run-4jbp</guid>
      <description>&lt;p&gt;Strip a report server down and there are three jobs inside it. Something authors a layout. Something binds data to that layout and paginates it. Something turns the paginated result into a file and delivers it. SQL Server Reporting Services does all three, and the price of the first two is a Windows service, a catalog database, and a web portal that has to be patched, backed up, and staffed for as long as the reports exist. When a team's actual requirement is only the third job, &lt;a href="https://ironpdf.com/tutorials/html-to-pdf/" rel="noopener noreferrer"&gt;turning markup into a PDF&lt;/a&gt;, the other two arrive anyway.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Full disclosure. We build IronPDF at Iron Software, and this read looks at where SSRS's Windows-only host and SOAP-era export path cost a team, and where IronPDF returns the same PDF from &lt;a href="https://ironpdf.com/how-to/html-string-to-pdf/" rel="noopener noreferrer"&gt;one in-process call&lt;/a&gt; on any operating system.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Are the Three Jobs Inside a Report Server?
&lt;/h2&gt;

&lt;p&gt;The first two jobs are where SSRS earns its install base.&lt;/p&gt;

&lt;p&gt;One RDL definition exports to HTML4.0, HTML5, MHTML, IMAGE, EXCELOPENXML, WORDOPENXML, CSV, PDF, XML, and NULL through &lt;code&gt;rs:Format&lt;/code&gt;, authored once. SSRS reaches all of them from one file, though that file is a report definition its PDF path cannot skip and IronPDF does not require, which is one dependency fewer in the box. Around that sits the distribution layer, which covers email and file-share subscriptions, report history, execution snapshots and caching, and role-based folder security in the portal. Data-driven subscriptions and scale-out web-farm deployment sit in Enterprise. For a shop already licensed for SQL Server Standard, most of that carries no additional line item, and that is the ceiling of what the report server covers, because IronPDF produces one of those ten formats without the Windows host, catalog database, or portal the other nine arrive attached to.&lt;/p&gt;

&lt;p&gt;The commitment question is what that infrastructure costs after the person who configured it moves on. A report server is a stateful service with its own database, authentication surface, and patch cadence, and those obligations persist whether it serves analyst-authored cross-tabs or a nightly invoice run nobody has opened in the designer since 2019. The equivalent obligation for IronPDF is a NuGet package version.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does SSRS Still Need a Windows Host?
&lt;/h2&gt;

&lt;p&gt;SSRS now has a documented end state. The current build is SSRS 2022, version 16.0.1118.33, published 4 February 2026, and Microsoft's Reporting Services consolidation FAQ states that starting with SQL Server 2025, on-premises reporting consolidates under Power BI Report Server and that no new versions of SQL Server Reporting Services will be released. SSRS 2022 keeps receiving security updates and support through &lt;strong&gt;11 January 2033&lt;/strong&gt;, in line with the SQL Server 2022 lifecycle. The same FAQ describes PBIRS as a superset of SSRS, so there is a migration target, but it is still a migration with a date on it.&lt;/p&gt;

&lt;p&gt;Neither product leaves Windows. Microsoft's unsupported-features table for SQL Server on Linux lists Reporting Services outright, with guidance to run SSRS on Windows and host only its catalog databases on SQL Server on Linux. A team standardising on &lt;a href="https://ironpdf.com/get-started/linux/" rel="noopener noreferrer"&gt;Linux containers&lt;/a&gt; keeps one Windows host in the topology specifically to turn a report into a PDF, and that host is a deployment surface, a licence, and a patching obligation nothing else in the stack needs.&lt;/p&gt;

&lt;p&gt;The HTML story inside a report is narrower than the export list suggests. A report textbox interprets a fixed tag set of &lt;code&gt;&amp;lt;a href&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;font&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; through &lt;code&gt;&amp;lt;h6&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;b&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;i&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;u&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;s&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;ol&amp;gt;&lt;/code&gt;, and &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt;, and Microsoft's documentation on importing HTML into a paginated report states that any other markup is ignored during processing, with malformed HTML falling back to plain text. The same page states that relative CSS length units are ignored and not supported, naming em, ex, px, %, and rem, so a print stylesheet built on rem or percentage widths is not degraded here, it is dropped.&lt;/p&gt;

&lt;p&gt;On security the record is short and old, though not empty. CVE-2020-0618 is the one that still matters, an 8.8-severity remote code execution flaw where an untrusted &lt;code&gt;ViewState&lt;/code&gt; parameter is deserialized through &lt;code&gt;LosFormatter&lt;/code&gt;, patched 11 February 2020, and added to CISA's Known Exploited Vulnerabilities catalog on 18 September 2024, four years after the fix shipped. Alongside it sit CVE-2019-1332 at 6.1, a reflected cross-site scripting issue affecting SQL Server 2017 and 2019 Reporting Services and Power BI Report Server, and CVE-2020-1044, an attachment upload validation bypass that Microsoft scores 4.3 and NVD scores 6.5. Older GDI+ entries from 2009 attach to SQL Server 2000 Reporting Services SP2 rather than anything currently deployed, so the modern record is thin. Setting the miscounted historical entries aside, what a team still signs up for is an internet-facing ASP.NET application whose attack surface someone has to own until 2033.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Does IronPDF Replace the SOAP Contract?
&lt;/h2&gt;

&lt;p&gt;Producing a PDF from code has not modernised alongside the rest of the stack. It is a URL query string built from &lt;code&gt;rs:Format=PDF&lt;/code&gt; against &lt;code&gt;ReportServer&lt;/code&gt;, or a SOAP call to &lt;code&gt;ReportExecutionService.Render&lt;/code&gt; against &lt;code&gt;ReportExecution2005.asmx&lt;/code&gt;. SSRS has shipped an OpenAPI-compliant REST API since 2017, but Microsoft's reference scopes it to catalog operations covering folders, datasets, subscriptions, and refresh plans, with no render or export operation listed. Calling SSRS for a PDF from &lt;a href="https://ironpdf.com/tutorials/dotnet-core-pdf-generating/" rel="noopener noreferrer"&gt;a .NET 8 or .NET 10 service&lt;/a&gt; means one of those two older paths.&lt;/p&gt;

&lt;p&gt;The same job in-process is a method on an object your application already owns.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;IronPdf&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;invoiceRenderer&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ChromePdfRenderer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// Print media, not screen, so the stylesheet's page rules actually apply&lt;/span&gt;
&lt;span class="n"&gt;invoiceRenderer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RenderingOptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CssMediaType&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;IronPdf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Rendering&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PdfCssMediaType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Print&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;PdfDocument&lt;/span&gt; &lt;span class="n"&gt;invoice&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;invoiceRenderer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;RenderHtmlAsPdf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ReadAllText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"invoice.html"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="n"&gt;invoice&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SaveAs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"invoice-2026-08.pdf"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;IronPDF writes a single searchable PDF with the template's own fonts, margins, and page breaks applied, and the same call runs on Windows, on Linux, and &lt;a href="https://ironpdf.com/get-started/ironpdf-docker/" rel="noopener noreferrer"&gt;inside a Docker image&lt;/a&gt;. There is no catalog database in the path, no ASMX endpoint to authenticate against, no host that has to be Windows, and the relative CSS units a report textbox discards are applied normally.&lt;/p&gt;

&lt;p&gt;Teams already producing markup from MVC hand IronPDF &lt;a href="https://ironpdf.com/how-to/cshtml-to-pdf-razor/" rel="noopener noreferrer"&gt;the Razor view itself&lt;/a&gt;, and the page furniture a report definition would carry is set through &lt;a href="https://ironpdf.com/how-to/rendering-options/" rel="noopener noreferrer"&gt;rendering options&lt;/a&gt; on the same renderer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Document Step, Row by Row
&lt;/h2&gt;

&lt;p&gt;Narrowed to the one step both tools perform, producing a file.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability (document output only)&lt;/th&gt;
&lt;th&gt;SSRS 2022&lt;/th&gt;
&lt;th&gt;IronPDF&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;PDF output from code&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;rs:Format=PDF&lt;/code&gt; URL or SOAP &lt;code&gt;ReportExecutionService.Render&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;In-process &lt;code&gt;ChromePdfRenderer.RenderHtmlAsPdf&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HTML in the document body&lt;/td&gt;
&lt;td&gt;14 documented tags, others ignored during processing&lt;/td&gt;
&lt;td&gt;0 excluded, full HTML, CSS, and JavaScript&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Relative CSS units such as &lt;code&gt;rem&lt;/code&gt; and &lt;code&gt;%&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Ignored and not supported&lt;/td&gt;
&lt;td&gt;Applied as written&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Host operating systems&lt;/td&gt;
&lt;td&gt;1, Windows&lt;/td&gt;
&lt;td&gt;3, Windows, Linux, and macOS from one package&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Merging or stamping an existing PDF&lt;/td&gt;
&lt;td&gt;Outside the report engine&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;PdfDocument.Merge&lt;/code&gt; and &lt;a href="https://ironpdf.com/how-to/stamp-text-image/" rel="noopener noreferrer"&gt;stamp&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Report designer, subscriptions, scheduled distribution&lt;/td&gt;
&lt;td&gt;Yes, the platform's core value&lt;/td&gt;
&lt;td&gt;0 to licence, patch, or staff&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Table 1. Document output only, SSRS 2022 against IronPDF 2026.8.1, excluding the designer, portal, and distribution surface.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The row that decides most projects is the fourth. One supported host operating system against three is a deployment topology rather than a feature gap, and it is fixed on the day the report server goes in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which Half of the Work Goes Where?
&lt;/h2&gt;

&lt;p&gt;Where that stops is upstream. If an analyst authors the report, if a subscription mails it to a distribution list every Monday, or if one definition has to reach Excel, Word, and CSV as well as PDF, a rendering library has none of it and is not growing any of it. Most SQL Server shops end up running both, with SSRS keeping the analyst-authored, parameterised work and application code calling IronPDF for the invoices, contracts, and labels a designer was never in the loop for.&lt;/p&gt;

&lt;p&gt;For a team weighing that split, the &lt;a href="https://ironpdf.com/tutorials/crystal-reports-alternative-csharp/" rel="noopener noreferrer"&gt;reporting-tool replacement walkthrough&lt;/a&gt; covers the same pattern end to end, and IronPDF has a &lt;a href="https://ironpdf.com/licensing/" rel="noopener noreferrer"&gt;free trial&lt;/a&gt; if you want to run one of your existing report outputs through a render call first.&lt;/p&gt;

&lt;p&gt;If you are running SSRS today, how much of it is analyst-authored reporting and how much is an application generating documents that happen to go through the report server because it was already there? Tell us in the comments, because that ratio is the part nobody seems to measure until a migration forces it.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;SQL Server, SSRS, and Power BI Report Server are Microsoft trademarks and this piece is not affiliated with Microsoft. The lifecycle dates, platform support, HTML and CSS behaviour, and CVE details above are drawn from Microsoft Learn, NVD, and CISA as they stood at the time of writing. If a detail has changed since, correct us in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>pdf</category>
      <category>sqlserver</category>
    </item>
    <item>
      <title>DevExpress Reporting in 2026: Where HTML-to-PDF Lives</title>
      <dc:creator>IronSoftware</dc:creator>
      <pubDate>Thu, 27 Aug 2026 20:13:07 +0000</pubDate>
      <link>https://dev.to/ironsoftware/devexpress-reporting-in-2026-where-html-to-pdf-lives-5g75</link>
      <guid>https://dev.to/ironsoftware/devexpress-reporting-in-2026-where-html-to-pdf-lives-5g75</guid>
      <description>&lt;p&gt;Four names circulate for what people mean by DevExpress reporting, and picking the wrong one costs a subscription. XtraReports is the API and namespace. DevExpress Reporting is the marketing name for the same product, and the docs use both interchangeably. DevExpress Report Server is a separate hosting service for publishing and scheduling, priced separately. The Office File API is a fourth product entirely, and it is the one holding the general-purpose &lt;a href="https://ironpdf.com/tutorials/html-to-pdf/" rel="noopener noreferrer"&gt;HTML-to-PDF converter&lt;/a&gt;. Buying Reporting and expecting the fourth thing is a procurement mistake, not a coding one.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Full disclosure. We build IronPDF at Iron Software, and this read looks at where DevExpress Reporting's second purchase for a working HTML-to-PDF converter costs a team, and where IronPDF renders &lt;a href="https://ironpdf.com/how-to/html-string-to-pdf/" rel="noopener noreferrer"&gt;the same page&lt;/a&gt; from one package.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Which DevExpress Product Are You Buying?
&lt;/h2&gt;

&lt;p&gt;Inside DevExpress Reporting there are two ways to get HTML-flavoured content into a report, and neither is a browser. The first is &lt;code&gt;XRLabel.AllowMarkupText&lt;/code&gt;, a small markup dialect covering line breaks, colour, bold, and size. The second is &lt;code&gt;XRRichText&lt;/code&gt;, which imports HTML and RTF through the DevExpress word-processing document model.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Two entry points, two different engines, neither a browser&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;summaryLabel&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;XRLabel&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;AllowMarkupText&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;b&amp;gt;Q3&amp;lt;/b&amp;gt; summary"&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;bodyBlock&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;XRRichText&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;bodyBlock&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Html&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ReadAllText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"statement-body.html"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both put content on the page. Neither guarantees the result matches what a browser draws, and DevExpress says so directly. Its HTML support limitations page states that the component is not designed to fully support the HTML format, that interpretation is limited and optimised for documents rather than web pages, and that it can display a document differently from a browser even when every tag imported. Some HTML tags and CSS attributes have no counterpart in the Open XML and RTF models underneath.&lt;/p&gt;

&lt;p&gt;For a report built from DevExpress's own controls that is a non-issue. For a layout designed as a web page it is a rewrite, because the &lt;a href="https://ironpdf.com/how-to/docx-to-pdf/" rel="noopener noreferrer"&gt;document-to-PDF path for Word content&lt;/a&gt; is a different problem from rendering a stylesheet, and IronPDF is the one of the two built for the stylesheet.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Redistribution Grants You
&lt;/h2&gt;

&lt;p&gt;Two things about DevExpress's commercial terms hold up under a direct read.&lt;/p&gt;

&lt;p&gt;Its EULA states that the company charges no royalties for redistribution of components integrated into applications you engineer, and rights of use survive a lapsed subscription, so a team that stops renewing keeps a working licensed build and loses only updates and support. The End-User Report Designer is redistributable on the same terms, so shipping report authoring to your own customers adds no per-deployment fee. That is a materially different commitment profile from a model metering by server or by end user. IronPDF charges &lt;a href="https://ironpdf.com/get-started/license-keys/" rel="noopener noreferrer"&gt;per developer&lt;/a&gt; once and redistributes with no royalty on the same basis, without a designer to licence alongside it.&lt;/p&gt;

&lt;p&gt;Platform reach is the second. The current line supports WinForms, WPF, ASP.NET Web Forms, MVC, ASP.NET Core, Blazor Server, Blazor WebAssembly, and .NET MAUI for Android and iOS, and the Report Designer runs inside Visual Studio, VS Code, and JetBrains Rider. Version 26.1 shipped in June 2026 on the usual twice-yearly cadence, targeting .NET 8 through .NET 10 alongside .NET Framework 4.6.2 and later, with PDF/UA-2 export added to the PDF engine. Cross-tabs, subreports, chart types in the dozens, and parameter-driven queries against a live data source sit on top of that, and that spread is the ceiling of what the reporting subscription reaches, because IronPDF covers the same targets from one package with no designer to install per IDE.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Does the HTML-to-PDF Converter Live?
&lt;/h2&gt;

&lt;p&gt;The one place DevExpress documents complete HTML-to-PDF conversion is &lt;code&gt;RichEditDocumentServer.ExportToPdf&lt;/code&gt;, which lives in &lt;code&gt;DevExpress.RichEdit.Core&lt;/code&gt; and is documented under the Office File API rather than under Reporting. A team already paying $799.99 per developer in the first year for Reporting, with a $399.99 renewal, is looking at a second subscription to get a general-purpose converter, and it still runs through the same word-processing engine with the same document-not-web-page limitations.&lt;/p&gt;

&lt;p&gt;Deployment adds a second surprise. The default bitmap path in &lt;code&gt;XRPdfContent&lt;/code&gt;, &lt;code&gt;CreateDXBitmap&lt;/code&gt;, is documented as not working in Linux environments or on certain Azure hosting plans. A fix exists, adding &lt;code&gt;DevExpress.Pdf.SkiaRenderer&lt;/code&gt; and, on Linux, &lt;code&gt;SkiaSharp.NativeAssets.Linux&lt;/code&gt;, but the default configuration does not apply it and a deployment has to know that before the first container ships. IronPDF reaches &lt;a href="https://ironpdf.com/get-started/linux/" rel="noopener noreferrer"&gt;Linux&lt;/a&gt; and &lt;a href="https://ironpdf.com/how-to/azure/" rel="noopener noreferrer"&gt;Azure App Service&lt;/a&gt; from one package and one call, the same ones it uses on Windows, so the difference is not capability but how much environment-specific knowledge the team carries forward.&lt;/p&gt;

&lt;p&gt;One upgrade trigger gets exaggerated, so here it is precisely. Reporting is sold standalone, and buying it does not require Universal. What holds up is that the Reporting subscription's WinForms integration covers &lt;code&gt;ReportPrintTool&lt;/code&gt; and &lt;code&gt;ReportDesignTool&lt;/code&gt; only, and DevExpress's own documentation states that adding further DevExpress UI controls, meaning new panels, buttons, or menus, requires a subscription including those controls. Customising the designer chrome therefore means WinForms at $1,099.99 first year and $549.99 renewal, or Universal at $2,299.99 first year and $1,149.99 renewal.&lt;/p&gt;

&lt;h2&gt;
  
  
  One CVE, Two Scores, and No Fixed Version on Record
&lt;/h2&gt;

&lt;p&gt;Two CVEs name the reporting component, and both deserve care instead of a headline number.&lt;/p&gt;

&lt;p&gt;CVE-2023-35814 is described by NVD as a failure in DevExpress before 23.1.3 to properly protect XtraReport serialized data in ASP.NET web forms, classed CWE-502. The scores diverge sharply, because NVD's primary assessment is 9.8 critical while the CNA's own secondary assessment on the same record is 3.5 low. The practical answer sits in the affected-version list rather than either score, covering everything before 21.2.12 plus the 22.1, 22.2, and 23.x lines up to the 23.1.3 fix.&lt;/p&gt;

&lt;p&gt;CVE-2021-36483 is the older one. NVD rates it 8.8 high, published 4 August 2021, and describes insecure deserialization in &lt;code&gt;DevExpress.XtraReports.UI&lt;/code&gt; through v21.1, with references to DevExpress Support Center tickets and ZDI-22-341. NVD lists no fixed version for it. That is a statement about the public record, not a claim the vendor ignored it, and anyone still on a 21.x build should treat the deserialization path as reachable rather than wait for a database field to fill in. Beyond those two, NVD carries other CVEs against DevExpress products naming no specific component, so confirm the affected assembly before citing one. Either way, deserialization surface is a category of exposure that &lt;a href="https://ironpdf.com/tutorials/csharp-pdf-security-complete-tutorial/" rel="noopener noreferrer"&gt;a PDF pipeline built on rendering and encryption&lt;/a&gt; never opens.&lt;/p&gt;

&lt;h2&gt;
  
  
  Document Output at Two Subscription Prices
&lt;/h2&gt;

&lt;p&gt;Scoped to document output alone.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability (document output only)&lt;/th&gt;
&lt;th&gt;DevExpress Reporting&lt;/th&gt;
&lt;th&gt;IronPDF&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;PDF from a designed report&lt;/td&gt;
&lt;td&gt;Native &lt;code&gt;XRDocument&lt;/code&gt; export&lt;/td&gt;
&lt;td&gt;Renders markup, a URL, or a Razor view through &lt;code&gt;ChromePdfRenderer&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HTML and CSS to PDF&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;AllowMarkupText&lt;/code&gt; dialect or &lt;code&gt;XRRichText&lt;/code&gt;, no browser engine&lt;/td&gt;
&lt;td&gt;Chromium rendering of HTML, CSS, and JavaScript&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Razor view or URL rendered directly&lt;/td&gt;
&lt;td&gt;Bound into a report definition first&lt;/td&gt;
&lt;td&gt;Direct, via &lt;code&gt;RenderUrlAsPdf&lt;/code&gt; or a &lt;code&gt;.cshtml&lt;/code&gt; view&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Editing an existing third-party PDF&lt;/td&gt;
&lt;td&gt;Export pipeline only&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://ironpdf.com/how-to/merge-or-split-pdfs/" rel="noopener noreferrer"&gt;Merge, split&lt;/a&gt;, stamp, &lt;a href="https://ironpdf.com/how-to/create-forms/" rel="noopener noreferrer"&gt;fill forms&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Per-developer cost for the HTML-to-PDF path&lt;/td&gt;
&lt;td&gt;$799.99 first year for Reporting, plus a second subscription for the converter&lt;/td&gt;
&lt;td&gt;1 licence, 1 product, 0 converters to add&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Table 1. Document output only, DevExpress Reporting against IronPDF, excluding the designer, scheduler, and data-binding surface.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The last row is the one an architect signs off on. Every other row is a capability question, while that one is a renewal repeating annually for as long as the pipeline exists.&lt;/p&gt;

&lt;h2&gt;
  
  
  IronPDF Needs No Report Project
&lt;/h2&gt;

&lt;p&gt;When the content is already markup and the deliverable is a file, the report definition is the step that disappears.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;IronPdf&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;reportRenderer&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ChromePdfRenderer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// Print media so the template's @page rules and page breaks are honoured&lt;/span&gt;
&lt;span class="n"&gt;reportRenderer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RenderingOptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CssMediaType&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;IronPdf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Rendering&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PdfCssMediaType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Print&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;reportRenderer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RenderingOptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;MarginTop&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;PdfDocument&lt;/span&gt; &lt;span class="n"&gt;quarterly&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;reportRenderer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;RenderHtmlAsPdf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;quarterlyHtml&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;quarterly&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SaveAs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"quarterly-2026-q3.pdf"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The PDF IronPDF returns keeps selectable text and the source stylesheet's layout intact, including the CSS constructs that importer has no counterpart for. Teams generating markup from MVC can &lt;a href="https://ironpdf.com/how-to/cshtml-to-pdf-razor/" rel="noopener noreferrer"&gt;render the Razor view itself&lt;/a&gt;, and page furniture is set through &lt;a href="https://ironpdf.com/how-to/rendering-options/" rel="noopener noreferrer"&gt;rendering options&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Everything upstream of that call belongs to DevExpress. A business user designing their own report, a parameter-driven query against a live data source, a cross-tab or a subreport all belong to the platform. DevExpress Reporting's ceiling is that all of it is priced into the export path too, including for a workload that never opens the designer. The &lt;a href="https://ironpdf.com/tutorials/crystal-reports-alternative-csharp/" rel="noopener noreferrer"&gt;pattern for the renderer half&lt;/a&gt; is worked through end to end. IronPDF has a &lt;a href="https://ironpdf.com/licensing/" rel="noopener noreferrer"&gt;free trial&lt;/a&gt; for running one of your existing report outputs through it first.&lt;/p&gt;

&lt;p&gt;If you have shipped DevExpress Reporting to a Linux container, did the Skia packages come up during evaluation or during the first failed deploy? Drop a comment, because that ordering seems to decide how people remember the experience.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DevExpress and XtraReports are trademarks of their owner and this piece is not affiliated with the company. The pricing, licensing, HTML support, Linux export, and CVE details above are drawn from DevExpress's own documentation and NVD as they stood at the time of writing. If a detail has changed since, correct us in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>pdf</category>
      <category>reporting</category>
    </item>
    <item>
      <title>FastReport.OpenSource in 2026: The PDF Is an Image</title>
      <dc:creator>IronSoftware</dc:creator>
      <pubDate>Thu, 27 Aug 2026 18:12:36 +0000</pubDate>
      <link>https://dev.to/ironsoftware/fastreportopensource-in-2026-the-pdf-is-an-image-gg0</link>
      <guid>https://dev.to/ironsoftware/fastreportopensource-in-2026-the-pdf-is-an-image-gg0</guid>
      <description>&lt;p&gt;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 &lt;a href="https://ironpdf.com/how-to/extract-text-and-images/" rel="noopener noreferrer"&gt;writing selectable text&lt;/a&gt;. This is a retention-horizon problem, and it does not surface during evaluation.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Full disclosure. We build IronPDF at Iron Software, and this read looks at where FastReport's rasterised open-source &lt;a href="https://ironpdf.com/tutorials/html-to-pdf/" rel="noopener noreferrer"&gt;PDF export&lt;/a&gt; costs a team years later, and where IronPDF writes selectable vector text on every call.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Is the MIT Edition's PDF an Image?
&lt;/h2&gt;

&lt;p&gt;The open-source edition's PDF export is not a limited text exporter. It is a different mechanism. &lt;code&gt;PDFSimpleExport&lt;/code&gt; draws each report page into a &lt;code&gt;Bitmap&lt;/code&gt; 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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Rasterizing a page is reasonable when it is chosen. Thumbnails and previews want exactly that, and &lt;a href="https://ironpdf.com/how-to/rasterize-pdf-to-images/" rel="noopener noreferrer"&gt;rasterizing on demand&lt;/a&gt; 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 &lt;a href="https://ironpdf.com/how-to/pdf-compression/" rel="noopener noreferrer"&gt;compression pass&lt;/a&gt; recovers text that was never written.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which Exporter Writes Text and Which Writes Pixels?
&lt;/h2&gt;

&lt;p&gt;Scoped to how each option gets a PDF out.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect (PDF output only)&lt;/th&gt;
&lt;th&gt;FastReport .NET (commercial)&lt;/th&gt;
&lt;th&gt;FastReport.OpenSource&lt;/th&gt;
&lt;th&gt;IronPDF&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;What produces the file&lt;/td&gt;
&lt;td&gt;A &lt;code&gt;.frx&lt;/code&gt; template exported through &lt;code&gt;PDFExport&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;The same &lt;code&gt;.frx&lt;/code&gt; workflow via the &lt;code&gt;PdfSimple&lt;/code&gt; plugin&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;ChromePdfRenderer&lt;/code&gt; against markup, a file, or a URL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;How pages are written&lt;/td&gt;
&lt;td&gt;Vector content with embedded fonts&lt;/td&gt;
&lt;td&gt;Each page drawn to a &lt;code&gt;Bitmap&lt;/code&gt; and embedded&lt;/td&gt;
&lt;td&gt;Vector content with embedded fonts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text in the output&lt;/td&gt;
&lt;td&gt;Selectable and searchable&lt;/td&gt;
&lt;td&gt;Not selectable, the page is an image&lt;/td&gt;
&lt;td&gt;Selectable, searchable, &lt;a href="https://ironpdf.com/how-to/extract-text-and-images/" rel="noopener noreferrer"&gt;extractable&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Format conformance&lt;/td&gt;
&lt;td&gt;PDF 1.5 and 1.7, PDF/A, PDF/X&lt;/td&gt;
&lt;td&gt;Basic PDF container&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://ironpdf.com/how-to/pdfa/" rel="noopener noreferrer"&gt;PDF/A-3 and PDF/UA&lt;/a&gt;, selectable PDF version&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost to reach selectable text&lt;/td&gt;
&lt;td&gt;$499 to $1,499 per developer depending on SKU&lt;/td&gt;
&lt;td&gt;Not reachable on this edition&lt;/td&gt;
&lt;td&gt;1 licence, 0 editions to choose&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Table 1. PDF output only, the two FastReport editions against IronPDF, excluding the report designer and data connectivity.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Ships in the MIT Edition
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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 &lt;code&gt;ScriptSecurity&lt;/code&gt; feature that let a report template reach &lt;code&gt;GetType&lt;/code&gt;, &lt;code&gt;typeof&lt;/code&gt;, &lt;code&gt;DllImport&lt;/code&gt;, &lt;code&gt;LoadLibrary&lt;/code&gt;, and &lt;code&gt;GetProcAddress&lt;/code&gt;. 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 &lt;code&gt;System.Data.SqlClient&lt;/code&gt; 4.8.5, reaching FastReport only as a transitive dependency of the &lt;code&gt;FastReport.Data.MsSql&lt;/code&gt; 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.&lt;/p&gt;

&lt;p&gt;Fast Reports also solved a .NET platform problem instead of pointing at a workaround. &lt;code&gt;System.Drawing.Common&lt;/code&gt; 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 &lt;code&gt;FastReport.Core.Skia&lt;/code&gt;, a SkiaSharp-based renderer shipped in 2022 and still the recommended path for &lt;a href="https://ironpdf.com/get-started/linux/" rel="noopener noreferrer"&gt;non-Windows rendering&lt;/a&gt; today, rather than the stale &lt;code&gt;System.Drawing.EnableUnixSupport&lt;/code&gt; switch that Microsoft's own breaking-change documentation says was removed in .NET 7. Getting &lt;a href="https://ironpdf.com/how-to/manage-fonts/" rel="noopener noreferrer"&gt;font handling&lt;/a&gt; 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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Selectable Text Without an Edition Decision
&lt;/h2&gt;

&lt;p&gt;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.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;IronPdf&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;invoiceRenderer&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ChromePdfRenderer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;PdfDocument&lt;/span&gt; &lt;span class="n"&gt;invoice&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;invoiceRenderer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;RenderHtmlAsPdf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;BuildInvoiceHtml&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;order&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="n"&gt;invoice&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SaveAs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"invoice-2021-03.pdf"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;IronPDF writes vector text with embedded fonts, so seven years later the archive search finds it and &lt;a href="https://ironpdf.com/how-to/csharp-parse-pdf/" rel="noopener noreferrer"&gt;text extraction in code&lt;/a&gt; reads it back. The same renderer &lt;a href="https://ironpdf.com/how-to/cshtml-to-pdf-razor/" rel="noopener noreferrer"&gt;takes a Razor view&lt;/a&gt; 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.&lt;/p&gt;

&lt;p&gt;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 &lt;a href="https://ironpdf.com/tutorials/crystal-reports-alternative-csharp/" rel="noopener noreferrer"&gt;renderer-side pattern is written up in full&lt;/a&gt; if that split is on the table. IronPDF has a &lt;a href="https://ironpdf.com/licensing/" rel="noopener noreferrer"&gt;free trial&lt;/a&gt; for testing text extraction against your own generated output first.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;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.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>pdf</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Telerik Reporting in 2026: What $499 a Year Commits You To</title>
      <dc:creator>IronSoftware</dc:creator>
      <pubDate>Thu, 27 Aug 2026 18:11:18 +0000</pubDate>
      <link>https://dev.to/ironsoftware/telerik-reporting-in-2026-what-499-a-year-commits-you-to-52gi</link>
      <guid>https://dev.to/ironsoftware/telerik-reporting-in-2026-what-499-a-year-commits-you-to-52gi</guid>
      <description>&lt;p&gt;$499, $599, or $999 per developer per year. Those are the three Telerik Reporting subscription tiers on Progress's own purchase page, separated only by support response time and incident count. Lite gives 72-hour response and up to 10 incidents, Priority drops that to 24 hours with unlimited incidents, and Ultimate adds phone and remote assistance. Runtime redistribution carries no royalty at any tier. The number that decides an architecture is rarely the sticker price. It is what the licence turns into once it lives in a build pipeline, and how much of it a workload that only needs &lt;a href="https://ironpdf.com/tutorials/html-to-pdf/" rel="noopener noreferrer"&gt;HTML turned into a PDF&lt;/a&gt; ever touches.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Full disclosure. We build IronPDF at Iron Software, and this read looks at where Telerik Reporting's build-time licence key and table-less &lt;code&gt;HtmlTextBox&lt;/code&gt; cost a team, and where IronPDF renders &lt;a href="https://ironpdf.com/how-to/html-string-to-pdf/" rel="noopener noreferrer"&gt;the same markup&lt;/a&gt; with a key applied at runtime.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What $499 a Year Buys
&lt;/h2&gt;

&lt;p&gt;Eight output formats from one definition. One report definition renders to PDF, Word, Excel, PowerPoint, MHTML, CSV, RTF, and every standard image format through a single &lt;code&gt;ReportProcessor&lt;/code&gt; call, so a team that needs the same layout in four formats has bought the whole matrix once. IronPDF covers one of those formats and covers it without the report definition the other seven are authored into.&lt;/p&gt;

&lt;p&gt;Viewer coverage is wide. HTML5 and JavaScript, ASP.NET Core, MVC, Web Forms, native and wrapped Angular, React, native and wrapped Blazor, WPF, WinForms, and WinUI all ship in the box, so a report authored once embeds in almost any .NET front end already in the estate. The Web Report Designer is included in the subscription and runs against a REST service on .NET Framework 4.6.2 or .NET 8 and later, so non-developers can adjust a report without a desktop install. IronPDF reaches those same front ends by returning a file, so there is no viewer control to match per framework.&lt;/p&gt;

&lt;p&gt;The cadence is quarterly and predictable. The current release, 2026 Q3 (20.2.26.812), went out 11 August 2026 and added Aztec barcode encoding, faster Excel generation, and public nuget.org availability alongside the private Telerik feed. That cadence is the ceiling of what the subscription buys, because IronPDF shipped 2026.8.1 on 3 August 2026 and moves with the framework rather than a quarterly train.&lt;/p&gt;

&lt;h2&gt;
  
  
  The PDF Path, Side by Side
&lt;/h2&gt;

&lt;p&gt;Scoped strictly to producing a document file.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability (document output only)&lt;/th&gt;
&lt;th&gt;Telerik Reporting&lt;/th&gt;
&lt;th&gt;IronPDF&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Renders a defined layout to PDF&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;ReportProcessor.RenderReport&lt;/code&gt; against a report definition&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;ChromePdfRenderer.RenderHtmlAsPdf&lt;/code&gt; against markup or a URL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HTML in the document body&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;HtmlTextBox&lt;/code&gt; tag allowlist, no &lt;code&gt;table&lt;/code&gt; tag&lt;/td&gt;
&lt;td&gt;Chromium rendering of full HTML, CSS, and JavaScript&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Input types the render call accepts&lt;/td&gt;
&lt;td&gt;1, a report definition&lt;/td&gt;
&lt;td&gt;4, an HTML string, a file, a URL, or a Razor view&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Post-render document work&lt;/td&gt;
&lt;td&gt;Bundled document-processing libraries&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;PdfDocument.Merge&lt;/code&gt;, &lt;a href="https://ironpdf.com/how-to/merge-or-split-pdfs/" rel="noopener noreferrer"&gt;split&lt;/a&gt;, stamp, encrypt, &lt;a href="https://ironpdf.com/how-to/rasterize-pdf-to-images/" rel="noopener noreferrer"&gt;rasterize&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Headless rendering in a container&lt;/td&gt;
&lt;td&gt;SDK for .NET 8 to 10, Linux via SkiaSharp&lt;/td&gt;
&lt;td&gt;1 package, .NET Framework 4.6.2 to .NET 10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Licence checkpoint&lt;/td&gt;
&lt;td&gt;Per-developer key validated at build time from 2025 Q1 onward&lt;/td&gt;
&lt;td&gt;1 key, applied at runtime in code&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Table 1. Document output only, Telerik Reporting against IronPDF, excluding the designer and data-binding surface.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The two products overlap on one row of a much longer feature list, and on that row the constraints run in opposite directions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Else Does the Export Path Charge For?
&lt;/h2&gt;

&lt;p&gt;Each is a property of the export path, not a missing reporting feature.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Telerik's &lt;code&gt;HtmlTextBox&lt;/code&gt; has no table tag:&lt;/strong&gt; the report item accepts &lt;code&gt;font&lt;/code&gt;, &lt;code&gt;strong&lt;/code&gt;, &lt;code&gt;b&lt;/code&gt;, &lt;code&gt;em&lt;/code&gt;, &lt;code&gt;i&lt;/code&gt;, &lt;code&gt;u&lt;/code&gt;, &lt;code&gt;sub&lt;/code&gt;, &lt;code&gt;sup&lt;/code&gt;, &lt;code&gt;a&lt;/code&gt;, &lt;code&gt;ol&lt;/code&gt;, &lt;code&gt;ul&lt;/code&gt;, &lt;code&gt;li&lt;/code&gt;, &lt;code&gt;div&lt;/code&gt;, &lt;code&gt;span&lt;/code&gt;, &lt;code&gt;p&lt;/code&gt;, &lt;code&gt;br&lt;/code&gt;, &lt;code&gt;center&lt;/code&gt;, and &lt;code&gt;img&lt;/code&gt;, with inline images added in 20.0.26.211, plus a limited CSS subset covering borders, padding, alignment, and font properties. Progress's own formatting documentation states that the HtmlTextBox does not support the table tag and directs developers to the native Table, Crosstab, and List report items instead. An invoice built as an HTML table is a rebuild rather than a paste, where IronPDF renders that same table, and the CSS around it, exactly as the browser drew it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The licence became a build dependency:&lt;/strong&gt; from 2025 Q1 (19.0.25.211) onward, Telerik Reporting validates a per-developer key at build time, read from a &lt;code&gt;telerik-license.txt&lt;/code&gt; file, an environment variable, or the project root. Progress documents build errors and warnings in the TKL series, and an invalid or expired licence puts a watermark on every rendered page. A deployed application keeps running after a subscription lapses, but rebuilding and republishing it does not, which turns renewal into a CI/CD concern rather than only a purchasing one. IronPDF applies &lt;a href="https://ironpdf.com/how-to/license-keys/" rel="noopener noreferrer"&gt;its key at runtime in code&lt;/a&gt; instead, so the build machine never needs to know.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Telerik's designers stay on Windows:&lt;/strong&gt; the Visual Studio integrated designer targets .NET Framework projects, and Progress documents that it cannot be extended to support SDK-style projects or .NET Core and .NET 5 and later targets. The standalone desktop designer requires Windows. The rendering engine itself reaches Linux through SkiaSharp, so the constraint lands on authoring, and a team with &lt;a href="https://ironpdf.com/how-to/macos/" rel="noopener noreferrer"&gt;developers on macOS&lt;/a&gt; still keeps a Windows machine in the loop to edit a report, which is a machine an IronPDF template never requires.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How Long Did the 2024 CVE Run Last?
&lt;/h2&gt;

&lt;p&gt;Telerik Reporting's own-code vulnerability record concentrates in a single year and then thins out. During 2024 Progress patched CVE-2024-1801 and CVE-2024-1856, both insecure deserialization and both fixed in 2024 Q1 (18.0.24.130), CVE-2024-4200 and CVE-2024-4202, fixed in 2024 Q2, CVE-2024-6096 at 9.8 critical covering object injection and insecure type resolution, fixed in 18.1.24.709, and CVE-2024-7840 and CVE-2024-8014, fixed in 18.2.24.924. CVE-2024-8048, also fixed in 18.2.24.924, is scoped by NVD to the standalone desktop Report Designer rather than the engine or REST services, and CVE-2024-0832 is specific to the Telerik Reporting installer.&lt;/p&gt;

&lt;p&gt;Two corrections apply to how this record usually gets summarised. The run did not stop in September 2024, because CVE-2024-6097, a 5.3-severity absolute-path information disclosure, was published 12 February 2025 and fixed in 2025 Q1 (19.0.25.211), and its NVD description carries no designer-only scope limit. The older CVE-2017-9140, a 6.1 cross-site scripting issue, sits in &lt;code&gt;Telerik.ReportViewer.WebForms.dll&lt;/code&gt; and was fixed in 11.0.17.406.&lt;/p&gt;

&lt;p&gt;A pair of neighbouring products invite mix-ups here and both deserve naming. Telerik Report Server is a separate product on its own version line with its own advisories, including one on CISA's Known Exploited Vulnerabilities catalog, and none of that belongs to Reporting. Telerik UI for ASP.NET AJAX is a different product again, and it is the one carrying the long history of actively exploited flaws in &lt;code&gt;Telerik.Web.UI.dll&lt;/code&gt;, while Reporting's Web Forms viewer ships in a different assembly. Setting both of those aside, what remains against Reporting's own code is a real 2024 deserialization cluster a team has to stay current with, which is the maintenance side of the subscription arriving on top of the licence fee. IronPDF deserializes no report-definition object graph, so &lt;a href="https://ironpdf.com/tutorials/csharp-pdf-security-complete-tutorial/" rel="noopener noreferrer"&gt;the surface it does carry&lt;/a&gt; is encryption and signing rather than type resolution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Can IronPDF Take the Markup You Already Have?
&lt;/h2&gt;

&lt;p&gt;When the content for the document already exists as HTML, whether from a template engine, an email body, or an MVC view, the render step does not need a report project in front of it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;IronPdf&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;statementRenderer&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ChromePdfRenderer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// A4 with real margins, because no report definition is setting page geometry here&lt;/span&gt;
&lt;span class="n"&gt;statementRenderer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RenderingOptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PaperSize&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;IronPdf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Rendering&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PdfPaperSize&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;A4&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;statementRenderer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RenderingOptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;MarginTop&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;PdfDocument&lt;/span&gt; &lt;span class="n"&gt;statement&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;statementRenderer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;RenderHtmlAsPdf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;statementHtml&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;statement&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SaveAs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;$"statement-&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;customerId&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt;.pdf"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;IronPDF hands back a paginated PDF with selectable text and the template's own CSS table layout intact, with no markup rewritten into report items. The same object &lt;a href="https://ironpdf.com/how-to/cshtml-to-pdf-razor/" rel="noopener noreferrer"&gt;renders a Razor view directly&lt;/a&gt;, and page furniture is configured through &lt;a href="https://ironpdf.com/how-to/rendering-options/" rel="noopener noreferrer"&gt;rendering options&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ironpdf.com/how-to/signing/" rel="noopener noreferrer"&gt;Certificate-based signing&lt;/a&gt; sits on the same returned object rather than a separate export profile.&lt;/p&gt;

&lt;p&gt;A business user opening the report, changing a grouping and rerunning it, or an interactive viewer with parameter prompts and drill-down, is outside what a rendering library does. Telerik Reporting's ceiling is scope, because it stops being the cheaper option once a workload never opens a designer, never binds a parameter, and needs a single format. Plenty of .NET shops run both for exactly that reason, and there is a &lt;a href="https://ironpdf.com/tutorials/crystal-reports-alternative-csharp/" rel="noopener noreferrer"&gt;worked walkthrough of the renderer-side pattern&lt;/a&gt; if you want the shape before deciding. IronPDF has a &lt;a href="https://ironpdf.com/licensing/" rel="noopener noreferrer"&gt;free trial&lt;/a&gt; if you would rather run one of your existing report layouts through it.&lt;/p&gt;

&lt;p&gt;Where does your team draw that line? We are curious how many people are paying a per-developer reporting subscription mainly to reach an export method, so drop a comment if that describes your estate.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Telerik and Progress are trademarks of Progress Software Corporation and this piece is not affiliated with the company. The pricing, release, licensing, HtmlTextBox, and CVE details above are drawn from Progress's own documentation and NVD as they stood at the time of writing. If a detail has changed since, correct us in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>pdf</category>
      <category>reporting</category>
    </item>
    <item>
      <title>Winnovative vs IronPDF: The Per-Object Licence Trap</title>
      <dc:creator>IronSoftware</dc:creator>
      <pubDate>Fri, 21 Aug 2026 21:09:00 +0000</pubDate>
      <link>https://dev.to/ironsoftware/winnovative-vs-ironpdf-the-per-object-licence-trap-2fng</link>
      <guid>https://dev.to/ironsoftware/winnovative-vs-ironpdf-the-per-object-licence-trap-2fng</guid>
      <description>&lt;p&gt;Does a single Winnovative licence key cover an entire deployment, or does it need setting again on every &lt;code&gt;PdfConverter&lt;/code&gt; and &lt;code&gt;Document&lt;/code&gt; object in the codebase? Winnovative's own FAQ carries a standing entry for teams who set the key once and still saw a demo watermark on a second object nobody remembered to touch. Its Next converter renders through a &lt;a href="https://ironpdf.com/tutorials/html-to-pdf/" rel="noopener noreferrer"&gt;Chromium engine&lt;/a&gt;, though neither the vendor's site nor its NuGet listings say which build, and the copyright line still reads &lt;code&gt;Copyright 2007-Winnovative Software Solutions&lt;/code&gt;, the longest continuous run of any budget .NET PDF vendor in this series. Age and stability aren't the issue. The licence scope and the engine version are.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Full disclosure. We build &lt;a href="https://ironpdf.com/tutorials/html-to-pdf/" rel="noopener noreferrer"&gt;IronPDF&lt;/a&gt; at Iron Software, and this read looks at where Winnovative's per-object licence key and a la carte component pricing cost a team, and where IronPDF covers a whole deployment with one application-level key.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Everything below comes from Winnovative's own site, its licence agreement, its FAQ, and the National Vulnerability Database's CVE records, checked directly.&lt;/p&gt;

&lt;p&gt;Rendering HTML through the Next engine looks like this, the same render-then-save shape covered in IronPDF's own &lt;a href="https://ironsoftware.com/suite/blog/using-ironsuite/html-to-pdf-ironpdf-tutorial/" rel="noopener noreferrer"&gt;HTML to PDF tutorial&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Install-Package Winnovative.Pdf.Next.HtmlToPdf.Windows&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Winnovative.Pdf.Next&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;var&lt;/span&gt; &lt;span class="n"&gt;converter&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;HtmlToPdfConverter&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;var&lt;/span&gt; &lt;span class="n"&gt;pdfDocument&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;converter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ConvertUrlAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://example.com/invoice"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;pdfDocument&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"invoice.pdf"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That saves invoice.pdf next to the executable, rendered from the live page rather than a static snapshot of the markup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which Winnovative Licence Does This Deployment Need?
&lt;/h2&gt;

&lt;p&gt;Behind that call, the Next line runs on Windows, Linux, and macOS, on both x64 and ARM64, with Azure and Docker support documented, and it carries real &lt;a href="https://ironsoftware.com/suite/blog/using-ironsuite/async-await-csharp-net10/" rel="noopener noreferrer"&gt;Task-based async&lt;/a&gt; with cancellation tokens. The catalogue is also the widest of the three Romanian-built .NET PDF vendors in this wave, alongside EvoPdf and &lt;a href="https://ironsoftware.com/suite/blog/comparison/compare-selectpdf-vs-ironpdf/" rel="noopener noreferrer"&gt;SelectPdf&lt;/a&gt;, reaching into a standalone Excel library and chart controls. Pricing is a la carte too, the PDF merge component alone costs $250 rather than a full suite.&lt;/p&gt;

&lt;p&gt;None of that tells a procurement review the one thing it needs to sign off, and three basics turn out to be hard to find before a purchase order gets signed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Next engine's version and release history are both unpublished:&lt;/strong&gt; release notes carry no dates, a NuGet publish timestamp is the only way to place a version in time, and the Chromium build behind Next isn't listed anywhere, so a security review checking engine currency against Chromium's own advisory schedule has nothing first-party to check.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The licence key has to be set on every object, not once for the whole application:&lt;/strong&gt; Winnovative's own API reference states that the &lt;code&gt;LicenseKey&lt;/code&gt; property of each &lt;code&gt;PdfConverter&lt;/code&gt; and &lt;code&gt;Document&lt;/code&gt; object needs the purchased key, matching the FAQ entry above.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Buying components one at a time can cost close to double the bundled price:&lt;/strong&gt; HTML to PDF Converter at $450, PDF Merge at $250, &lt;a href="https://ironsoftware.com/enterprise/securedoc/how-to/password-and-permission/" rel="noopener noreferrer"&gt;PDF Security&lt;/a&gt; at $250, and PDF to Text at $250 add up to $1,200 at the deployment tier, against PDF Toolkit PRO's $650 bundle for equivalent capability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The cross-platform reach and async support are there, and buying the right bundle upfront avoids the stacking problem. What it costs is diligence, reconstructing information a vendor normally publishes and pricing the bundle against the a la carte total first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does IronPDF Answer Those Same Questions?
&lt;/h2&gt;

&lt;p&gt;Winnovative's own code has a clean record. NVD returns zero results for a Winnovative keyword search, the GitHub Advisory Database lists no advisories, and Snyk reports no direct vulnerabilities. Current releases carry recent NuGet dates, Next at 20.36.0 and Classic at 20.0.2, and the combined download count across roughly 60 packages sits around 1.18 million, the smallest of the three budget &lt;a href="https://ironsoftware.com/suite/blog/comparison/html-to-pdf-2026-guide/" rel="noopener noreferrer"&gt;.NET PDF converters&lt;/a&gt; in this wave against EvoPdf's roughly 6.5 million and SelectPdf's roughly 9.4 million. EvoPdf, built by the same company, publishes 24-hour and 72-hour support response targets, while Winnovative's own site publishes none, an absence rather than evidence support doesn't respond.&lt;/p&gt;

&lt;p&gt;This render call answers those same open questions before it ever runs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Install-Package IronPdf&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;IronPdf&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;renderer&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ChromePdfRenderer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;PdfDocument&lt;/span&gt; &lt;span class="n"&gt;pdf&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;renderer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;RenderUrlAsPdfAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://example.com/invoice"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;pdf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SaveAs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"invoice.pdf"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That saves invoice.pdf next to the executable, matching what the Next engine just rendered.&lt;/p&gt;

&lt;p&gt;One licence key covers the whole application rather than every object instance, and IronPDF's documentation states the Chromium version directly rather than leaving it open. The same rendering behaves identically across host platforms, checkable against any &lt;a href="https://ironsoftware.com/suite/blog/comparison/csharp-html-to-pdf-library-comparison/" rel="noopener noreferrer"&gt;cross-platform HTML to PDF comparison&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For one narrow capability priced against the bundle correctly, Winnovative Next is the cheaper way in. Everywhere a procurement review needs a dated release history or a published engine version to sign off, IronPDF publishes both before the review starts, with one licence key covering the whole application.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Do Winnovative and IronPDF Line Up?
&lt;/h2&gt;

&lt;p&gt;With both engines answered, here's how the specifics line up side by side, pulled directly from Winnovative's own materials.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;Winnovative&lt;/th&gt;
&lt;th&gt;IronPDF&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Cross-platform support&lt;/td&gt;
&lt;td&gt;Windows, Linux, macOS, x64 and ARM64&lt;/td&gt;
&lt;td&gt;Windows, Linux, macOS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Async API&lt;/td&gt;
&lt;td&gt;Native &lt;code&gt;Task&lt;/code&gt;-based, with cancellation&lt;/td&gt;
&lt;td&gt;Native async/await throughout&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Release notes&lt;/td&gt;
&lt;td&gt;Undated (NuGet publish date is the only proxy)&lt;/td&gt;
&lt;td&gt;Dated changelog&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rendering engine version&lt;/td&gt;
&lt;td&gt;Chromium build not published&lt;/td&gt;
&lt;td&gt;Chromium version documented&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Licence key scope&lt;/td&gt;
&lt;td&gt;Per-object, every &lt;code&gt;PdfConverter&lt;/code&gt; and &lt;code&gt;Document&lt;/code&gt; instance&lt;/td&gt;
&lt;td&gt;Application-level&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Published support response target&lt;/td&gt;
&lt;td&gt;None found&lt;/td&gt;
&lt;td&gt;See ironpdf.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Refund policy&lt;/td&gt;
&lt;td&gt;Declined by default, case-by-case exceptions by email&lt;/td&gt;
&lt;td&gt;See ironpdf.com terms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pricing model&lt;/td&gt;
&lt;td&gt;A la carte, roughly 10 narrow components plus 3 bundles&lt;/td&gt;
&lt;td&gt;Single license covering the full API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Entry list price&lt;/td&gt;
&lt;td&gt;$250 for one narrow component, for example PDF Merge&lt;/td&gt;
&lt;td&gt;Quote-based, see ironpdf.com&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  One key, or a licence per feature?
&lt;/h2&gt;

&lt;p&gt;What Winnovative doesn't offer is the paperwork a procurement review usually wants, covering dated releases, a published engine version, a support commitment, and pricing that avoids stacking above the bundle price when components get bought one at a time. That's a diligence gap rather than a defect in the code, and an email to sales usually closes it since the answers exist even when the site doesn't publish them. IronPDF's own &lt;a href="https://ironsoftware.com/csharp/pdf/licensing/" rel="noopener noreferrer"&gt;licensing terms&lt;/a&gt; are published rather than answered case by case.&lt;/p&gt;

&lt;p&gt;If you've priced Winnovative's a la carte components against its bundles before signing anything, we'd like to hear how the math worked out in the comments, particularly whether the stacking caught you before or after the invoice arrived.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Winnovative is a trademark of its owner, and this piece is not affiliated. The details above are drawn from Winnovative's own site, its licence agreement, its FAQ, and the National Vulnerability Database as they stood at the time of writing. If a detail has changed since, correct us in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>pdf</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Spire.PDF's License Key Trial vs IronPDF's Setup</title>
      <dc:creator>IronSoftware</dc:creator>
      <pubDate>Fri, 21 Aug 2026 16:31:00 +0000</pubDate>
      <link>https://dev.to/ironsoftware/spirepdfs-license-key-trial-vs-ironpdfs-setup-ed8</link>
      <guid>https://dev.to/ironsoftware/spirepdfs-license-key-trial-vs-ironpdfs-setup-ed8</guid>
      <description>&lt;p&gt;Download Spire.PDF, wire up the first &lt;a href="https://ironpdf.com/tutorials/html-to-pdf/" rel="noopener noreferrer"&gt;HTML-to-PDF conversion&lt;/a&gt;, and the PDF that comes back has a red evaluation warning stamped across it. That's not a bug. It's the default state of every e-iceblue trial until a license key gets applied, and the path from that first download to a clean output file runs through more steps than the quickstart page implies.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Full disclosure. We build &lt;a href="https://ironpdf.com/tutorials/html-to-pdf/" rel="noopener noreferrer"&gt;IronPDF&lt;/a&gt; at Iron Software, and this read looks at where Spire.PDF's evaluation watermark and per-evaluation license key request cost a team, and where IronPDF renders the same page from one bundled package.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We went through e-iceblue's own documentation, its GitHub repositories, its support forum, and its published licensing terms for this one, not an older comparison's assumptions about where the product stands in August 2026. If you want the broader picture of &lt;a href="https://ironsoftware.com/suite/blog/comparison/best-pdf-library-dotnet/" rel="noopener noreferrer"&gt;choosing a .NET PDF library&lt;/a&gt; before narrowing to Spire.PDF's specific approach, or just the general pattern for &lt;a href="https://ironsoftware.com/suite/blog/comparison/html-to-pdf-2026-guide/" rel="noopener noreferrer"&gt;rendering HTML to PDF in C#&lt;/a&gt;, both live on Iron Software's site.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does the trial gate?
&lt;/h2&gt;

&lt;p&gt;Every e-iceblue product runs in evaluation mode until a license is applied, and clearing that gate happens in code rather than through a settings screen in the installer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Install-Package Spire.PDF&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Spire.Pdf.License&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;LicenseProvider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SetLicenseKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"YOUR-TEMPORARY-KEY"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;LicenseProvider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;LoadLicense&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That call has to run before the first render, and e-iceblue retired the older shared &lt;code&gt;Spire.License.LicenseProvider&lt;/code&gt; namespace that still turns up in search results and older tutorials in favor of the product-specific one shown above. Getting a working key during evaluation means emailing support or posting on e-iceblue's own forum for a temporary license, usually valid for one month, or filing a separate enterprise request for a longer window if the team qualifies for one. It's a step a developer has to discover before the first clean PDF comes out, and the quickstart doesn't mention it.&lt;/p&gt;

&lt;p&gt;The license that finally clears the watermark has its own ceiling, too. Developer Small Business licenses one developer at one location for internal use, and the terms state directly that it doesn't cover a public-facing website, a Docker container, or any SaaS, PaaS, or IaaS deployment. Shipping past that requires stepping up to the OEM tier before the application can go live, a second licensing conversation most teams don't plan for until the deployment plan is already set.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does Spire.PDF get right?
&lt;/h2&gt;

&lt;p&gt;Spire.PDF's Chrome-based converter is a real browser under the hood, not an approximation of one.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Install-Package Spire.PDF&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Spire.Pdf&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;converter&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ChromeHtmlConverter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;@"C:\Program Files\Google\Chrome\Application\chrome.exe"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ConvertOptions&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="n"&gt;converter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ConvertToPdf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://example.com/invoice"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"invoice.pdf"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;ChromeHtmlConverter&lt;/code&gt; drives an actual, already-installed copy of Chrome, executing JavaScript and laying out dynamic content the way Chrome itself would, and e-iceblue told forum users on 17 January 2025 that new feature work is landing on this path rather than the older Qt-based converter. The rest of the library covers more ground than most budget competitors attempt. Beyond HTML input, Spire.PDF converts to and from Word, Excel, PowerPoint, SVG, PostScript, PCL, Markdown, JSON, and raster images, on top of merge, split, form filling, and watermarking on existing PDFs, all from one package. e-iceblue's lighter NuGet package extends that further, with no evaluation warning at all, just its 10-page and 3-page caps enforced in the library's own code rather than a marketing rounding. What all three of those share is the same shape underneath, real capability sitting behind a second piece of infrastructure that the API call alone doesn't provide.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do Spire.PDF and IronPDF compare?
&lt;/h2&gt;

&lt;p&gt;With those strengths on the table, here is how the two libraries line up across the capabilities that matter for a rendering pipeline.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;Spire.PDF&lt;/th&gt;
&lt;th&gt;IronPDF&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Rendering engine included in the package&lt;/td&gt;
&lt;td&gt;Not included, &lt;code&gt;ChromeHtmlConverter&lt;/code&gt; drives a customer-installed Chrome, or a downloaded Qt plugin&lt;/td&gt;
&lt;td&gt;Yes, &lt;code&gt;ChromePdfRenderer&lt;/code&gt; ships with Chromium bundled in the NuGet package&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Applying a license in code&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Spire.Pdf.License.LicenseProvider.SetLicenseKey&lt;/code&gt; plus &lt;code&gt;LoadLicense&lt;/code&gt;, requested per evaluation&lt;/td&gt;
&lt;td&gt;One key set once, no evaluation watermark to clear afterward&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Linux and Docker HTML-to-PDF&lt;/td&gt;
&lt;td&gt;Supported, needs a virtual display server and a manual dependency install&lt;/td&gt;
&lt;td&gt;Supported without extra setup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Entry-level tier&lt;/td&gt;
&lt;td&gt;e-iceblue's page-capped NuGet package, 10 pages per document and 3 pages on conversion output&lt;/td&gt;
&lt;td&gt;Trial key covers the full API, delivered by email on signup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Public website or cloud deployment&lt;/td&gt;
&lt;td&gt;Requires the OEM tier&lt;/td&gt;
&lt;td&gt;Included at every commercial tier&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OCR&lt;/td&gt;
&lt;td&gt;Sold as a separate e-iceblue product&lt;/td&gt;
&lt;td&gt;Available through IronOCR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Export format range&lt;/td&gt;
&lt;td&gt;Word, Excel, PowerPoint, SVG, PostScript, PCL, Markdown, JSON, images&lt;/td&gt;
&lt;td&gt;Built around PDF creation and editing from HTML, images, and existing PDFs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Entry list price&lt;/td&gt;
&lt;td&gt;$999, Developer Small Business, one developer, one location, internal use only&lt;/td&gt;
&lt;td&gt;Quote-based&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Where does container setup add friction?
&lt;/h2&gt;

&lt;p&gt;Neither rendering engine ships pre-installed, and each one asks for a different kind of setup before it runs anywhere outside a developer's own Windows machine.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The legacy converter needs a plugin fetched separately per platform:&lt;/strong&gt; the Qt-based plugin has to be downloaded for Windows x86, Windows x64, macOS, or Linux, unzipped next to &lt;code&gt;Spire.Pdf.dll&lt;/code&gt;, and pointed at through &lt;code&gt;HtmlConverter.PluginPath&lt;/code&gt;, with the Microsoft Visual C++ 2015 Redistributable installed alongside it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Chrome-based converter needs Chrome itself:&lt;/strong&gt; &lt;code&gt;ChromeHtmlConverter&lt;/code&gt; drives a copy of Chrome that has to already be on the machine at a path supplied in code, which means provisioning it, patching it, and keeping it at a version the library was tested against, on every machine the code runs on.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Linux and Docker need a virtual display server before either engine renders anything:&lt;/strong&gt; e-iceblue's own support guidance calls for getting Xvfb running and routing the process through &lt;code&gt;xvfb-run&lt;/code&gt;, alongside a dependency list that includes &lt;code&gt;libgdiplus&lt;/code&gt;, &lt;code&gt;xfonts-base&lt;/code&gt;, &lt;code&gt;xfonts-75dpi&lt;/code&gt;, &lt;code&gt;dbus&lt;/code&gt;, &lt;code&gt;libnss3-dev&lt;/code&gt;, &lt;code&gt;libasound2&lt;/code&gt;, and &lt;code&gt;libegl1&lt;/code&gt;. Support threads from January 2025 describe the Qt path as closely tied to the host system environment, and show conversions failing outright in containers missing one of those packages.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cross-platform builds add one more wrinkle worth planning around. Targeting .NET 6 or later without Windows means dropping &lt;code&gt;System.Drawing.Common&lt;/code&gt; for the &lt;code&gt;netstandard2.0&lt;/code&gt; build built on SkiaSharp, which drops the &lt;code&gt;System.Drawing.Printing.PrintSettings&lt;/code&gt; class along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does Spire.PDF carry any CVEs?
&lt;/h2&gt;

&lt;p&gt;Spire.PDF's own code has a clean record across the databases that would show one. NVD returns zero results for a Spire.PDF or e-iceblue keyword search, the GitHub Advisory Database lists no advisories against the NuGet package, and Snyk reports no direct vulnerabilities. For a closed-source product with no public advisory feed, that means no CVE in the library's own code turns up across any of the three, not that none could ever exist.&lt;/p&gt;

&lt;p&gt;Maintenance is active. Spire.PDF for .NET sits at version 12.8.3, published 14 August 2026. That lighter package lags several releases behind at 12.4.0 from April 2026 and carries no support of any kind. Spire.PDF also has no &lt;a href="https://ironsoftware.com/csharp/ocr/" rel="noopener noreferrer"&gt;OCR&lt;/a&gt; and no redaction built in. e-iceblue sells OCR as a separate product line entirely, so a pipeline that needs both scanned-document text extraction and PDF generation ends up licensing and integrating two products from the same vendor instead of one.&lt;/p&gt;

&lt;h2&gt;
  
  
  No key to renew, no watermark
&lt;/h2&gt;

&lt;p&gt;The same job, turning a URL into a PDF with JavaScript rendered, looks different from the first line here.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Install-Package IronPdf&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;IronPdf&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;IronPdf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;License&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LicenseKey&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"IRONPDF-MYLICENSE-KEY1A"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;renderer&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ChromePdfRenderer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;PdfDocument&lt;/span&gt; &lt;span class="n"&gt;pdf&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;renderer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;RenderUrlAsPdf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://example.com/invoice"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;pdf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SaveAs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"invoice.pdf"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Setting that key happens once at startup, using the &lt;a href="https://ironsoftware.com/csharp/pdf/licensing/" rel="noopener noreferrer"&gt;licensing setup&lt;/a&gt; IronPDF documents, and Chromium ships inside the package itself, so there's no separate Chrome install to provision, no Qt plugin to unzip per platform, and no Xvfb setup to script into a Dockerfile before a Linux container can render the same page. The trial key itself arrives differently too. IronPDF's key lands by email as soon as the signup form is submitted, not after a support ticket or a forum post asking for a temporary one.&lt;/p&gt;

&lt;p&gt;A project that never exceeds that lighter package's 10-page ceiling gets real, usable capability inside that cap. Where the calculus shifts is deployment count. The more machines and containers a rendering pipeline runs on, the more that second-binary tax compounds, and that's the point where bundling the engine starts saving more than it costs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is the watermark worth working around?
&lt;/h2&gt;

&lt;p&gt;A project small enough to live inside Spire.PDF's lighter, page-capped package still comes with setup attached, a license key to request, and a browser or display server to keep patched before Linux or Docker enters the picture. For a pipeline that's already past the page cap and running across more than one machine, IronPDF's bundled Chromium and single &lt;a href="https://ironsoftware.com/csharp/pdf/licensing/" rel="noopener noreferrer"&gt;license key&lt;/a&gt; remove that entire layer of setup instead of adding one.&lt;/p&gt;

&lt;p&gt;Has your team requested a temporary Spire.PDF license during evaluation, or gone straight for a paid tier to skip the watermark? We would like to hear how that request-and-wait step played out in the comments.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Spire.PDF is a trademark of its owner, and this piece is not affiliated. The details above are drawn from e-iceblue's public documentation, its support forum, and public vulnerability databases as they stood at the time of writing. If a detail has changed since, correct us in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>pdf</category>
      <category>docker</category>
    </item>
    <item>
      <title>SharpShooter Reports in 2026: What Still Works</title>
      <dc:creator>IronSoftware</dc:creator>
      <pubDate>Fri, 21 Aug 2026 13:14:00 +0000</pubDate>
      <link>https://dev.to/ironsoftware/sharpshooter-reports-in-2026-what-still-works-1j5i</link>
      <guid>https://dev.to/ironsoftware/sharpshooter-reports-in-2026-what-still-works-1j5i</guid>
      <description>&lt;p&gt;The confusion with SharpShooter Reports rarely starts with the reporting engine. It starts with the designer. A team inherits a WinForms application where someone embedded Perpetuum Software's report designer inside the host app so business users could build their own layouts without opening a ticket. Nobody currently on the team installed it, nobody kept the setup notes, and the &lt;a href="https://ironpdf.com/blog/net-help/net-core-net-framework/" rel="noopener noreferrer"&gt;.NET Framework&lt;/a&gt; project underneath it is the one nobody wants to move.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Full disclosure. We build &lt;a href="https://ironpdf.com/tutorials/html-to-pdf/" rel="noopener noreferrer"&gt;IronPDF&lt;/a&gt; at Iron Software, and this read looks at where SharpShooter Reports's decade-stale release record and missing current-.NET path cost a team, and where IronPDF renders the same report to PDF on today's .NET from one package.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We checked this against Perpetuum Software's own changelog pages, published system requirements, its reseller listing on ComponentSource, and NVD's CVE records directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does SharpShooter Reports still do well?
&lt;/h2&gt;

&lt;p&gt;SharpShooter Reports' most durable capability, and the one thing IronPDF does not attempt, is a bundled, end-user-facing report designer with its own scripting support. A non-developer can build or adjust a report layout inside the application itself, without a code change or a redeploy, which is exactly why so many of these installs are still running. Its export matrix is wide for a single report definition, covering PDF, HTML, EMF, BMP, JPG, GIF, TIFF, PNG, XLS, Excel XML, CSV, TXT, and RTF from the same report, and .NET Framework support reaches back to version 2.0, the reason it still runs inside WinForms estates current libraries will not touch. Both capabilities sit inside a product whose own vendor stopped publishing anything past 2015, and that gap is what the rest of this piece works through.&lt;/p&gt;

&lt;p&gt;That places it as a report designer and document-automation component rather than a PDF rendering library, with a visual layout surface, data binding to arbitrary sources, and scripting hooks IronPDF was never built to have. The surrounding platform, the .NET Framework runtime and its tooling, is aging out from underneath a product no longer being actively developed to follow it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rendering on current .NET
&lt;/h2&gt;

&lt;p&gt;That aging platform is exactly where a current renderer takes over. Set the designer's own job aside, and what is left is one export step, and on current .NET it reads like this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Install-Package IronPdf&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;IronPdf&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;renderer&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ChromePdfRenderer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;var&lt;/span&gt; &lt;span class="n"&gt;pdf&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;renderer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;RenderHtmlAsPdf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reportHtml&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;pdf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SaveAs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"report.pdf"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That renders the report step's HTML into a PDF and writes it to disk, whether the source is a static template or generated from application data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where IronPDF is not the answer&lt;/strong&gt; is the report designer itself. If end users or business analysts are still opening SharpShooter's designer and adjusting report layouts without a developer involved, that capability has no code-only replacement. Moving off it means finding a different designer-driven tool, or accepting that layout changes become a code change and a deploy, a tradeoff worth weighing as part of the migration plan.&lt;/p&gt;

&lt;p&gt;Full &lt;a href="https://ironpdf.com/docs/" rel="noopener noreferrer"&gt;API documentation&lt;/a&gt; covers every option on the renderer, and the &lt;a href="https://ironpdf.com/get-started/installation-overview/" rel="noopener noreferrer"&gt;NuGet installation path&lt;/a&gt; targets current .NET directly, no separate designer runtime required.&lt;/p&gt;

&lt;p&gt;If the migration also needs to &lt;a href="https://ironpdf.com/how-to/merge-or-split-pdfs/" rel="noopener noreferrer"&gt;combine or split existing report output&lt;/a&gt;, or lock the result down with &lt;a href="https://ironpdf.com/examples/security-and-metadata/" rel="noopener noreferrer"&gt;edit and print restrictions&lt;/a&gt;, both are one call on the same renderer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where does the vendor record go quiet?
&lt;/h2&gt;

&lt;p&gt;The rendering path is settled. The product behind the designer is not, and its paper trail stops abruptly.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No vendor-documented release in over a decade:&lt;/strong&gt; Perpetuum Software's own changelog pages for both &lt;code&gt;Reports.Win&lt;/code&gt; and &lt;code&gt;Reports.Enterprise&lt;/code&gt; end at version 7.3.1, dated 8 September 2015. A 7.5.0 build circulates through reseller ComponentSource, but no release notes for it exist anywhere, so there is no way to confirm what changed or when it shipped.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No .NET path exists beyond Framework:&lt;/strong&gt; system requirements list .NET Framework 2.0 and higher, with IDE support ending at Visual Studio 2017, and no .NET Core, .NET 5 or later, or &lt;a href="https://ironpdf.com/get-started/ironpdf-docker/" rel="noopener noreferrer"&gt;container deployment&lt;/a&gt; documented anywhere in the product's history.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The distributor already marked it discontinued:&lt;/strong&gt; ComponentSource states that SharpShooter Collection has been discontinued. New and additional licenses can still be purchased, but without further product updates or support, and the Lite and Express editions are no longer supported at all.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The same quiet extends to security tracking. NVD returns zero results for a SharpShooter keyword search, and a search for Perpetuum returns exactly one CVE, 2026-28100, belonging to LambertGroup's UberSlider PerpetuumMobile, an unrelated WordPress and jQuery slider plugin, not Perpetuum Software's reporting components. A decade without a documented release means there is no active patch pipeline behind the product, so the absence of CVEs reflects nobody publicly disclosing one against inactive software, not the confirmed record an actively maintained library earns.&lt;/p&gt;

&lt;p&gt;That leaves one place the two products still meet on the same ground, the PDF each one produces.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;SharpShooter Reports&lt;/th&gt;
&lt;th&gt;IronPDF&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;PDF output from a report or template&lt;/td&gt;
&lt;td&gt;Yes, through the bundled designer's export&lt;/td&gt;
&lt;td&gt;Yes, through &lt;code&gt;ChromePdfRenderer.RenderHtmlAsPdf&lt;/code&gt; on an HTML template&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;End-user report designer, no code change required&lt;/td&gt;
&lt;td&gt;Yes, the product's core value&lt;/td&gt;
&lt;td&gt;No built-in designer, layout comes from the HTML and CSS you control in code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;.NET Framework 2.0+ support&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No, targets current .NET only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Current .NET (6, 8, 9, 10) support&lt;/td&gt;
&lt;td&gt;Not documented, no path published&lt;/td&gt;
&lt;td&gt;Yes, through the &lt;code&gt;IronPdf&lt;/code&gt; NuGet package&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cross-platform and container deployment&lt;/td&gt;
&lt;td&gt;Not documented&lt;/td&gt;
&lt;td&gt;Yes, Windows, Linux, macOS, and containers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Product line last documented&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Reports.Win&lt;/code&gt; and &lt;code&gt;Reports.Enterprise&lt;/code&gt;, version 7.3.1, dated 8 September 2015&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;IronPdf&lt;/code&gt; NuGet package, version &lt;code&gt;2026.7.2&lt;/code&gt;, shipped June 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Keep the designer, or move the render?
&lt;/h2&gt;

&lt;p&gt;A decade past its last documented release, SharpShooter Reports has no path forward. No current .NET support, no cross-platform story, and a distributor that already called the product line discontinued.&lt;/p&gt;

&lt;p&gt;When the report-authoring workflow still matters to the people using it, that capability needs a real replacement. If what is left is a data-bound template that needs to become a PDF, a currently maintained renderer picks that up directly.&lt;/p&gt;

&lt;p&gt;Is the SharpShooter designer still something your end users actually open, or has your application quietly settled into generating fixed-layout PDFs from code? That answer changes what the right migration looks like, so tell us which one matches your situation in the comments.&lt;/p&gt;

&lt;p&gt;If a data-bound HTML template is the last piece left in your pipeline, IronPDF's &lt;a href="https://ironpdf.com/licensing/" rel="noopener noreferrer"&gt;free trial&lt;/a&gt; lets you run the renderer above against your own report output before committing to anything.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;SharpShooter Reports is a trademark of its owner, and this piece is not affiliated. The changelog, system requirements, distributor status, and CVE details above are drawn from Perpetuum Software's own documentation, ComponentSource, and NVD as they stood at the time of writing. If a detail has changed since, correct us in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>pdf</category>
      <category>legacycode</category>
    </item>
    <item>
      <title>Nevron Vision for SSRS vs IronPDF: The Report-Server Bet</title>
      <dc:creator>IronSoftware</dc:creator>
      <pubDate>Thu, 20 Aug 2026 20:41:00 +0000</pubDate>
      <link>https://dev.to/ironsoftware/nevron-vision-for-ssrs-vs-ironpdf-the-report-server-bet-479c</link>
      <guid>https://dev.to/ironsoftware/nevron-vision-for-ssrs-vs-ironpdf-the-report-server-bet-479c</guid>
      <description>&lt;p&gt;Searching for a Nevron Reporting alternative turns up nothing useful, because no product carries that name. Nevron sells no report designer or report platform, and it does not ship a report writer of its own. What it actually sells is Nevron Vision for SSRS, a set of chart, gauge, map, and barcode Custom Report Items that plug directly into Microsoft SQL Server Reporting Services. Getting that distinction right changes what a fair comparison looks like, because a visualization suite and a rendering library are built to answer different questions entirely.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Full disclosure. We build &lt;a href="https://ironpdf.com/tutorials/html-to-pdf/" rel="noopener noreferrer"&gt;IronPDF&lt;/a&gt; at Iron Software, and this read looks at where Nevron Vision for SSRS's report-server deployment cost a team, and where IronPDF renders the same PDF standalone.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We checked Nevron's own product pages, its documentation, and NVD's CVE records directly rather than relying on an older search result's product name, and &lt;a href="https://ironpdf.com/docs/" rel="noopener noreferrer"&gt;IronPDF's own documentation&lt;/a&gt; gets held to that same standard below.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Does Nevron's Report-Server Commitment Cost?
&lt;/h2&gt;

&lt;p&gt;Nevron Vision for SSRS is a Custom Report Item, not a standalone renderer. It only runs inside a report that has already been deployed to SQL Server Reporting Services, and there is no direct call that hands back a PDF without that deployment already in place. A team whose actual requirement is turning application data into a PDF is signing up for a full SSRS installation and a Windows Server host as a prerequisite, layered on top of the component license rather than instead of it. That is a real operational commitment, meaning a report server to patch and keep current, plus a rendering pipeline that only exists inside someone else's product.&lt;/p&gt;

&lt;p&gt;A .NET application that needs the same output without any of that can skip the report-server requirement entirely with &lt;a href="https://ironpdf.com/" rel="noopener noreferrer"&gt;IronPDF&lt;/a&gt;, which renders HTML to PDF standalone inside the application process. The same renderer runs on &lt;a href="https://ironpdf.com/get-started/linux/" rel="noopener noreferrer"&gt;Windows, Linux, and macOS&lt;/a&gt; alike, so the deployment target is a normal .NET host rather than a dedicated report server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which Job Does IronPDF Replace?
&lt;/h2&gt;

&lt;p&gt;That standalone path is where IronPDF steps into one specific job, turning application data into a PDF outside of SSRS entirely, and the call is direct.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;IronPdf&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;renderer&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ChromePdfRenderer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;pdf&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;renderer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;RenderHtmlAsPdfAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reportHtml&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;pdf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SaveAs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"report.pdf"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That call returns a &lt;code&gt;PdfDocument&lt;/code&gt; in memory and writes it to disk in the same statement, with no report server or Windows Server host in the path, and no Custom Report Item runtime to keep alive.&lt;/p&gt;

&lt;p&gt;The export step is the only piece this replaces. IronPDF has no charting, gauge, or mapping component of any kind, so switching to it replaces none of the Custom Report Item authoring layer. A team that needs Nevron's chart and gauge depth inside an SSRS report keeps using it for that job. The PDF step at the end of that pipeline is the only place this comparison was ever fair to make.&lt;/p&gt;

&lt;p&gt;IronPDF produces that PDF from one package with no report-server host in the path. The &lt;a href="https://ironpdf.com/how-to/async/" rel="noopener noreferrer"&gt;async rendering pattern&lt;/a&gt; above and the &lt;a href="https://ironpdf.com/object-reference/api/IronPdf.ChromePdfRenderer.html" rel="noopener noreferrer"&gt;&lt;code&gt;ChromePdfRenderer&lt;/code&gt; class reference&lt;/a&gt; cover the rest of what the standalone path looks like inside a real application.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Did Nevron Build Into the Visualization Layer?
&lt;/h2&gt;

&lt;p&gt;The Custom Report Items span 2D and 3D charting, gauges, choropleth maps, and 28 linear barcode types alongside QR, DataMatrix, and PDF417, dropped straight into the SSRS report designer the same way Microsoft's own native chart and gauge items are. The broader Nevron Open Vision codebase behind that authoring layer spans WinForms, WPF, Blazor WebAssembly, and macOS from a single presentation layer, and recent releases have pushed further still, adding LiDAR point-cloud import and GPU shader optimization. Nevron Software has been building this line since 1998, and it has kept shipping through every major .NET platform shift since, a 28-year track record most components in this space cannot claim. All of that authoring depth lives inside the report designer, though, and none of it is a path to a PDF by itself. The Custom Report Items produce the visualization. Something else in the stack still has to render the report that contains them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Does a PDF Come Out of Each Stack?
&lt;/h2&gt;

&lt;p&gt;The table below stays narrowly on the one place these two products actually overlap, producing a PDF, since a full feature comparison would mean judging a visualization suite against a rendering library on terms neither was built for.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;Nevron Vision for SSRS&lt;/th&gt;
&lt;th&gt;IronPDF&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;PDF output&lt;/td&gt;
&lt;td&gt;Yes, through SSRS's own &lt;code&gt;PDFRenderer&lt;/code&gt; rendering extension&lt;/td&gt;
&lt;td&gt;Yes, direct with &lt;code&gt;ChromePdfRenderer.RenderHtmlAsPdfAsync&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Report-server host required&lt;/td&gt;
&lt;td&gt;Yes, runs only inside a report deployed to SSRS&lt;/td&gt;
&lt;td&gt;No, standalone through the &lt;code&gt;IronPdf&lt;/code&gt; package in any .NET app&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Source of a report's visual content&lt;/td&gt;
&lt;td&gt;Charts, gauges, and maps authored as Custom Report Items in the designer&lt;/td&gt;
&lt;td&gt;HTML and CSS rendered through &lt;code&gt;ChromePdfRenderer&lt;/code&gt;, the same layout engine as Chrome&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Documented SQL Server compatibility&lt;/td&gt;
&lt;td&gt;2008 through 2019, plus Power BI Report Server&lt;/td&gt;
&lt;td&gt;No SQL Server or report-server version to match&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cross-platform or container deployment&lt;/td&gt;
&lt;td&gt;Not documented for the SSRS host&lt;/td&gt;
&lt;td&gt;Yes, Windows, Linux, macOS, and containers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Licensing model&lt;/td&gt;
&lt;td&gt;Per developer, plus a per-web-server deployment fee&lt;/td&gt;
&lt;td&gt;Commercial, licensed by deployment, with support and updates included&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What Does the License Cost Over Time?
&lt;/h2&gt;

&lt;p&gt;Nevron's developer licenses are priced and sold per developer, with an additional per-web-server fee once a report goes to deployment beyond the licensed seats, a structure that scales differently than a per-application or a flat per-server license. That is worth modeling against actual team size and deployment topology before committing to a tier, and the current figures belong on nevron.com rather than a reseller listing, since list prices move. IronPDF is &lt;a href="https://ironpdf.com/licensing/" rel="noopener noreferrer"&gt;commercial and licensed by deployment&lt;/a&gt; instead, which changes the modeling question from developer headcount to how many applications and servers actually render a PDF.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Is Nevron's Compatibility Ceiling?
&lt;/h2&gt;

&lt;p&gt;The documented supported-server list for the SSRS product runs SQL Server 2008 through 2019, plus Power BI Report Server. SQL Server 2022 does not appear on that list, which is worth confirming directly with Nevron before a new deployment standardizes on it, since the vendor's own written compatibility claims do not currently extend that far.&lt;/p&gt;

&lt;p&gt;The security record is clean rather than thin. An NVD keyword search for Nevron returns exactly one result, CVE-2002-0110, and that CVE belongs to Nevrona Designs' MiraMail, an unrelated company with a similar name, not Nevron Software. No GitHub Advisory or Snyk entries exist against Nevron's own components either.&lt;/p&gt;

&lt;p&gt;Maintenance is active on the current line. Nevron Open Vision for .NET shipped a 2026.1 release in the first half of 2026, and Nevron's own guidance on the older Nevron Vision for .NET line is that it remains supported while active development has moved to Nevron Open Vision for .NET going forward. A team standardizing on the platform today has a clear signal about which package a Visual Studio project should reference. Existing projects should be checked against the current line, since new development can drift onto the legacy one without anyone noticing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which piece of the stack do you actually need?
&lt;/h2&gt;

&lt;p&gt;When in-report visualization inside SSRS is the actual requirement, that's not a reason to move off Nevron. It is a reason to be precise about which piece of a reporting pipeline each tool owns, and what standing up the report-server side of that pipeline commits a team to for as long as the license runs. A deployment decision turns on that distinction more than on any feature checklist, and we keep coming back to it for exactly that reason.&lt;/p&gt;

&lt;p&gt;Is your team running Nevron for the visualization, the PDF output, or both, and if you split those two jobs across two tools, what would actually get easier? The comments are open if you want to compare notes on how that report-server commitment played out in practice.&lt;/p&gt;

&lt;p&gt;If the deployment question is whether a .NET application can produce that same PDF without any of the SSRS stack, IronPDF has a &lt;a href="https://ironsoftware.com/csharp/pdf/licensing/" rel="noopener noreferrer"&gt;free trial&lt;/a&gt; so the snippet above can run against a real report before anything gets licensed.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Nevron and Nevron Vision for SSRS are trademarks of Nevron Software, and this piece is not affiliated with the company. The compatibility, licensing, and CVE details above are drawn from Nevron's own documentation and NVD as they stood at the time of writing. If a detail has changed since, correct us in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>pdf</category>
      <category>ssrs</category>
    </item>
    <item>
      <title>Fluent by Apryse: Word Templates vs Rendered PDFs</title>
      <dc:creator>IronSoftware</dc:creator>
      <pubDate>Thu, 20 Aug 2026 16:06:00 +0000</pubDate>
      <link>https://dev.to/ironsoftware/fluent-by-apryse-word-templates-vs-rendered-pdfs-p2g</link>
      <guid>https://dev.to/ironsoftware/fluent-by-apryse-word-templates-vs-rendered-pdfs-p2g</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Install-Package FluentEngine&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;net.windward.api.csharp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;WindwardInterfaces.net.windward.api.csharp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;Report&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Init&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;var&lt;/span&gt; &lt;span class="n"&gt;template&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;OpenRead&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Invoice-Template.docx"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;var&lt;/span&gt; &lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"invoice.pdf"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;Report&lt;/span&gt; &lt;span class="n"&gt;report&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ReportPdf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;template&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;var&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;AdoDataSourceImpl&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"System.Data.SqlClient"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;connectionString&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;report&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ProcessSetup&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;report&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ProcessData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"SQL"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;report&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ProcessComplete&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That call merges the SQL rows into &lt;code&gt;Invoice-Template.docx&lt;/code&gt; and writes &lt;code&gt;invoice.pdf&lt;/code&gt;, with no HTML or CSS in the path, and a layout change happens by editing that Word document, not by a code deploy. Fluent does not render a PDF the way a rendering library does, a misconception that trips up most comparisons of the two. It merges live data into a Word, Excel, or PowerPoint template a business analyst designed and still owns. IronPDF instead renders &lt;a href="https://ironpdf.com/how-to/html-to-pdf-responsive-css/" rel="noopener noreferrer"&gt;HTML and CSS&lt;/a&gt; a developer wrote and checked into source control. The vendor's naming history makes the two engines easy to confuse by accident, since Windward Studios built this engine in 1996, PDFTron acquired the company on 8 April 2021, PDFTron itself became Apryse on 8 February 2023, and Windward Core was renamed Fluent in 2023. The old name never left the code, either, since the current NuGet package installs as &lt;code&gt;FluentEngine&lt;/code&gt;, the config section is still &lt;code&gt;&amp;lt;WindwardReports&amp;gt;&lt;/code&gt;, and the REST client class is &lt;code&gt;WindwardRestApi.Api.WindwardClient&lt;/code&gt;. Both search terms point to the same product.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Full disclosure. We build &lt;a href="https://ironpdf.com/tutorials/html-to-pdf/" rel="noopener noreferrer"&gt;IronPDF&lt;/a&gt; at Iron Software, and this read looks at where Fluent's .NET Framework-only embedded engine cost a team on current .NET, and where IronPDF renders the same report from one package.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What does adopting Fluent on current .NET cost?
&lt;/h2&gt;

&lt;p&gt;Apryse's documentation states the embedded engine supports .NET Framework only, with no embedded SDK for .NET Core or .NET 5+. Both &lt;code&gt;FluentEngine&lt;/code&gt; and the legacy &lt;code&gt;WindwardEngine&lt;/code&gt; package target &lt;code&gt;net451&lt;/code&gt; and depend on &lt;code&gt;IKVM.WINDWARD&lt;/code&gt;, a Java-to-.NET compatibility layer, not a native .NET Core build. A team on current .NET gets routed to the REST engine instead, and that is not a clean upgrade path, since the actively developed Java RESTful Engine needs JDK 17 and Tomcat 10.1, while the .NET REST engine is labeled Legacy in Apryse's docs and still depends on classic ASP.NET MVC/WebApi 5.2.7. Either route adds infrastructure a .NET-only shop wasn't running, and Fluent Designer compounds it for a Mac-standardized team, since it runs only as a Windows Office add-in with no Mac support and no browser path.&lt;/p&gt;

&lt;p&gt;The one disclosed security event in Fluent's history belongs to that same Java REST engine, not the core product. A keyword search of NVD for windward returns no results and the GitHub Advisory Database lists nothing either, though Fluent is closed source with no public advisory feed, so the zero count means nothing was publicly disclosed rather than audited. Log4Shell, CVE-2021-44228 and CVE-2021-45046, affected the Java and Java RESTful engines from version 20.2.0 onward through the bundled Log4j dependency, and Apryse patched it in 21.5.2, since the vulnerability lived entirely in that Java dependency chain and left the .NET engines and Designer unaffected.&lt;/p&gt;

&lt;p&gt;None of this changes Fluent's value case. The template-ownership model and output matrix hold regardless of engine. What changes is that a .NET Core or .NET 5+ shop adopting Fluent today is choosing between an unsupported embedded engine and a REST engine needing either a Java stack or a deprecated ASP.NET dependency, worth knowing before building a template-authoring workflow around it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where does a rendering call replace a template engine?
&lt;/h2&gt;

&lt;p&gt;Against that engine question, the same reporting job looks like this when it's driven from application data instead of a template file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Install-Package IronPdf&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;IronPdf&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;renderer&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ChromePdfRenderer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;PdfDocument&lt;/span&gt; &lt;span class="n"&gt;pdf&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;renderer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;RenderHtmlAsPdf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reportHtml&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;pdf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SaveAs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"report.pdf"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That call renders whatever HTML the application already builds and writes &lt;code&gt;report.pdf&lt;/code&gt;, with no separate engine choice and no template file to maintain. Without standing up Tomcat or a JDK, &lt;code&gt;RenderHtmlAsPdf&lt;/code&gt; is a direct fit on &lt;code&gt;net8.0&lt;/code&gt; through &lt;code&gt;net10.0&lt;/code&gt;, and the same call runs unchanged on &lt;a href="https://ironpdf.com/get-started/linux/" rel="noopener noreferrer"&gt;Linux&lt;/a&gt; if the deployment target isn't Windows. Reports already rendering as Razor views convert the same way, and the &lt;a href="https://ironpdf.com/how-to/cshtml-to-pdf-razor/" rel="noopener noreferrer"&gt;Razor-to-PDF path&lt;/a&gt; covers a reporting layer inside an ASP.NET Core app.&lt;/p&gt;

&lt;p&gt;Where IronPDF is not the answer is business-user template authoring, no-code data connectors, and a central template repository, none of which a rendering library is built to do. If a report's content needs to stay editable by business users, that workflow stays on Fluent regardless of .NET version, and some teams run both for the two halves of a pipeline they have.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do Fluent and IronPDF compare?
&lt;/h2&gt;

&lt;p&gt;Set side by side, and scoped strictly to document output since Fluent's designer, connector catalogue, and template manager have no equivalent in a rendering library, the two divide like this.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;Fluent (Windward)&lt;/th&gt;
&lt;th&gt;IronPDF&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;PDF output mechanism&lt;/td&gt;
&lt;td&gt;Merges data into a &lt;code&gt;ReportPdf&lt;/code&gt; template job&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;ChromePdfRenderer.RenderHtmlAsPdf&lt;/code&gt; renders markup directly, no template file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Business-user template authoring&lt;/td&gt;
&lt;td&gt;Word, Excel, PowerPoint, no code&lt;/td&gt;
&lt;td&gt;HTML and CSS control layout, authored and versioned with the app&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;.NET target for the embedded engine&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;net451&lt;/code&gt; only, via &lt;code&gt;FluentEngine&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Native &lt;code&gt;net8.0&lt;/code&gt;, &lt;code&gt;net9.0&lt;/code&gt;, and &lt;code&gt;net10.0&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Local install off Windows&lt;/td&gt;
&lt;td&gt;Java RESTful Engine or legacy ASP.NET MVC/WebApi 5.2.7&lt;/td&gt;
&lt;td&gt;One &lt;code&gt;IronPdf&lt;/code&gt; package across Windows, Linux, and macOS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data-source connectors&lt;/td&gt;
&lt;td&gt;150+, no code required&lt;/td&gt;
&lt;td&gt;Renders whatever HTML the application already builds from any data source&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Template design tooling&lt;/td&gt;
&lt;td&gt;Windows desktop, Microsoft Office required&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;ChromePdfRenderer&lt;/code&gt; runs headless in CI, no desktop app needed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The table draws on Apryse's own Fluent documentation and NuGet listings. Those 150+ connectors span SQL and NoSQL databases alongside SaaS platforms like Salesforce, Dynamics, and SharePoint, and the same template outputs to native Word, Excel, or PowerPoint alongside PDF/A and PDF/UA-compliant PDF, with Fluent Manager as a central repository on top. Owning that workflow, letting a business analyst edit a report without a code deploy, is a different job from what a rendering library does, and a real one for a team built around it.&lt;/p&gt;

&lt;h2&gt;
  
  
  A template engine, or a renderer?
&lt;/h2&gt;

&lt;p&gt;What complicates adopting Fluent today on current .NET is the engine question. The embedded engine doesn't run past .NET Framework, and the alternative is either a Java stack or a docs-labeled Legacy path. Know which engine a given .NET version actually supports before building a template-authoring workflow around a choice unavailable on the target runtime. Full API coverage is in &lt;a href="https://ironpdf.com/docs/" rel="noopener noreferrer"&gt;IronPDF's documentation&lt;/a&gt;, and there is a &lt;a href="https://ironpdf.com/licensing/" rel="noopener noreferrer"&gt;free trial&lt;/a&gt; so the rendering path above can be tested against a real report first.&lt;/p&gt;

&lt;p&gt;Did your team hit the .NET Framework ceiling before or after building templates out in Fluent Designer, and did you end up standing up the Java REST engine or staying on the legacy .NET one? We would like to hear which way it went in the comments.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Fluent, Windward, and Apryse are trademarks of Apryse Software Inc, and this piece is not affiliated with the company. The details above are drawn from Apryse's Fluent documentation, its NuGet listings, and NVD as they stood at the time of writing. If a detail has changed since, correct us in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>pdf</category>
      <category>reporting</category>
    </item>
  </channel>
</rss>
