DEV Community

IronSoftware
IronSoftware

Posted on

IronPDF Cookbook — Quick Code Examples for C#

Need a quick IronPDF code example? This cookbook provides copy-paste code snippets for common PDF tasks in C#.

Jump to the example you need:

Table of Contents

  1. HTML to PDF (Basic)
  2. URL to PDF
  3. Add Watermarks
  4. Merge PDFs
  5. Split PDFs
  6. Add Page Numbers
  7. Password Protect
  8. Digital Signatures
  9. Extract Text
  10. Compress PDFs
  11. Convert Images to PDF
  12. Headers and Footers
  13. Custom Margins
  14. PDF/A Archival
  15. Async Batch Processing

1. HTML to PDF (Basic)

Convert HTML string to PDF:

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

var html = @"
<!DOCTYPE html>
<html>
<head>
    <style>
        body { font-family: Arial, sans-serif; margin: 40px; }
        h1 { color: #333; }
    </style>
</head>
<body>
    <h1>Invoice #12345</h1>
    <p>Date: January 26, 2025</p>
    <p><strong>Total: $1,500</strong></p>
</body>
</html>";

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

Convert HTML file to PDF:

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

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("invoice-template.html");
pdf.SaveAs("invoice.pdf");
Enter fullscreen mode Exit fullscreen mode

2. URL to PDF

Render a web page as PDF:

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

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("webpage.pdf");
Enter fullscreen mode Exit fullscreen mode

With custom timeout:

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

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.Timeout = 120; // 120 seconds

var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("webpage.pdf");
Enter fullscreen mode Exit fullscreen mode

3. Add Watermarks

Add HTML watermark to existing PDF:

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

var pdf = PdfDocument.FromFile("contract.pdf");

pdf.ApplyWatermark(@"
    <h1 style='color: rgba(255,0,0,0.3);
               transform: rotate(-45deg);
               font-size: 60px;'>
        DRAFT
    </h1>");

pdf.SaveAs("contract-draft.pdf");
Enter fullscreen mode Exit fullscreen mode

Add image watermark:

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

var pdf = PdfDocument.FromFile("document.pdf");

pdf.ApplyWatermark(@"
    <img src='watermark-logo.png'
         style='opacity: 0.5; width: 200px;' />");

pdf.SaveAs("watermarked.pdf");
Enter fullscreen mode Exit fullscreen mode

4. Merge PDFs

Merge multiple PDFs into one:

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

var pdf1 = PdfDocument.FromFile("invoice1.pdf");
var pdf2 = PdfDocument.FromFile("invoice2.pdf");
var pdf3 = PdfDocument.FromFile("invoice3.pdf");

var merged = PdfDocument.Merge(pdf1, pdf2, pdf3);
merged.SaveAs("merged-invoices.pdf");
Enter fullscreen mode Exit fullscreen mode

Merge from file paths:

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

var files = new[] { "doc1.pdf", "doc2.pdf", "doc3.pdf" };
var pdfs = files.Select(f => PdfDocument.FromFile(f)).ToArray();

var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
Enter fullscreen mode Exit fullscreen mode

5. Split PDFs

Split PDF into individual pages:

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

var pdf = PdfDocument.FromFile("report.pdf");

for (int i = 0; i < pdf.PageCount; i++)
{
    var singlePage = pdf.CopyPage(i);
    singlePage.SaveAs($"page-{i + 1}.pdf");
}
Enter fullscreen mode Exit fullscreen mode

Extract specific page range:

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

var pdf = PdfDocument.FromFile("report.pdf");

// Extract pages 3-7 (zero-indexed: 2-6)
var excerpt = pdf.CopyPages(2, 6);
excerpt.SaveAs("excerpt.pdf");
Enter fullscreen mode Exit fullscreen mode

6. Add Page Numbers

Add page numbers to footer:

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

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align: center;
                    font-size: 10px;
                    color: #666;'>
            Page {page} of {total-pages}
        </div>"
};

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

Add page numbers with date:

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

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='display: flex;
                    justify-content: space-between;
                    font-size: 10px;
                    padding: 0 20px;'>
            <span>{date}</span>
            <span>Page {page} of {total-pages}</span>
        </div>"
};

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

7. Password Protect

Encrypt PDF with password:

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

var pdf = PdfDocument.FromFile("sensitive-data.pdf");

// Owner password (full access)
pdf.Password = "owner-password-123";

// User password (restricted access)
pdf.SecuritySettings.UserPassword = "user-password-456";

// Restrict permissions
pdf.SecuritySettings.AllowUserPrinting = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserAnnotations = false;

pdf.SaveAs("encrypted.pdf");
Enter fullscreen mode Exit fullscreen mode

256-bit AES encryption:

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

var pdf = PdfDocument.FromFile("document.pdf");

pdf.SecuritySettings.OwnerPassword = "owner-pass";
pdf.SecuritySettings.UserPassword = "user-pass";
pdf.SecuritySettings.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256;

pdf.SaveAs("encrypted-aes256.pdf");
Enter fullscreen mode Exit fullscreen mode

8. Digital Signatures

Sign PDF with certificate:

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

var pdf = PdfDocument.FromFile("contract.pdf");

var signature = new PdfSignature("certificate.pfx", "certificate-password");
signature.SigningContact = "legal@company.com";
signature.SigningLocation = "New York, USA";
signature.SigningReason = "Contract Approval";

pdf.Sign(signature);
pdf.SaveAs("signed-contract.pdf");
Enter fullscreen mode Exit fullscreen mode

Sign with visible signature image:

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

var pdf = PdfDocument.FromFile("contract.pdf");

var signature = new PdfSignature("certificate.pfx", "password");
signature.SignatureImage = "signature-image.png";

pdf.Sign(signature);
pdf.SaveAs("signed-contract.pdf");
Enter fullscreen mode Exit fullscreen mode

9. Extract Text

Extract all text from PDF:

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

var pdf = PdfDocument.FromFile("document.pdf");
var text = pdf.ExtractAllText();

Console.WriteLine(text);
Enter fullscreen mode Exit fullscreen mode

Extract text from specific page:

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

var pdf = PdfDocument.FromFile("document.pdf");
var textPage1 = pdf.Pages[0].ExtractText();
var textPage2 = pdf.Pages[1].ExtractText();

Console.WriteLine($"Page 1: {textPage1}");
Console.WriteLine($"Page 2: {textPage2}");
Enter fullscreen mode Exit fullscreen mode

Search for text:

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

var pdf = PdfDocument.FromFile("document.pdf");
var results = pdf.FindText("invoice");

foreach (var result in results)
{
    Console.WriteLine($"Found on page {result.PageNumber} at position ({result.X}, {result.Y})");
}
Enter fullscreen mode Exit fullscreen mode

10. Compress PDFs

Compress images in PDF:

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

var pdf = PdfDocument.FromFile("large-report.pdf");

// Compress images to 70% quality
pdf.CompressImages(70);

pdf.SaveAs("compressed-report.pdf");
Enter fullscreen mode Exit fullscreen mode

Reduce file size with multiple optimizations:

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

var pdf = PdfDocument.FromFile("large-document.pdf");

pdf.CompressImages(75); // JPEG quality
pdf.ReduceFileSize(); // Additional optimizations

pdf.SaveAs("optimized-document.pdf");
Enter fullscreen mode Exit fullscreen mode

11. Convert Images to PDF

Convert single image to PDF:

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

var pdf = ImageToPdfConverter.ImageToPdf("photo.jpg");
pdf.SaveAs("photo.pdf");
Enter fullscreen mode Exit fullscreen mode

Convert multiple images to one PDF:

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

var images = new[] { "page1.jpg", "page2.jpg", "page3.jpg" };
var pdf = ImageToPdfConverter.ImageToPdf(images);

pdf.SaveAs("scanned-document.pdf");
Enter fullscreen mode Exit fullscreen mode

Convert PDF to images:

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

var pdf = PdfDocument.FromFile("presentation.pdf");
var images = pdf.ToBitmap();

for (int i = 0; i < images.Length; i++)
{
    images[i].SaveAs($"slide-{i + 1}.png");
}
Enter fullscreen mode Exit fullscreen mode

High-resolution PDF to image:

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

var pdf = PdfDocument.FromFile("document.pdf");
var images = pdf.ToBitmap(dpi: 300); // High DPI for printing

images[0].SaveAs("page1-highres.png");
Enter fullscreen mode Exit fullscreen mode

12. Headers and Footers

Add header and footer:

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

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align: center;
                    font-size: 12px;
                    font-weight: bold;'>
            Company Name
        </div>",
    DrawDividerLine = true
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align: center;
                    font-size: 10px;'>
            Page {page} of {total-pages}
        </div>",
    DrawDividerLine = true
};

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

