DEV Community

IronSoftware
IronSoftware

Posted on

How to Control PDF Viewport and Zoom in C#

Converting responsive websites to PDF is tricky. The same HTML that looks perfect on desktop, mobile, and tablet needs to fit on a fixed-size PDF page. I've generated PDFs that cut off content, squeezed text into illegibility, or left massive white margins.

The solution is viewport and zoom control. You tell the PDF renderer what screen size to simulate and how much to scale the content.

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

var renderer = new [ChromePdfRenderer](https://ironpdf.com/blog/videos/how-to-render-webgl-sites-to-pdf-in-csharp-ironpdf/)();
renderer.RenderingOptions.ViewPortWidth = 1280;
renderer.RenderingOptions.Zoom = 150;  // 150% zoom

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

The viewport width sets the virtual screen size (1280 pixels), and zoom scales the content (150% = 1.5x larger).

What's the Difference Between Viewport and Zoom?

Viewport: The virtual browser window size. Responsive CSS uses this to determine layout (desktop vs mobile).

Zoom: How much to scale the rendered content. Like pinch-to-zoom in a browser.

A 1280px viewport renders the desktop version of a responsive site. A 480px viewport renders the mobile version. Zoom scales whichever version you rendered.

I built a report generator that converted dashboard pages to PDF. The dashboards used responsive CSS with breakpoints at 768px and 1280px. Setting the viewport to 1280px ensured we got the desktop layout, and zoom 120% made text readable in print.

How Do I Set the Viewport Width?

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.ViewPortWidth = 1920;  // Simulate 1920px screen

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

Common viewport widths:

  • 320-480: Mobile phones
  • 768-1024: Tablets
  • 1280-1920: Desktops
  • 2560+: High-DPI displays

Match the viewport to the layout you want. If your site has a mobile version and a desktop version, pick the viewport that triggers the right CSS.

How Do I Control Zoom?

Zoom is a percentage (100 = 100%):

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.Zoom = 80;  // 80% = smaller

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

Zoom values:

  • 100: No scaling (default)
  • 80-90: Fit more content on page
  • 120-150: Enlarge text for readability
  • 200+: Magnify for accessibility

I use 80-90% zoom for content-heavy pages where I want to fit more per page. For documents meant for printing, I use 120-130% to ensure text is readable.

Can I Combine Viewport and Zoom?

Yes, and that's usually what you want:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.ViewPortWidth = 1280;  // Desktop layout
renderer.RenderingOptions.Zoom = 125;  // Enlarge 25%

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

This renders the desktop version (1280px) and scales it to 125% for better readability.

What Are the Preset Rendering Modes?

IronPDF has five preset modes:

1. Chrome Default Rendering

renderer.RenderingOptions.PaperFit.UseChromeDefaultRendering();
Enter fullscreen mode Exit fullscreen mode

Mimics Chrome's print dialog. Good for general web pages.

2. Responsive CSS Rendering

renderer.RenderingOptions.PaperFit.UseResponsiveCssRendering(1280);
Enter fullscreen mode Exit fullscreen mode

Scales content to fit the paper size based on viewport width. I use this for responsive sites.

3. Scaled Rendering

renderer.RenderingOptions.PaperFit.UseScaledRendering(150);
Enter fullscreen mode Exit fullscreen mode

Manual zoom control (150 = 150%). Use when you need exact scaling.

4. Fit to Page

renderer.RenderingOptions.PaperFit.UseFitToPageRendering();
Enter fullscreen mode Exit fullscreen mode

Automatically scales content to fit the page width. Good for unknown content sizes.

5. Continuous Feed

renderer.RenderingOptions.PaperFit.UseContinuousFeedRendering(800, 10);
Enter fullscreen mode Exit fullscreen mode

Creates a single-page PDF with custom width and margins. Perfect for receipts or tickets.

I use Responsive CSS for most reports, Fit to Page for user-generated content, and Continuous Feed for receipts.

How Do I Render Mobile Layouts?

Set a narrow viewport:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.ViewPortWidth = 375;  // iPhone size
renderer.RenderingOptions.Zoom = 100;

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

This triggers mobile CSS breakpoints. The PDF shows the mobile layout.

I built a feature where users could preview their website's mobile version as PDF. We set the viewport to 375px (iPhone) or 768px (iPad) based on user selection.

What If My Content Is Too Wide for the Page?

Three options:

Option 1: Reduce zoom

renderer.RenderingOptions.Zoom = 80;  // Fit more
Enter fullscreen mode Exit fullscreen mode

Option 2: Increase viewport width

renderer.RenderingOptions.ViewPortWidth = 1920;  // Wider layout
Enter fullscreen mode Exit fullscreen mode

Option 3: Use Fit to Page

renderer.RenderingOptions.PaperFit.UseFitToPageRendering();
Enter fullscreen mode Exit fullscreen mode

Fit to Page automatically scales to fit. I use this when I don't know the content size in advance.

How Do I Control Paper Size?

Combine viewport/zoom with paper size:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.ViewPortWidth = 1280;
renderer.RenderingOptions.Zoom = 100;

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

Common paper sizes:

  • Letter: 8.5" x 11" (US standard)
  • A4: 210mm x 297mm (International)
  • Legal: 8.5" x 14" (US legal documents)

Match the paper size to your target. In the US, use Letter. Elsewhere, use A4.

Can I Render Different Pages with Different Settings?

Yes, render separately and merge:

var renderer1 = new ChromePdfRenderer();
renderer1.RenderingOptions.ViewPortWidth = 1280;
var page1 = renderer1.RenderHtmlAsPdf("<h1>Desktop Layout</h1>");

var renderer2 = new ChromePdfRenderer();
renderer2.RenderingOptions.ViewPortWidth = 375;
var page2 = renderer2.RenderHtmlAsPdf("<h1>Mobile Layout</h1>");

var merged = PdfDocument.Merge(page1, page2);
merged.SaveAs("mixed.pdf");
Enter fullscreen mode Exit fullscreen mode

I use this for reports that combine desktop dashboards (wide viewport) with mobile screenshots (narrow viewport).

How Do I Test Viewport and Zoom Settings?

Generate PDFs at different settings and compare:

foreach (int viewport in new[] { 768, 1024, 1280, 1920 })
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.ViewPortWidth = viewport;
    renderer.RenderingOptions.Zoom = 100;

    var pdf = renderer.RenderUrlAsPdf("https://example.com");
    pdf.SaveAs($"viewport-{viewport}.pdf");
}
Enter fullscreen mode Exit fullscreen mode

