DEV Community

IronSoftware
IronSoftware

Posted on

Convert ASPX to PDF in C# (.NET Guide)

I've converted plenty of ASPX pages to PDF over the years — invoices, reports, receipts. The first time, I used iTextSharp and spent two days fighting with HTML parsing. The second time, I tried a commercial library that required a 200-line configuration file.

Now I just call one method and move on.

using IronPdf;
// Install via NuGet: Install-Package IronPdf

protected void Page_Load(object sender, EventArgs e)
{
    IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
Enter fullscreen mode Exit fullscreen mode

The page renders as a PDF instead of HTML. All your CSS, images, and JavaScript work exactly as they do in a browser.

Why Would I Convert ASPX to PDF?

ASP.NET Web Forms are still everywhere in enterprise applications. Users need printable invoices, exportable reports, and archivable documents. They expect a "Download PDF" button that just works.

I built a ticketing system where users could print their event tickets. The ASPX page displayed the QR code, event details, and terms. The PDF export button rendered the exact same content for printing. No duplicate templates, no manual layout code.

What's Different from Other PDF Libraries?

I tried several approaches before landing on IronPDF:

iTextSharp: Great for programmatic PDF construction. Terrible for converting existing HTML. You're using low-level API calls to position text and shapes. If your ASPX page has a complex layout, you're rebuilding it from scratch in code.

wkhtmltopdf: Free command-line tool. It uses an ancient WebKit engine that's years behind modern browsers. I ran into bugs with flexbox, CSS Grid, and modern JavaScript. Plus, calling command-line tools from ASP.NET is messy and slow.

SelectPdf / GemBox / SautinSoft: Commercial libraries that work, but they require more setup and don't match browser rendering as closely.

IronPDF: Uses Chromium (the engine behind Chrome). If your page looks right in Chrome, it looks right in the PDF. You're converting HTML, not approximating it.

How Do I Convert an ASPX Page from a URL?

Sometimes you need to convert a different page, not the current one:

var renderer = new [ChromePdfRenderer](https://ironpdf.com/blog/videos/how-to-render-html-string-to-pdf-in-csharp-ironpdf/)();
var pdf = renderer.RenderUrlAsPdf("https://example.com/invoice.aspx?id=12345");
pdf.SaveAs("Invoice-12345.pdf");
Enter fullscreen mode Exit fullscreen mode

This is useful for batch processing. I built a nightly job that generates monthly statements by looping through customer IDs and rendering each statement page to PDF.

Can I Convert HTML Strings Instead of Full Pages?

Yes, and this is often cleaner for dynamic content:

var renderer = new ChromePdfRenderer();

var html = $@"
<html>
<head>
    <style>
        body {{ font-family: Arial, sans-serif; }}
        .total {{ font-weight: bold; color: green; }}
    </style>
</head>
<body>
    <h1>Order Confirmation</h1>
    <p>Thank you for your order!</p>
    <p class='total'>Total: ${orderTotal:F2}</p>
</body>
</html>
";

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("Order.pdf");
Enter fullscreen mode Exit fullscreen mode

I use this pattern for email-style receipts. The HTML template is easier to maintain than ASPX markup, and I can test it in a browser before converting to PDF.

What Settings Can I Control?

The ChromePdfRenderOptions class lets you configure nearly everything:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape;
renderer.RenderingOptions.MarginTop = 40;
renderer.RenderingOptions.MarginBottom = 40;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

var pdf = renderer.RenderHtmlAsPdf(html);
Enter fullscreen mode Exit fullscreen mode

Common settings I adjust:

  • PaperSize: A4, Letter, Legal, or custom dimensions
  • Margins: Control whitespace around content
  • EnableJavaScript: Run scripts before rendering (useful for charts)
  • CreatePdfFormsFromHtml: Convert HTML forms to fillable PDF forms
  • PrintHtmlBackgrounds: Include background colors and images

How Do I Add Headers and Footers?

Headers and footers support HTML and placeholders:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center;'>Invoice</div>",
    DrawDividerLine = true
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>"
};

AspxToPdf.RenderThisPageAsPdf(renderer);
Enter fullscreen mode Exit fullscreen mode

Available placeholders:

  • {page} — Current page number
  • {total-pages} — Total pages
  • {date} — Current date
  • {time} — Current time
  • {url} — Page URL

I use these for compliance documents where every page needs a timestamp and page count.

Can I Create Interactive PDF Forms?

Set CreatePdfFormsFromHtml = true, and IronPDF converts HTML form elements to fillable PDF fields:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

var html = @"
<form>
    <label>Name: <input type='text' name='customerName' /></label><br/>
    <label>Email: <input type='email' name='email' /></label><br/>
    <label><input type='checkbox' name='subscribe' /> Subscribe</label>
</form>
";

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("Form.pdf");
Enter fullscreen mode Exit fullscreen mode

When users open the PDF, they can fill in the fields. I use this for contracts and applications that need digital signatures.

How Do I Handle Images and CSS Files?

Use absolute URLs or set a base path:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    BaseUrl = "https://example.com"
};

