A page is an object

A PDF is not one document but a numbered set of page objects, each holding its own text, links and images. Merging, splitting and reordering rewrite a list of references: copyPages carries a page whole, so an index taken twice gives two independent pages. Nothing there is rasterised, so a photograph inside a page is never re-compressed. The page editor rebuilds the file once at the end, not after each change.

Rotation is the clearest case. A page carries a rotation value: 0, 90, 180 or 270, that the reader applies as it draws; nothing is redrawn. It appears in no file listing, so a sideways page is found only by looking. A turn is added to the angle already there: 90° on a page at 90° ends at 180°.

Reading a PDF back out

Text comes out through a second engine: pdf-lib has no text layer, so pdf.js parses the file in a background worker. What it returns is not OCR but the characters already in the file. A scan holds none, so the result is empty and the tool sends you to OCR. Word order is the drawing order, nothing sorts the pieces by position, so two columns or a table can interleave.

Rendering to JPG or PNG has a ceiling: each page is clamped to 4096 pixels on its longest side, because iOS Safari caps one canvas near 16.7 megapixels and a page drawn larger comes back blank, not an error. At 300 DPI an A4 page is 3508 pixels tall; an A3 page meets that ceiling and lands near 248 DPI.

What will not work

A PDF that wants a password before it opens is turned away, and says so rather than failing vaguely; take the password off in your own reader first.

Stamped text uses Helvetica, hence WinAnsi only: Latin letters, digits, common punctuation. Cyrillic and emoji cannot be encoded in it, so a watermark containing them is refused rather than quietly dropped.

Photographs become pages through a library that embeds JPEG and PNG and nothing else, so a WebP or AVIF picture is re-decoded by the browser and re-encoded as JPEG at quality 0.92, a second lossy pass. The browser cannot decode everything: an iPhone HEIC often arrives with no image type and is skipped by name instead of becoming a page.

Tools
Tools
All 42 tools