Blog
Rasterizing a PDF: Why 'Just Screenshot the Page' Doesn't Scale
Turning a PDF page into a JPEG means running a full rendering pipeline, and the DPI you pick trades off sharpness against file size in ways a screenshot never lets you control.
Somewhere at some point, most people have tried the manual version of PDF-to-image conversion: open the file, zoom to what looks like a reasonable size, hit the screenshot shortcut, crop. It works, sort of, for one page. It falls apart immediately at any scale beyond that, and the reasons why say something useful about what actually has to happen to turn a page of vector instructions into a fixed grid of pixels.
A PDF page has no "natural" pixel size
A screenshot captures whatever happens to be on screen at whatever zoom level the viewer was set to, at whatever resolution the monitor happens to run — none of which has any principled relationship to the actual content of the page. A PDF page's content stream draws in points (1/72 of an inch), using vector paths for lines and shapes, glyph outlines for text, and embedded raster objects for any photos. None of that has a pixel size until a rendering engine is told what resolution to target. Ask for the page at 72 DPI and a standard letter page comes out 612×792 pixels; ask for the same page at 300 DPI and it comes out 2550×3300 pixels — same content, wildly different pixel grids, because DPI is the deciding factor, not some property baked into the file.
What the rendering pipeline actually does
Converting a page to an image means running a real rasterizer: parsing the page's content stream instruction by instruction, resolving each drawing operator (fill this path, stroke this line, draw this glyph, place this image) against the target pixel grid, and compositing the results in the correct stacking order with the correct transparency and clipping applied. Text is the part people underestimate — a glyph in a PDF is a vector outline, and turning "the letter g in this font at this size at this position" into the correct set of shaded pixels (with anti-aliasing so the curve doesn't look jagged) is genuinely nontrivial work, repeated for every character on the page. A page with dense body text at 10pt can involve rendering thousands of individual glyph outlines. This is the whole reason PDF rendering engines are substantial pieces of software (Mozilla's pdf.js is tens of thousands of lines; Poppler and MuPDF are C/C++ codebases with years of accumulated edge-case handling) rather than something you'd casually reimplement — getting font hinting, transparency groups, and color spaces right across the huge variety of PDFs that exist in the wild is most of the difficulty.
A screenshot skips all of that by relying on whatever the on-screen viewer already rendered — which means you inherit that viewer's zoom-level artifacts, its own anti-aliasing choices, and the resolution ceiling of your display, with no way to ask for something sharper than what happened to already be on screen.
The DPI vs. file-size tradeoff, with real numbers
Once rasterization is in the tool's own hands rather than dependent on a screenshot, DPI becomes a direct, controllable tradeoff. A single letter-size page rendered at 72 DPI (roughly "web quality," fine for a quick preview) produces a raw pixel buffer of about 1.9 million pixels; at 150 DPI (readable print quality) that's around 8.2 million pixels; at 300 DPI (standard print resolution) it's about 32.8 million pixels — a 17x increase in raw pixel count from 72 to 300 DPI on the exact same page. After JPEG compression the gap narrows because JPEG exploits redundancy in photographic content, but text-heavy pages compress less predictably than photos, so a scanned document rendered at high DPI can still produce a JPEG several times larger than the same page at low DPI. That's the real reason PDF-to-JPG tools expose a resolution or quality choice rather than just picking one fixed setting: someone converting a contract for archival wants every serif legible under zoom, while someone converting a page for a quick chat message mostly wants a small file that loads instantly.
Why JPEG specifically, and where it shows its seams
JPEG compression works by discarding information the human eye is less sensitive to — subtle color gradations more than subtle brightness gradations — which is a fine tradeoff for photographs and a rougher one for pages that are mostly sharp black text on white background. Rasterize a text-heavy page and compress it aggressively, and you'll start to see the telltale JPEG artifact around letterforms: soft haloing or slight color fringing around otherwise crisp black edges, because the compression algorithm is smoothing over exactly the kind of high-contrast edge that text produces constantly. This is why formats like PNG exist for screenshots of text-heavy content — but PDF-to-JPG tools exist because JPEG's much smaller file size is usually the point: someone converting a 40-page PDF into images for a slideshow or an email attachment cares more about total size than about zooming to 400% and inspecting glyph edges.
Multi-page handling
Because rasterization happens one page at a time against the content stream, converting a multi-page PDF into images naturally produces one image per page rather than one giant stitched image — each page is rendered independently, at the same chosen DPI, and exported separately. That's what the PDF to JPG tool on this site does: walk the document page by page, rasterize each one at the resolution you pick, and hand back a JPEG per page — the same pipeline described above, just run once per page instead of once, with no dependency on a screen, a zoom level, or a screenshot tool anywhere in the process.