var html = @"
<html>
<head>
    <link rel='stylesheet' href='/styles/invoice.css' />
</head>
<body>
    <img src='/images/logo.png' alt='Logo' />
    <p>Invoice content...</p>
</body>
</html>
";

var pdf = renderer.RenderHtmlAsPdf(html);
Enter fullscreen mode Exit fullscreen mode

The BaseUrl resolves relative paths. Without it, the library can't find your CSS and images.

For embedded images, use base64 data URIs:

var logo = Convert.ToBase64String(File.ReadAllBytes("logo.png"));
var html = $"<img src='data:image/png;base64,{logo}' />";
Enter fullscreen mode Exit fullscreen mode

Can I Add Watermarks or Digital Signatures?

Yes. For watermarks:

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.ApplyWatermark("<h1 style='color:red;opacity:0.3;'>DRAFT</h1>");
pdf.SaveAs("Draft.pdf");
Enter fullscreen mode Exit fullscreen mode

For digital signatures:

var certificate = new X509Certificate2("certificate.pfx", "password");
var signature = new IronPdf.Signing.PdfSignature(certificate);

pdf.Sign(signature);
pdf.SaveAs("Signed.pdf");
Enter fullscreen mode Exit fullscreen mode

I use digital signatures for legal documents that require non-repudiation.

What About Performance for Bulk Conversions?

IronPDF supports async and parallel processing:

var invoiceIds = new[] { 101, 102, 103, 104, 105 };

await Parallel.ForEachAsync(invoiceIds, async (id, cancellationToken) =>
{
    var html = await GenerateInvoiceHtmlAsync(id);
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs($"Invoice-{id}.pdf");
});
Enter fullscreen mode Exit fullscreen mode

I built a monthly statement generator that processes 10,000+ customer accounts overnight. Parallel processing makes it feasible.

Does This Work with .NET Core?

Yes. IronPDF supports:

  • .NET Framework 4.x+ (classic ASP.NET Web Forms)
  • .NET Core 2.0+
  • .NET 5, 6, 7, 8, 9, 10

The API is identical across platforms. For .NET Core MVC or Razor Pages, you'd use RenderHtmlAsPdf() instead of RenderThisPageAsPdf(), but the rendering engine and options are the same.

Quick Reference: Common Patterns

Simple ASPX to PDF:

IronPdf.AspxToPdf.RenderThisPageAsPdf();
Enter fullscreen mode Exit fullscreen mode

ASPX to PDF with filename:

AspxToPdf.RenderThisPageAsPdf(
    AspxToPdf.FileBehavior.Attachment,
    "Report.pdf"
);
Enter fullscreen mode Exit fullscreen mode

URL to PDF:

var pdf = new ChromePdfRenderer().RenderUrlAsPdf(url);
Enter fullscreen mode Exit fullscreen mode

HTML string to PDF:

var pdf = new ChromePdfRenderer().RenderHtmlAsPdf(html);
Enter fullscreen mode Exit fullscreen mode

HTML file to PDF:

var pdf = new ChromePdfRenderer().RenderHtmlFileAsPdf("page.html");
Enter fullscreen mode Exit fullscreen mode

The full ASPX to PDF conversion guide covers advanced scenarios like metadata editing, PDF/A compliance, and rasterization.


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)