Print a page (a map, a plan, a chart) bigger than your paper, on several sheets that you tape together. Split the page into tiles with a small script for
sumatrapdf-tool run, then print the tiles from SumatraPDF, scaled to fill the paper.Available in pre-release 3.7
Split with
sumatrapdf-tool run poster.js plan.pdf tiles.pdf 2 2, then print tiles.pdf with Fit pages to printable area. At a glance:- Split into tiles:
poster.jswith the number of columns and rows. - Overlap for gluing: an optional fifth argument, in points.
- Print:
Ctrl + P, Advanced tab, Fit pages to printable area; orSumatraPDF.exe -print-to-default -print-settings "fit" tiles.pdf.
sumatrapdf-tool is installed with SumatraPDF and added to PATH. SumatraPDF.exe Note: the poster tool is meant for splitting pages into tiles, but in the current pre-release it stops with
format error: malformed page tree. The script below does the same job.Split the page into tiles #
Save this as
poster.js:// sumatrapdf-tool run poster.js in.pdf out.pdf columns rows [overlap]
// Info: Split every page into tiles for printing as a poster.
// Arg: <INPUT> : Input PDF
// Arg: <OUTPUT> : New output PDF
// Arg: 2 : Columns
// Arg: 2 : Rows
// Arg: 0 : Overlap, in points (72 = 1 inch)
var src = Document.openDocument(scriptArgs[0]);
var out = new PDFDocument();
var cols = Number(scriptArgs[2]), rows = Number(scriptArgs[3]);
var overlap = Number(scriptArgs[4] || 0); // in points (1/72 inch)
for (var i = 0; i < src.countPages(); i++) {
for (var y = 0; y < rows; y++) {
for (var x = 0; x < cols; x++) {
out.graftPage(-1, src, i);
var page = out.loadPage(out.countPages() - 1);
var b = page.getBounds(); // visible page: [0, 0, width, height]
var w = b[2] / cols, h = b[3] / rows;
page.setPageBox("CropBox", [
Math.max(0, x * w - overlap), Math.max(0, y * h - overlap),
Math.min(b[2], (x + 1) * w + overlap), Math.min(b[3], (y + 1) * h + overlap)]);
}
}
}
out.save(scriptArgs[1]);
Split every page of
plan.pdf into 2 columns and 2 rows:sumatrapdf-tool run poster.js plan.pdf tiles.pdf 2 2
- Each page becomes
columns × rowspages, starting at the top-left tile and going row by row, left to right. - Tiles are cut from the visible page, so a cropped page is split without its margins.
- Every page of the PDF is split. For one page only, take it out first:
sumatrapdf-tool merge -o page.pdf plan.pdf 3.
To add an overlap, give it in points (72 points = 1 inch, 28.35 points = 1 cm):
sumatrapdf-tool run poster.js plan.pdf tiles.pdf 2 2 20
Each tile then reaches 20 points past every cut, so neighboring tiles share a 40-point strip that you can glue over.
How big the poster gets #
Each tile is printed to fill a sheet, so the poster is
columns sheets wide and rows sheets tall:- An A4 page split 2 × 2 and printed on A4 paper comes out about A2 size, on 4 sheets.
- 3 × 3 gives 9 sheets, three times the width and height.
Tiles of an A4 or Letter page split 2 × 2 have the same shape as the page, so they fill the paper. SumatraPDF turns a wide tile sideways to fit the paper.
Print the tiles #
- Open
tiles.pdfin SumatraPDF. - Press
Ctrl + P. - On the Advanced tab, under Page scaling, choose Fit pages to printable area. In the Windows 11 print dialog the option is under More settings → Page scaling.
- Print.
From the command line:
SumatraPDF.exe -print-to-default -print-settings "fit" tiles.pdf
Use
-print-to "<printer name>" for another printer. See Printing for all options.Tips #
- Print one tile first (e.g. Pages
1in the print dialog) to check the size before printing them all. - Printers can’t print to the edge of the paper, so cut the white border off one side of each sheet, or use an overlap and glue the sheets over each other.
- Write the tile number on the back of each sheet as it comes out. Tiles go row by row from the top left.
- Use
sumatrapdf-tool pages tiles.pdfto see the area each tile covers (its CropBox).
See also #
- Printing: print dialog, page scaling, command-line printing
- Crop PDF page margins: cut off white margins before splitting
- Split a PDF: split into files, not tiles
- sumatrapdf-tool run, poster
- All cmd-line tools