A scoped print stylesheet hides everything except the #contract-print article, then positions it at the page origin with padding. The executed signatures block is rendered inside that article precisely so it lands in the PDF, with break-inside-avoid on each block. The builder side can also open the customer page with ?print=1 to land straight on the print dialog.
Also called: download contract PDF · save as PDF · print contract · copy of my contract
- 1@media print { body * { visibility: hidden } #contract-print, #contract-print * { visibility: visible } } — the same rule on the customer page and the admin viewer 'so the downloaded PDF looks identical from either surface'.
- 2The customer's Print button is pinned in the sticky top bar, reachable from deep in a long agreement.
- 3?print=1 auto-fires window.print() once after a 400ms paint delay, guarded so it can't re-fire on re-render.
- 4Auto-print is refused on a pending contract, which would otherwise print the hold screen.
The signatures block was deliberately moved inside the printable article: 'rendered INSIDE the printable article so the customer's + builder's drawn signatures land in the downloaded PDF (the print stylesheet only keeps #contract-print visible).' The pinned button has its own note — it is 'pinned so a customer scrolling deep into the agreement can grab a copy without scrolling back to top.'
- Printed contracts carrying dashboard chrome
- Signatures visible on screen but absent from the PDF
- No self-serve copy for the customer
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →