I find myself merging bits of different PDFs fairly regularly and really wanted a simple CLI way to do it.
python -m pip install pdfmerge
$ pdfmerge [-h] [--version]
[-o FILE|--output FILE]
[-p PASSWORD|--password PASSWORD]
PATH[RULE[, RULE ...]] [[PATH[RULE, ...]] ...]
-
-o
,--output
output file (default:output.pdf
). -
-p
, '--password` password for encrypted files (default: empty string). -
PATH
a file, directory, or wildcard string (e.g.,file*.pdf
) of files to merge. -
RULE
an optional string indicating which pages to extract and rotate. The syntax for each rule is:[START][..][END][ROTATE]
Where
START
andEND
are positive (1-based) or negative page numbers andROTATE
is one of>
,V
, or<
indicating a clockwise rotation of 90, 180, 270 degrees, respectively.
$ pdfmerge -o out.pdf file1.pdf file2.pdf[3,3] file2.pdf[1V,2..-1] "other*.pdf[<]" "/path/pdf[1..4>,5]"
This example illustrates several features:
- specifying an output file
- merging multiple files, some more than once
- splicing parts of file using indices (1-based; negatives allowed)
- including the same page multiple times
- rotating a page or page range
- merging all the PDFs in a directory
pdfmerge
can also be imported into python scripts.
from pdfmerge import pdfmerge
pdfmerge(["pdf-1.pdf", "pdf-2.pdf[2>]"], "output.pdf")