BASALT · JOURNAL
Duplicating and rearranging pages in a PDF
Assembling a document from pieces of another is one command once you think of the output as a sequence rather than a set of edits.
Repeating a page
qpdf input.pdf --pages . 1 . 1-10 . 1 -- output.pdf
That puts page 1 at the front, then pages 1 to 10, then page 1 again. The same source can appear as many times as you like.
Building from several documents
qpdf --empty --pages cover.pdf 1 body.pdf 1-z appendix.pdf 1-3 -- output.pdf
--empty starts with nothing and builds entirely from the ranges given. z means the last page.
This is the general form, and once it is familiar most assembly problems become one line.
In Preview
Copy a page in the thumbnail sidebar and paste it where you want it. Fine for a few pages and tedious beyond that.
Assembling exhibits
The common legal case: a bundle made of specific ranges from several documents, in a particular order, often with a page repeated as a cover or divider.
Two things worth doing. Check the order at the boundaries, because that is where assembly errors appear and they are invisible in the middle. And check the result for inherited metadata, because an assembled document carries properties from its sources naming files, authors and paths.
Bookmarks
Assembling does not carry bookmarks across usefully, and a document built from ranges generally needs them rebuilt. For a long bundle a bookmark per source document is what makes it navigable, and it is worth the few minutes.
Frequently asked questions
How do I duplicate a page in a PDF?
With qpdf, list the same source range more than once: qpdf input.pdf --pages . 1 . 1-10 . 1 -- output.pdf places page 1 at the front and end. In Preview, copy the page in the thumbnail sidebar and paste it.
How do I build a PDF from several documents?
qpdf --empty --pages cover.pdf 1 body.pdf 1-z appendix.pdf 1-3 -- output.pdf builds entirely from the ranges given, where z means the last page.
What should I check after assembling a bundle?
The page order at the boundaries between sources, since errors appear there and are invisible in the middle, and the inherited metadata, because an assembled document carries properties from every source.
Do bookmarks survive assembling a document from ranges?
Generally not usefully. A document built from ranges usually needs bookmarks rebuilt, and for a long bundle one bookmark per source document is what makes it navigable.
Doing it in Basalt
Basalt is a native macOS PDF toolkit: eighteen tools in one window covering merge, split, page organisation, compression, OCR, passwords, Bates numbering, forms, signing, watermarks and comparison. Every file is processed on your Mac, and the engine that opens documents holds no network entitlement at all, which macOS enforces at the code-signature level. Redaction destroys content rather than covering it, and an independent verifier proves the material is gone before a file is written. A one time $29 licence covers up to three Macs, free for the first 24 hours. basaltformac.com, or brew install --cask chipmunk1101/tap/basalt.
Redaction that proves itself
Basalt destroys the content you mark, then re-opens the file it wrote and proves the content is gone before it saves anything. Your documents never leave your Mac.