↔IRONPDF ALTERNATIVE · C# · .NET

An IronPDF alternative for .NET.

SelectPdf converts HTML to PDF with Chromium 154, released in September 2026; IronPDF ships Chromium 109, from January 2023. SelectPdf costs half as much for a single developer, and in the same open benchmark it passed more output checks, produced every PDF/A and PDF/UA level valid, kept its memory flat over 1,000 conversions, and ran in Docker without a single apt-get line.

Program.cs
using SelectPdf.Universal;

HtmlToPdf converter = new HtmlToPdf();
converter.Options.MarginTop = 57;    // 57 pt = 20 mm

converter.Options.DisplayFooter = true;
converter.Footer.Add(new PdfTextSection(0, 10,
    "Page {page_number} of {total_pages}")
    { HorizontalAlign = PdfTextHorizontalAlign.Center });

PdfDocument doc = converter.ConvertHtmlString(html);
doc.Save("report.pdf");
doc.Close();

HTML to PDF with a "Page N of M" footer in SelectPdf.

§OVERVIEW

IronPDF and SelectPdf at a glance.

IronPDF is a commercial .NET PDF library from Iron Software. SelectPdf.Universal is the cross-platform .NET PDF library from SelectPdf. Both convert URLs and HTML strings to PDF with a Chromium-based engine, so modern CSS, web fonts and JavaScript render in both, and both create, edit and read PDF documents: merge and split, watermarks and stamps, form filling, text extraction, PDF to image, digital signatures and PDF/A.

SelectPdfIronPDF
HTML engineChromium 154.0.8037.58 (stable since September 22, 2026), in a NuGet engine packageChromium 109.0.5414.120 (stable since January 10, 2023), in NuGet packages
NuGet packagesSelectPdf.Universal + one engine package per platformIronPdf (Windows), IronPdf.Linux
.NET.NET 8 and 10, and .NET Framework 4.6.1+ / .NET Core through .NET Standard 2.0.NET 5 to 10, .NET Core, .NET Framework 4.6.2+
PlatformsWindows (x64, x86), Linux (x64, ARM64), macOS on Apple SiliconWindows, Linux, macOS
Linux packages in Dockernonean apt-get list from IronPDF's Docker guide
Trying it30-day trial without a key (a "Demo Version" banner on each page); free Community Edition for HTML to PDF up to 5 pages30-day trial key
Licenseperpetual, from USD 499perpetual, from USD 999

Moving from one to the other is mostly renaming types and converting units: SelectPdf margins are in points where IronPDF's are in millimetres, and the page-number placeholders change. The sections below show where SelectPdf comes out ahead, how to migrate IronPDF code to SelectPdf, and what each license costs.

§SELECTPDF VS IRONPDF

Where SelectPdf is ahead.

Prices from each vendor's pricing page. Measurements from the 2026-10-15 run of the open pdf-benchmarks harness: IronPDF 2026.10.3 and SelectPdf.Universal 26.5.0 on the same machine.

SelectPdfIronPDF
Chromium version154, from September 2026109, from January 2023
Entry license (1 developer)USD 499USD 999
1 developer, SaaS or redistributed softwareUSD 799 (Single Developer OEM)USD 2,998 (Lite + OEM Redistribution add-on)
Content checks passed46 of 4841 of 48
Fidelity to Chrome, mean SSIM0.9840.928
PDF/A, PDF/UA and PDF/X levels validall 175 of the 14 it produces
Tagged structure checks (accessible PDFs)112 of 11242 of 112
Memory after 1,000 conversions, Windows140 → 156 MB226 → 630 MB
Memory after 1,000 conversions, Linux369 → 389 MB451 → 1,076 MB
Docker on the official .NET imageroot and non-root, no extra packagesroot only; non-root needs IronPDF's apt-get list
Text search in a PDFPdfToText.Searchno API

Every number above, with the rest of the measurements, is in the full table below.

§MIGRATE FROM IRONPDF

Migrate IronPDF code to SelectPdf.

The same document in both libraries: an HTML page with a centred header and a "Page N of M" footer. Install the library and the engine package for your platform:

terminal
dotnet add package SelectPdf.Universal
dotnet add package SelectPdf.Universal.Native.win-x64

IronPDF:

Program.cs (IronPDF)
using IronPdf;