Header with logo:

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

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='display: flex;
                    justify-content: space-between;
                    align-items: center;'>
            <img src='company-logo.png' height='40'>
            <span style='font-size: 12px;'>Confidential</span>
        </div>"
};

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

13. Custom Margins

Set custom page margins:

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

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.MarginTop = 30; // mm
renderer.RenderingOptions.MarginBottom = 30;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;

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

Custom page size and orientation:

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

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;

renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.MarginLeft = 10;
renderer.RenderingOptions.MarginRight = 10;

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

14. PDF/A Archival

Convert to PDF/A (archival standard):

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

var pdf = PdfDocument.FromFile("report.pdf");

// Convert to PDF/A-2B
pdf.ToPdfA();

pdf.SaveAs("archival-report.pdf");
Enter fullscreen mode Exit fullscreen mode

Render directly as PDF/A:

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

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

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

15. Async Batch Processing

Async HTML rendering:

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

var renderer = new ChromePdfRenderer();

var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Async PDF</h1>");
await pdf.SaveAsAsync("output.pdf");
Enter fullscreen mode Exit fullscreen mode

Batch process multiple invoices:

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

var invoices = await _database.GetPendingInvoicesAsync();
var renderer = new ChromePdfRenderer();

foreach (var invoice in invoices)
{
    var html = await RenderInvoiceTemplateAsync(invoice);
    var pdf = await renderer.RenderHtmlAsPdfAsync(html);
    await pdf.SaveAsAsync($"invoices/invoice-{invoice.Id}.pdf");
}
Enter fullscreen mode Exit fullscreen mode

