You need to convert HTML to PDF in .NET. Google "C# HTML to PDF" and you'll find outdated Stack Overflow answers recommending abandoned libraries like wkhtmltopdf (discontinued 2023) or iTextSharp (frozen since 2016).
The .NET PDF ecosystem changed dramatically in 2023-2025. Here's the definitive 2025 comparison of every HTML-to-PDF solution in .NET: what works, what's abandoned, and what you should actually use.
The Complete List of HTML-to-PDF Solutions
Active solutions (2025):
- IronPDF (Chromium-based, commercial)
- Playwright for .NET (browser automation, open source)
- Puppeteer-Sharp (headless Chrome, open source)
- Aspose.PDF (commercial)
- Syncfusion Essential PDF (commercial)
- QuestPDF (programmatic, not HTML)
Abandoned/deprecated:
- wkhtmltopdf (discontinued January 2023)
- DinkToPDF (wraps abandoned wkhtmltopdf)
- iTextSharp 5.x (frozen since 2016)
Direct Comparison Table
| Solution | HTML Support | JavaScript | License | Cost | Status |
|---|---|---|---|---|---|
| IronPDF | ✅ Full (Chromium) | ✅ Yes | Commercial | $749 | ✅ Active |
| Playwright | ✅ Full (Chromium) | ✅ Yes | Apache 2.0 | Free | ✅ Active |
| Puppeteer-Sharp | ✅ Full (Chromium) | ✅ Yes | Apache 2.0 | Free | ✅ Active |
| Aspose.PDF | ⚠️ Limited | ❌ No | Commercial | $1,999+ | ✅ Active |
| Syncfusion | ⚠️ Limited | ❌ No | Commercial | $995/year | ✅ Active |
| QuestPDF | ❌ Code-only | N/A | MIT (< $2M) | Free/Paid | ✅ Active |
| wkhtmltopdf | ⚠️ Outdated | ❌ No | LGPL | Free | ❌ Abandoned |
| DinkToPDF | ⚠️ Outdated | ❌ No | MIT | Free | ❌ Abandoned |
| iTextSharp 5.x | ❌ Terrible | ❌ No | AGPL | AGPL/$1,800+ | ❌ Frozen |
Solution 1: IronPDF (Chromium-Based, Commercial)
What it is: Purpose-built PDF library using Chromium rendering engine.
Pros
✅ Full HTML5/CSS3 support (Chromium rendering)
✅ JavaScript execution (charts, dynamic content)
✅ Simple API (3 lines for HTML to PDF)
✅ PDF manipulation (merge, split, forms, signatures)
✅ Cross-platform (.NET Core, Linux, Docker)
✅ Commercial support (24/5 email support, SLA available)
Cons
⚠️ Commercial license ($749 per developer)
⚠️ Binary size (~100MB Docker image)
Code Example
using IronPdf;
// Install via NuGet: Install-Package IronPdf
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF</h1>");
pdf.SaveAs("output.pdf");
Result: Pixel-perfect PDF matching Chrome browser output.
Best For
- Production .NET applications
- Enterprise use cases with support requirements
- Modern HTML/CSS (Bootstrap, Tailwind, flexbox, grid)
- Apps needing both generation and manipulation
- Teams willing to pay for simplicity and support
Pricing
- $749 per developer (one-time, perpetual license)
- Free updates for 1 year
- No runtime fees
- 30-day money-back guarantee
Solution 2: Playwright for .NET (Browser Automation, Open Source)
What it is: Microsoft's browser automation library (testing tool that can generate PDFs).
Pros
✅ Free (Apache 2.0 license)
✅ Full HTML/CSS support (Chromium rendering)
✅ JavaScript execution
✅ Cross-browser (Chromium, Firefox, WebKit)
✅ Active development (Microsoft-backed)
Cons
⚠️ Large deployment (~400MB Chromium binaries)
⚠️ Browser automation tool, not PDF library (no merge, split, forms)
⚠️ Complex deployment (browser binary management)
⚠️ Slower startup (spawns browser processes)
Code Example
using Microsoft.Playwright;
// Install via NuGet: Install-Package Microsoft.Playwright
var playwright = await Playwright.CreateAsync();
var browser = await playwright.Chromium.LaunchAsync();
var page = await browser.NewPageAsync();
await page.SetContentAsync("<h1>Hello from Playwright</h1>");
await page.PdfAsync(new() { Path = "output.pdf" });
await browser.CloseAsync();
Result: Same Chromium rendering as IronPDF, more verbose API.
Best For
- Teams with $0 budget
- Projects already using Playwright for testing
- Apps tolerating deployment complexity
- Simple HTML-to-PDF (no manipulation needed)
Pricing
- Free (Apache 2.0 license)
- No restrictions on commercial use
Solution 3: Puppeteer-Sharp (Headless Chrome, Open Source)
What it is: .NET port of Google's Puppeteer (browser automation).
Pros
✅ Free (Apache 2.0 license)
✅ Full Chromium rendering
✅ JavaScript execution
✅ Active community
Cons
⚠️ Large deployment (~350MB+ Chromium binaries)
⚠️ Not a PDF library (generate only, no manipulation)
⚠️ Browser process management overhead
⚠️ Complex Docker deployments
Code Example
using PuppeteerSharp;
// Install via NuGet: Install-Package PuppeteerSharp
var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
var page = await browser.NewPageAsync();
await page.SetContentAsync("<h1>Hello from Puppeteer</h1>");
await page.PdfAsync("output.pdf");
await browser.CloseAsync();
Best For
- Budget-constrained projects
- Simple HTML-to-PDF conversion
- Teams comfortable with browser automation tools
Pricing
- Free (Apache 2.0 license)
Solution 4: Aspose.PDF (Commercial)
What it is: Comprehensive PDF library with limited HTML rendering.
Pros
✅ Extensive PDF manipulation features
✅ Commercial support
✅ Mature codebase (20+ years)
✅ No external dependencies
Cons
⚠️ Limited HTML/CSS support (no flexbox, grid, modern CSS)
⚠️ No JavaScript execution
⚠️ Expensive ($1,999-$4,999 per developer)
⚠️ Complex API for HTML rendering
Code Example
using Aspose.Pdf;
// Install via NuGet: Install-Package Aspose.PDF
var htmlLoadOptions = new HtmlLoadOptions();
var document = new Document(new MemoryStream(Encoding.UTF8.GetBytes(html)), htmlLoadOptions);
document.Save("output.pdf");
Best For
- Legacy applications already using Aspose
- PDF manipulation without HTML rendering
- Teams needing SLA-backed support
Pricing
- $1,999 per developer (one-time)
- Or $4,999 for Developer Small Business
- Annual renewals for updates
Solution 5: Syncfusion Essential PDF (Commercial)
What it is: Part of Syncfusion's Essential Studio suite.
Pros
✅ Good PDF manipulation features
✅ Part of larger UI suite (if you use other Syncfusion components)
✅ Commercial support
Cons
⚠️ Limited HTML/CSS support (no flexbox, grid)
⚠️ No JavaScript execution
⚠️ Annual subscription ($995/year per developer)
⚠️ Requires larger suite purchase
Code Example
using Syncfusion.HtmlConverter;
using Syncfusion.Pdf;
// Install via NuGet: Install-Package Syncfusion.HtmlToPdfConverter.Net.Windows
HtmlToPdfConverter converter = new HtmlToPdfConverter();
PdfDocument document = converter.Convert(html);
document.Save("output.pdf");
document.Close(true);
Best For
- Teams already using Syncfusion UI components
- Simple HTML layouts (no modern CSS)
Pricing
- $995 per developer per year
- Part of Essential Studio license
Solution 6: QuestPDF (Programmatic, Not HTML)
What it is: Fluent API for programmatic PDF generation (not HTML-based).
Pros
✅ Free for < $2M revenue (MIT license)
✅ Modern C# API (fluent, type-safe)
✅ Good documentation
✅ Active development
Cons
⚠️ Not HTML-based (programmatic layout only)
⚠️ Requires learning custom API
⚠️ Commercial license for > $2M revenue
Code Example
using QuestPDF.Fluent;
using QuestPDF.Helpers;
// Install via NuGet: Install-Package QuestPDF
Document.Create(container =>
{
container.Page(page =>
{
page.Content().Text("Hello from QuestPDF").FontSize(24);
});
}).GeneratePdf("output.pdf");
Best For
- Code-first PDF generation (not HTML conversion)
- Teams preferring programmatic layouts
- Projects with < $2M annual revenue
Pricing
- Free for < $2M revenue (MIT license)
- Commercial license for > $2M
Abandoned Solutions (Do Not Use)
wkhtmltopdf (Abandoned January 2023)
Status: Project discontinued, no longer maintained.
Problems:
- Based on Qt WebKit (frozen in 2015)
- No modern CSS support (no flexbox, grid)
- Security vulnerabilities unfixed
- No .NET Core support without hacks
Don't use. Migrate to IronPDF or Playwright.
DinkToPDF (Wraps Abandoned wkhtmltopdf)
Status: Depends on wkhtmltopdf (abandoned).
Problems:
- Inherits all wkhtmltopdf problems
- No active maintenance
- Security compliance failures
Don't use. Migrate to modern alternative.
iTextSharp 5.x (Frozen Since 2016)
Status: Replaced by iText 7 (different API, AGPL trap).
Problems:
- Terrible HTML support
- Abandoned codebase (no updates since 2016)
- Security vulnerabilities unfixed (CVE-2020-15522)
- AGPL licensing trap
Don't use. Migrate to IronPDF.
Feature Comparison Matrix
| Feature | IronPDF | Playwright | Puppeteer | Aspose | Syncfusion | QuestPDF |
|---|---|---|---|---|---|---|
| Flexbox/Grid | ✅ Yes | ✅ Yes | ✅ Yes | ❌ No | ❌ No | N/A |
| JavaScript | ✅ Yes | ✅ Yes | ✅ Yes | ❌ No | ❌ No | N/A |
| Bootstrap | ✅ Works | ✅ Works | ✅ Works | ❌ Breaks | ❌ Breaks | N/A |
| Google Fonts | ✅ Yes | ✅ Yes | ✅ Yes | ⚠️ Manual | ⚠️ Manual | ✅ Yes |
| PDF Merge | ✅ Yes | ❌ No | ❌ No | ✅ Yes | ✅ Yes | ✅ Yes |
| PDF Split | ✅ Yes | ❌ No | ❌ No | ✅ Yes | ✅ Yes | ✅ Yes |
| Forms | ✅ Yes | ❌ No | ❌ No | ✅ Yes | ✅ Yes | ⚠️ Limited |
| Signatures | ✅ Yes | ❌ No | ❌ No | ✅ Yes | ✅ Yes | ❌ No |
| Docker Size | ~100MB | ~400MB | ~350MB | ~50MB | ~50MB | ~50MB |
| .NET 10 | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
| Linux | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ⚠️ Limited | ✅ Yes |
Cost Comparison (5 Developers, 3 Years)
| Solution | Year 1 | Year 2 | Year 3 | Total |
|---|---|---|---|---|
| IronPDF | $3,745 | $0 | $0 | $3,745 |
| Playwright | $0 | $0 | $0 | $0 |
| Puppeteer | $0 | $0 | $0 | $0 |
| Aspose.PDF | $9,995 | $0 | $0 | $9,995 |
| Syncfusion | $4,975 | $4,975 | $4,975 | $14,925 |
| QuestPDF | $0* | $0* | $0* | $0* |
* Free for < $2M revenue
Decision Framework
Choose IronPDF if:
- ✅ You need modern HTML/CSS support (Bootstrap, Tailwind, flexbox, grid)
- ✅ You want both generation and manipulation (merge, split, forms)
- ✅ You value simple APIs and commercial support
- ✅ Budget allows $749 per developer
Choose Playwright/Puppeteer if:
- ✅ Budget is $0
- ✅ You only need HTML-to-PDF (no manipulation)
- ✅ You can tolerate deployment complexity (400MB Docker images)
- ✅ You're already using them for testing
Choose Aspose/Syncfusion if:
- ✅ You need extensive PDF manipulation (not HTML rendering)
- ✅ You don't use modern CSS frameworks
- ✅ You require enterprise SLA support
- ✅ Budget allows $1,000-$2,000+ per developer
Choose QuestPDF if:
- ✅ You prefer code-first PDF generation
- ✅ You don't need HTML conversion
- ✅ Revenue < $2M/year
Avoid:
- ❌ wkhtmltopdf (abandoned January 2023)
- ❌ DinkToPDF (wraps abandoned wkhtmltopdf)
- ❌ iTextSharp 5.x (frozen since 2016)
The Bottom Line: 2025 Recommendations
For production .NET apps:
- Best overall: IronPDF ($749, modern rendering, simple API, full features)
- Best free option: Playwright (free, modern rendering, complex deployment)
- Best for < $2M revenue: QuestPDF (code-first, not HTML)
Stop using:
- wkhtmltopdf (abandoned)
- DinkToPDF (depends on abandoned wkhtmltopdf)
- iTextSharp 5.x (frozen, terrible HTML support)
The .NET PDF landscape in 2025 is clear: if you need HTML-to-PDF, choose a Chromium-based solution (IronPDF, Playwright, or Puppeteer). Everything else is outdated.
Written by Jacob Mellor, CTO at Iron Software. Jacob created IronPDF and leads a team of 50+ engineers building .NET document processing libraries.
Top comments (0)