License.LicenseKey = "...";

ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    CenterText = "Quarterly report",
};
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
    CenterText = "Page {page} of {total-pages}",
};

PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");

SelectPdf:

Program.cs (SelectPdf)
using SelectPdf.Universal;

HtmlToPdf converter = new HtmlToPdf();

converter.Options.DisplayHeader = true;
converter.Header.Height = 40;
PdfTextSection header = new PdfTextSection(0, 15, "Quarterly report",
    PdfFont.CreateStandardFont(PdfStandardFont.Helvetica, 10));
header.HorizontalAlign = PdfTextHorizontalAlign.Center;
converter.Header.Add(header);

converter.Options.DisplayFooter = true;
converter.Footer.Height = 40;
PdfTextSection footer = new PdfTextSection(0, 10, "Page {page_number} of {total_pages}",
    PdfFont.CreateStandardFont(PdfStandardFont.Helvetica, 10));
footer.HorizontalAlign = PdfTextHorizontalAlign.Center;
converter.Footer.Add(footer);

PdfDocument doc = converter.ConvertHtmlString(html);
doc.Save("report.pdf");
doc.Close();

Thirteen tasks side by side, from hello world to merge, watermarks, forms, text extraction, images, signatures, PDF/A and an ASP.NET Core endpoint, each built and checked, are in the migration guide on GitHub.

§API MAPPING

Map IronPDF APIs to SelectPdf.

SelectPdf margins are in points (1 mm is about 2.83 pt) and delays in seconds.

IronPDFSelectPdf
ChromePdfRendererHtmlToPdf
RenderHtmlAsPdf(html) / RenderUrlAsPdf(url)ConvertHtmlString(html) / ConvertUrl(url)
RenderingOptionsOptions
MarginTop = 20 (mm)MarginTop = 57 (pt)
WaitFor.RenderDelay(2000)ConversionDelay = 2
TextHeader, HtmlHeader (and footers)Header / Footer with PdfTextSection or PdfHtmlSection
{page}, {total-pages}{page_number}, {total_pages}
PdfDocument.FromFile / SaveAsnew PdfDocument(path) / Save
PdfDocument.MergeAppend
ApplyWatermarka page template with a PdfTextElement
Form.FindFormFieldPdfFormManager
ExtractAllTextPdfToText
RasterizeToImageFilesPdfRasterizer
PdfSignature + SignPdfDigitalSignatureElement
SaveAsPdfAConvertToPdfA

The complete mapping, with every option, is in the migration guide; every class is in the documentation.

§PRICING

IronPDF and SelectPdf pricing.

Both sell perpetual licenses with one year of updates. Each situation is priced with the cheapest published license that covers it; prices read on 2026-10-16.

SituationSelectPdfIronPDF
1 developer, internal applicationSingle Developer, USD 499Lite, USD 999
1 developer, SaaS or software sold to customersSingle Developer OEM, USD 799Lite + OEM Redistribution add-on, USD 2,998
5 developers, internal5-Developers, USD 799Professional (up to 10), USD 2,399 (USD 2,999 from November 1, 2026)
Unlimited developers, SaaS or redistributedEnterprise OEM, USD 1,599Unlimited + OEM Redistribution add-on, USD 6,798 (USD 7,998 from November 1, 2026)

From ironpdf.com/licensing and SelectPdf pricing. After the first year, renewing updates and support is optional with both: IronPDF's renewal is USD 599 a year for Lite. Iron Software has announced higher Professional and Unlimited prices from November 1, 2026; check both pages for current terms before buying. One SelectPdf license covers SelectPdf.Universal and the classic Windows library.

§MEASURED SIDE BY SIDE

The full measurement.

IronPDF 2026.10.3 and SelectPdf.Universal 26.5.0 on every axis of the 2026-10-15 run, on one machine under Windows and Linux, generated from the raw data. The method, per-page numbers and eight other .NET PDF libraries are on the results page; the harness is open source, so every number can be re-run.

