pdfposter
Create large, multi-page posters from PDF files
TLDR
Convert an A2 poster into 4 A4 pages
Scale an A4 poster to A3 and then generate 2 A4 pages
SYNOPSIS
pdfposter [options] <input_pdf_file> <output_pdf_file>
PARAMETERS
-v, --version
Shows the program's version number and exits.
-h, --help
Displays a help message and exits.
-p <papersize>, --pagesize=<papersize>
Sets the output paper size for each tile. Default is A4. Examples: A3, letter, 10cmx15cm.
-m <margin>, --margin=<margin>
Specifies the margin on the output page in mm. Default is 0.
-s <scale>, --scale=<scale>
Defines the scaling factor for the input PDF content. Default is 1.0. Example: 2.0 makes it twice as large.
-c <columns>, --columns=<columns>
Sets the desired number of horizontal tile columns.
-r <rows>, --rows=<rows>
Sets the desired number of vertical tile rows.
-ho <overlap>, --overlapH=<overlap>
Specifies the overlap between horizontal pages (tiles) in mm. Default is 0.
-vo <overlap>, --overlapV=<overlap>
Specifies the overlap between vertical pages (tiles) in mm. Default is 0.
-wh <width>, --width=<width>
Sets the target width of the poster in mm. The scaling factor is automatically calculated.
-ht <height>, --height=<height>
Sets the target height of the poster in mm. The scaling factor is automatically calculated.
-t, --tile
Only tile the input without scaling. Equivalent to --scale=1.0.
-O <orientation>, --orientation=<orientation>
Sets the output page orientation (portrait or landscape). Default is input orientation.
-i <input_page>, --page=<input_page>
Selects a specific input page number from the PDF to be posterized. Default is the first page.
-e <input_page_even>, --evenpage=<input_page_even>
Selects a specific input even page number.
-o <input_page_odd>, --oddpage=<input_page_odd>
Selects a specific input odd page number.
DESCRIPTION
The pdfposter command is a command-line utility for creating multi-page posters from PDF documents. It takes an input PDF (typically a single page, or a selected page from a multi-page PDF), scales its content up to a desired size, and then divides this enlarged content into multiple "tiles" or pages. Each tile is formatted to be printed on standard paper sizes such as A4 or Letter, making it possible to print very large documents on a regular desktop printer.
Users can control various aspects of the output, including the scaling factor, target width or height, output paper size, margins around the content on each tile, and optional overlap between adjacent tiles to facilitate easier assembly of the final poster. It's an invaluable tool for printing large diagrams, architectural plans, maps, or images that exceed the dimensions of a single sheet of paper, effectively turning a standard printer into a large-format plotter for posters.
CAVEATS
pdfposter primarily works with the first page of a multi-page PDF by default, unless a specific page is selected using -i, -e, or -o. It relies on Python libraries such as PyPDF2 (or pypdf) and ReportLab, which must be installed on the system. Encrypted PDF files are generally not supported.
DEPENDENCIES
To function correctly, pdfposter requires specific Python libraries to be installed, notably PyPDF2 (or its successor pypdf) for reading and parsing PDF files, and the ReportLab Toolkit for generating the new tiled PDF output.
USAGE EXAMPLES
- To scale a PDF by a factor of 2:
pdfposter -s 2.0 input.pdf output_poster.pdf
- To create a poster 1 meter wide, on A3 paper, with 10mm margins and 5mm horizontal overlap:
pdfposter --width 1000mm -p A3 -m 10 -ho 5 input.pdf output_poster.pdf
- To tile an existing PDF without scaling on Letter size paper:
pdfposter --tile -p Letter input.pdf output_tiled.pdf
HISTORY
pdfposter is a Python-based utility, often found in Linux distributions as a community-contributed script. Its development leverages powerful Python libraries for PDF manipulation (like PyPDF2/pypdf) and generation (ReportLab), making it a flexible and widely available tool for this specific use case since its initial conception.