As I want to try my hand on making a zine, I found that the easiest way for this is to print the pages in the right order to a pdf.

To print this with 2 pages, double-sided for four pages on a single sheet the pages have to be printed in the right order, resulting in an A5 booklet.

To get the pages in the right order the pages have to be printed with the order:

Sheets / pagesOrder
1 / 44,1,2,3
2 / 8 8,1,2,7,6,3,4,5
3 / 1212,1,2,11,10,3,4,9,8,5,6,7
4 / 1616,1,2,15,14,3,4,13,12,5,6,11,10,7,8,9
5 / 2020,1,2,19,18,3,4,17,16,5,6,15,14,7,8,13,12,9,10,11
6 / 2424,1,2,23,22,3,4,21,20,5,6,19,18,7,8,17,16,9,10,15,14,11,12,13

To use this sequence, you first have to make a booklet with the number of pages needed. This number of pages should be a multiple of 4. Add “intentional left blank” pages to fill as needed.

Then print this file to PDF to save trees while experimenting using the settings:

- Double sided
- 2 pages per sheet
- mirror short side
- and the order of printing should be the sequence above.

This should result in a PDF with the pages in the right order. This PDF then can be shared or printed normally (but still double-sided!) and stapled.

To create this order I’ve written a small script in PHP. So, if you want even more than 20 pages, the code below can help you out.

#! /usr/bin/php -f
$SheetsOfPaper = $argc>1?$argv[1]:2;
$progName = 'printBooklet';

function createPrintSequence($SheetsOfPaper = 2) {
	$pages = 4*$SheetsOfPaper;  // 4 pages on one sheet
	$half = $pages / 2;

	$page = 1;
	$max = $pages;
	while ($page<=$half):
		$list[] = $max; $max--;
		$list[] = $page; $page++;
		$list[] = $page; $page++;
		$list[] = $max; $max--;
	return implode(',',$list);
$pages = 4*$SheetsOfPaper;

print <<<EOT
$progName <#sheets> 
Which order to print the pages as to create a booklet for a given number of sheets. (Each sheet having 4 pages)

For this to work print 2 pages on a page, double sided.
If needed, the setting for mirroring should be on the short side.

Sheets of paper: $SheetsOfPaper with 4 pages per sheet for a total of $pages pages.

print "\nprintorder: " . createPrintSequence($SheetsOfPaper) . "\n\n";