IronPDFSelectPdf
HTML to PDF, geometric mean of 18 page medians, ms (Windows)186212
Pages converted faster than the other library (Windows)14 of 184 of 18
Cold start, ms (Windows)657714
Throughput, conversions/min, 1 / 4 / 8 at once, sync (Windows)480 / 1,485 / 1,735353 / 948 / 1,078
Throughput, conversions/min, 1 / 4 / 8 at once, async (Windows)447 / 1,456 / 1,705323 / 926 / 1,158
Memory, one page / 8 at once, MB (Windows)244 / 788205 / 467
Memory over 1,000 conversions, MB (Windows)226 → 630, 0 failures140 → 156, 0 failures
Page that never loads: gives up after, s (Windows)6660
Parallel output equals sequential (Windows)32 / 3232 / 32
HTML to PDF, geometric mean of 18 page medians, ms (Linux)169134
Pages converted faster than the other library (Linux)4 of 1814 of 18
Cold start, ms (Linux)1,090745
Throughput, conversions/min, 1 / 4 / 8 at once, sync (Linux)453 / 1,332 / 1,520619 / 1,929 / 2,597
Throughput, conversions/min, 1 / 4 / 8 at once, async (Linux)468 / 1,231 / 1,704603 / 1,872 / 2,639
Memory, one page / 8 at once, MB (Linux)730 / 1,322462 / 727
Memory over 1,000 conversions, MB (Linux)451 → 1,076, 0 failures369 → 389, 0 failures
Page that never loads: gives up after, s (Linux)6660
Parallel output equals sequential (Linux)31 / 3232 / 32
Content checks passed (Windows)41 / 4846 / 48
Content checks passed (Linux)41 / 4846 / 48
Fidelity vs Chrome, mean SSIM (Windows)0.9280.984
PDF/A, PDF/UA, PDF/X: levels produced / valid (of 17)14 / 517 / 17
Tagged structure checks42 / 112112 / 112
Text extraction, lowest F10.960.97
Searchnot supportedsupported
PDF to imagesupportedsupported
Word to PDFsupportedsupported
Redactionsupportedsupported
Mergesupportedsupported
Splitsupportedsupported
Watermarksupportedsupported
Digital signaturesupportedsupported
Form fillingsupportedsupported
ZUGFeRD / Factur-Xsupportedsupported
Docker, minimal image (Linux)runs as root only, 206 MBruns, 270 MB
Docker, vendor-documented image (Linux)runs, 239 MBnot needed (the minimal image runs)
Publish size win-x64 / linux-x64, MB321.3 / 314.6477.0 / 449.6
§LINUX · DOCKER · ARM64

Linux, Docker and ARM64.

The engine package bundles the Chromium libraries, so a Docker image built from the official .NET images needs no apt-get lines and no installation settings, and it runs as root or as a non-root user. Linux x64 and ARM64 each have their own package; Linux needs glibc 2.30 or later (Debian 11+, Ubuntu 20.04+, RHEL 9+). On Alpine, the conversions run in the SelectPdf engine container instead.

Step by step: HTML to PDF in Docker on Linux. Both libraries' Dockerfiles are side by side in the C# PDF libraries comparison.

?FAQ

Questions, answered.

Something else? Write to support@selectpdf.com with your settings and, if you can, the HTML.

No. The types, the units and the header placeholders differ: margins are in points instead of millimetres, and {page} and {total-pages} become {page_number} and {total_pages}. Most of the move is renaming and converting units, and the migration guide on GitHub shows each change on a working project.
Yes, but different versions. SelectPdf.Universal 26.5 ships Chromium 154, stable since September 2026. IronPDF 2026.10.3 ships Chromium 109, stable since January 2023, so CSS and JavaScript features added to Chromium since then are not available in IronPDF's output. Compare a few of your own documents before switching.
A SelectPdf Single Developer license is USD 499, against USD 999 for IronPDF Lite. Both are perpetual with one year of updates. For a SaaS product or redistributed software, SelectPdf's Single Developer OEM license is USD 799; IronPDF adds an OEM Redistribution add-on of USD 1,999 to its license, USD 2,998 with Lite.
No. Without a key it runs as a 30-day trial and adds a "Demo Version" banner to each page. A purchased key is set with GlobalProperties.LicenseKey.
No. The engine package bundles the Chromium libraries it needs, so the official .NET images work as they are, as root or as a non-root user. Linux needs glibc 2.30 or later.
Yes. The SelectPdf Community Edition converts HTML to PDF for free, including in production, for documents up to 5 pages. The full library needs a license.