Open them side-by-side and pick what works. I do this once per template, then hardcode the values.

What About High-DPI Displays?

Set a larger viewport:

renderer.RenderingOptions.ViewPortWidth = 2560;  // 4K display
renderer.RenderingOptions.Zoom = 100;
Enter fullscreen mode Exit fullscreen mode

This simulates a high-resolution screen. Images and text render sharper.

For Retina displays, I sometimes use 2x the standard viewport (e.g., 2560 instead of 1280) to get crisper output.

Quick Reference

Setting Purpose Common Values
ViewPortWidth Virtual screen width 375 (mobile), 768 (tablet), 1280 (desktop)
Zoom Content scaling 80 (fit more), 100 (default), 120 (enlarge)
Chrome Default General web pages UseChromeDefaultRendering()
Responsive CSS Responsive sites UseResponsiveCssRendering(1280)
Fit to Page Unknown content size UseFitToPageRendering()
Continuous Feed Receipts/tickets UseContinuousFeedRendering(width, margin)

Key Principles:

  • Viewport determines layout (mobile vs desktop CSS)
  • Zoom scales the rendered content
  • Use Responsive CSS for responsive sites
  • Use Fit to Page when content size is unknown
  • Test multiple viewport/zoom combinations before deploying

The complete viewport and zoom guide covers edge cases like custom paper sizes and landscape orientation.


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)