Skip to content
Press.js Press.js Press.js Docs

Report & Feedback

Building a PDF pagination engine is surprisingly complex. Press.js takes a web page — with all the freedom that CSS, JavaScript, and the DOM provide — and must decide exactly where every line of text, every image, and every table cell lands on each page. It handles page breaks, measures element sizes, tracks overflow, re-flows content, and iterates until everything fits.

The web is vast — CSS properties, layout patterns, and content structures combine in effectively infinite ways. We cannot cover every edge case.

Some issues we see come from the categories covered in Caveats — web features that degrade in PDF output. Others are genuine pagination bugs: a page break that splits a block in the wrong place, a table that overflows its container instead of continuing on the next page, or an element that disappears entirely.

Complex documents — deeply nested tables, heavily customized layouts, unusual CSS — are the most likely to expose these edge cases.

If you encounter a document that does not render correctly, please open an issue at github.com/press-js/press-js/issues. A minimal reproduction helps a lot.

Press.js is open source. If you find a bug and want to fix it yourself, pull requests are welcome. The core pagination engine lives in packages/core/src/, and the Playwright renderer is in packages/playwright/src/.