pdfjam - A shell script for manipulating PDF files
pdfjam [options] [--]
[file[pages]]...
pdfjam assembles a list of documents (pdf, ps, eps, jpg or png)
into a single pdf. It allows to rotate, scale, reorder and combine pages
freely using the power of the 'pdfpages' and 'graphicx' LaTeX packages.
Output is written to a generated name (unless specified via
--outfile). The input files are embedded as graphics in the output.
Especially jpg files are kept as is without transcoding. Input from stdin is
supported by specifying /dev/stdin as a file and is the default if no
file is given.
By specifying pages it is possible to specfiy which pages
to include in which order. The default '-' selects all pages. An
example:
- pdfjam file1 '{},2,4-6,9-' ...
makes an empty page, followed by pages 2,4,5,6 of file1, followed
by pages 9 onwards (up to the end of file1).
A page selection can be applied to more than one file, e.g.,
- pdfjam file1 file2 file3 last-1 ...
applies page selection 'last-1' (reverting the page order) to all
three files; but for example
- pdfjam file1 file2 2- file3 1-7 ...
would apply the page selection '2-' to file1 and file2, and '1-7'
to file3. A page selection applies to all the files *immediately* preceding
it in the argument list.
See the pdfpages manual for more details on pagespec syntax.
Key value options to 'pdfpages' and 'graphicx' can be specified as
--key value.
- -h, --help
- Output this text only; no processing of PDF files.
- --configpath
- Output the 'configpath' variable and exit immediately; no processing of
PDF files.
- -V, --version
- Output the version number of pdfjam and exit immediately; no processing of
PDF files.
- -q, --quiet
- Suppress verbose commentary on progress.
- --batch
- Run pdfjam sequentially on each input file in turn, and produce a separate
output file for each input, rather than the default coalescing behaviour.
For the location of output files, see --outfile. The --batch
option cannot be used in the case of input from stdin.
- -o, --outfile
name
- Specifies where the output file(s) will go. If 'name' is an existing
directory, pdfjam will attempt to write its output PDF file(s) there, with
name(s) derived from the input file name(s) and the --suffix option
(see below). Otherwise the output pdf will be written at 'name'.
- --suffix
string
- Specifies a suffix for output file names, to be used when --outfile
is unspecified or a directory. The STRING must not have zero length.
- --checkfiles,
--no-checkfiles
- If the Unix 'file' utility is available, the output of 'file -Lb
FILE1' should be 'PDF document...' where '...' gives version information.
If this is the case on your system you should use --checkfiles;
otherwise use --no-checkfiles, in which case all input files must
have the correct extensions (.pdf, .ps, .eps .jpg, .jpeg, .png, or their
uppercase variants).
- --latex
pathtolatex
- Specify the LaTeX engine to be used (one of pdflatex, xelatex, lualatex).
The pathtolatex string must be the full path to a suitable LaTeX
executable (for example /usr/bin/xelatex on many unix
systems).
- --tidy,
--no-tidy
- Specify whether the temporary directory created by pdfjam should be
deleted. Use '--no-tidy' or '--builddir' (see below) to help debug most
errors.
- --builddir
path
- Specifies a build directory to be used in place of a temporary one.
Existing files inside will be overwritten. Overrides --tidy.
- --runs N
- Run latex N times, for each output document made.
- --vanilla
- Suppress the reading of any pdfjam configuration files.
- --enc
- Specify a command-line encoding
- --paper papername,
--papername
- Specify a LaTeX paper size, for example '--paper a4' or simply '--a4paper'
for ISO A4 paper. A wide range of paper sizes is available thanks to the
LaTeX 'geometry' package. For details see documentation for LaTeX and/or
the 'geometry' package. If no default value is set, obtain the
system’s default paper via libpaper, falling back to A4.
- --papersize
width,height
- Specify a custom paper size in points = 1/72 inch (known as bp in LaTeX
and as pt in other software), e.g. --papersize 612,792. Units may
also be specified explicitly, e.g. --papersize 10in,18cm.
- --landscape,
--no-landscape
- Specify landscape page orientation (or not) in the output PDF file.
- --twoside,
--no-twoside
- Specify (or not) the 'twoside' document class option.
- --other-edge,
--no-other-edge
- Rotate every odd page by 180 degrees (or not). Thus changes along which
edge the pages are flipped in duplex printing.
- --pagecolor
rgbspec
- Specify a background colour for the output pages. The RGBSPEC must be a
comma-separated triple of integers between 0 and 255. An example:
--pagecolor 150,200,150. Default is no background colour.
- --keepinfo,
--no-keepinfo
- Preserve (or not) Title, Author, Subject and Keywords (from the last input
PDF file, if more than one) in the output PDF file. This requires the
pdfinfo utility, from the poppler-utils package, and the LaTeX 'hyperref'
package; if either of those is not available, '--keepinfo' is
ignored.
- --pdftitle
string, --pdfauthor string,
- --pdfsubject string, --pdfkeywords string Provide text for
the Title, Author, Subject and Keywords in the output PDF file. Requires
the LaTeX 'hyperref' package. These options, individually, override
--keepinfo.
- --preamble
string
- Append the supplied STRING to the preamble of the LaTeX source file(s),
immediately before the '\begin{document}' line to load LaTeX packages or
set global options. An example:
- pdfjam --nup 2x2 myfile.pdf -o myfile-4up.pdf
--preamble '\usepackage{fancyhdr} \pagestyle{fancy}'
If '--preamble' is used more than once in the call, the supplied
preamble strings are concatenated. For a note on avoiding clashes, see the
README file, also available at https://github.com/pdfjam/pdfjam.
- --
- Signals end of options processing.
- --KEY VALUE
- Specify options to '\includepdfmerge', in the LaTeX 'pdfpages' package.
See the the pdfpages documentation (usually 'texdoc pdfpages') for more
information. Here KEY is the name of any of the many options for
'\includepdfmerge', and VALUE is a corresponding value. Examples:
- --nup 2x1 (for 2-up side-by-side imposition)
- --scale 0.7 (to scale all input pages to 70% size)
- --offset '1cm 0.5cm' (to offset all pages -- note the
quotes!)
- --frame true (to put a frame round each input page)
- --booklet true (to reorder the pages in signatures, generally
useful with --nup)
- --signature N (specify the signature size, as the number of
original pages in a signature in the final document. Caveat: booklet is a
short form for signature, so if you use --booklet true, signature
will be ignored)
- --trim '1cm 2cm 1cm 2cm' --clip true (to trim those amounts
from left, bottom, right and top, respectively, of input pages)
- --angle NNN (The angle of rotation in degrees. Angles that are not
either 0, 90, 180 or 270 will still create straight rectangular pages,
only the content will be rotated.)
Defaults for the options --suffix, --keepinfo,
--paper, --outfile, --landscape, --twoside,
--tidy, --latex, --runs, --checkfiles and
--preamble can be set in site-wide or user-specific configuration
files. The files searched are
- /etc/pdfjam.conf /usr/share/etc/pdfjam.conf /usr/local/share/pdfjam.conf
/usr/local/etc/pdfjam.conf $XDG_CONFIG_HOME/pdfjam.conf
$HOME/.pdfjam.conf
This list can be changed by editing 'configpath' in the pdfjam
script. All of these files are ignored if the --vanilla argument is
used.
David Firth (2002 to 2019), Reuben Thomas (2020 to 2024), Markus
Kurtz (since 2024)
The LaTeX packages graphicx (https://ctan.org/pkg/graphicx) and
pdfpages (https://ctan.org/pkg/pdfpages). For including eps files, see the
epstopdf package (https://ctan.org/pkg/epstopdf).
For more information, including a sample configuration file, see
https://github.com/pdfjam/pdfjam.