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
- HTML to PDF (Basic)
- URL to PDF
- Add Watermarks
- Merge PDFs
- Split PDFs
- Add Page Numbers
- Password Protect
- Digital Signatures
- Extract Text
- Compress PDFs
- Convert Images to PDF
- Headers and Footers
- Custom Margins
- PDF/A Archival
- 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");
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");
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");
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");
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");
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");
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");
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");
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");
}
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");
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");
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");
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");
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");
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");
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");
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);
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}");
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})");
}
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");
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");
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");
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");
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");
}
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");
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");
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");
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");
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");
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");
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");
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");
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");
}
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");
});
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");
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]);
}
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");
}
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");
Additional Resources
- Documentation: IronPDF.com/docs
- API Reference: IronPDF.com/api
- Support: Email support at support@ironsoftware.com
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)