PrintAcross is a web app which allows you to print large images across multiple pages.

Printing in browser has always been limited, imprecise and cumbersome. PrintAcross tries to work around all the limitations of the browsers, to give the user the ability to get precise printing across multiple pages while minimizing the required configurations.

License: AGPL-3.0

Getting started

Go to the examples page and click on an image.


Use a recent version for best results.

  • Recommended: Firefox
  • Compatible: Firefox, Chrome, Safari.
  • Untested: Internet Explorer
  • Broken: Opera (too many printing issues), Chromium 28 (crash when opening printing dialog)


  • languages: en, fr, es (50%)
  • measuring units: cm, mm, m, inch, feet
  • any paper size
  • open images from your computer (if the browser supports it)
  • precise scaling of your images (option to measure distances within images)
  • dynamic printing layout as you resize and move the images
  • remembers the last calibration (cookie)
  • works offline seamlessly (files are kept in the AppCache)
  • can be installed locally (except for Chrome/Chromium)

How it works

One of the biggest obstacles to printing in the browsers is that there is no way (for now) for the web page to know with precision the size of the page's printing area.

So I came up with a simple solution: ask the user to print a simple calibration page first, measure the printed area, then tell PrintAcross the measured size. This calibration process needs to be done only once. And it gives great results. I can then print anything with millimetric precision, even when printing very large images spanning multiple pages.

When a printing API is added to browsers, it will be easy to add support for it in PrintAcross.

Tip: always remove any header, any footer and any margin in the print dialog to maximize the size of the printing area. And always print with the same printing options, otherwise it will skew the resulting printed sizes.


Development started in 2010 for a private project. Printing has been working in Firefox, Chrome and Safari since 2012. In July 2013, I decided to make it public so that it could benefit others.


  • v0.1a (28 Jan. 2016):
    • Renamed "calque" to "layer"
    • Separe overlap settings from printerSettings ?
    • Updated to jQuery 2
    • Simplify layer loading code
    • Added GUI error message on image loading error
    • Keep the origine static when moving layers
    • PointerLayer now use css background image
    • When a pin is removed, remove both
    • Added SVG image support
    • Reorder dom element instead of using z-index for layers
    • Start versioning with git
  • v0 (July 2013):
    • Code open sourced, uploaded "as is".