Parallel batch processing:

using IronPdf;
using System.Threading.Tasks;
// Install via NuGet: Install-Package IronPdf

var invoices = await _database.GetPendingInvoicesAsync();

await Parallel.ForEachAsync(invoices, new ParallelOptions { MaxDegreeOfParallelism = 4 }, async (invoice, ct) =>
{
    var renderer = new ChromePdfRenderer();
    var html = await RenderInvoiceTemplateAsync(invoice);
    var pdf = await renderer.RenderHtmlAsPdfAsync(html);
    await pdf.SaveAsAsync($"invoices/invoice-{invoice.Id}.pdf");
});
Enter fullscreen mode Exit fullscreen mode

Bonus: Common Patterns

Fill PDF Form Fields

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

var pdf = PdfDocument.FromFile("application-form.pdf");

pdf.Form.SetFieldValue("full_name", "John Doe");
pdf.Form.SetFieldValue("email", "john@example.com");
pdf.Form.SetFieldValue("agree_terms", "true");

pdf.SaveAs("completed-application.pdf");
Enter fullscreen mode Exit fullscreen mode

Extract Images from PDF

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

var pdf = PdfDocument.FromFile("brochure.pdf");
var images = pdf.ExtractAllImages();

for (int i = 0; i < images.Length; i++)
{
    File.WriteAllBytes($"image-{i}.png", images[i]);
}
Enter fullscreen mode Exit fullscreen mode

Render Razor View to PDF (ASP.NET)

using IronPdf;
using Microsoft.AspNetCore.Mvc;
// Install via NuGet: Install-Package IronPdf

public async Task<IActionResult> GenerateInvoicePdf(int invoiceId)
{
    var invoice = await _database.GetInvoiceAsync(invoiceId);

    // Render Razor view to HTML string
    var html = await _razorEngine.RenderViewToStringAsync("InvoiceTemplate", invoice);

    // Convert HTML to PDF
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(html);

    return File(pdf.BinaryData, "application/pdf", $"invoice-{invoiceId}.pdf");
}
Enter fullscreen mode Exit fullscreen mode

Render JavaScript Charts

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

var renderer = new ChromePdfRenderer();

// Wait for JavaScript to execute
renderer.RenderingOptions.RenderDelay = 1000; // 1 second
renderer.RenderingOptions.EnableJavaScript = true;

var pdf = renderer.RenderHtmlAsPdf(htmlWithChartJs);
pdf.SaveAs("sales-report.pdf");
Enter fullscreen mode Exit fullscreen mode

Additional Resources


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)