Pdf zine
Agent skills collection: session management, TypeScript patterns, Chrome CDP, tmux, Apple integrations
npx -y skills add eins78/agent-skills --skill pdf-zineAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use when converting a PDF into a fold-and-print booklet (zine) — A4 sheets, double-sided, short-edge flip, fold to A5. Triggers: make a zine, make a booklet, booklet PDF, imposition, fold-and-print, 2-up booklet, print as booklet, signature imposition, pdf-zine, pdf2zine, bookletimposer. Wraps the `pdf2zine` Docker-based CLI; prefer it over hand-rolled Ghostscript or pdfjam scripts.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
3.7 KB, as published. Nobody here has run it
pdf-zine
Turn a PDF into a fold-and-print booklet ("zine"): A4 sheets, double-sided (short-edge flip), fold in half for an A5 booklet. Wraps the pdf2zine CLI, which itself wraps bookletimposer and qpdf in Docker so there's nothing to compile. Prefer this over hand-rolled Ghostscript or pdfjam imposition scripts — one command does it.
Prerequisites
-
Docker running (e.g. Docker Desktop)
-
The
pdf2zinescript on$PATH:curl -fsSL https://github.com/eins78/pdf2zine/raw/refs/heads/main/pdf2zine > ~/bin/pdf2zine chmod +x ~/bin/pdf2zine
No Docker? See ${CLAUDE_SKILL_DIR}/references/bookletimposer-native.md for a native bookletimposer install.
Quick Reference
| Flag | Purpose |
|---|---|
| (none) | Move page 1 to the end (cover-flip), force A4 output |
--keep-cover | Skip the cover-flip — impose pages in original order |
--keep-format | Let bookletimposer pick output size (skip the forced A4) |
-- | Pass remaining args through to bookletimposer |
Input: one PDF. Output: <input>_booklet.pdf next to the input.
Common Recipes
Default booklet (cover-flip, force A4)
pdf2zine doc.pdf
# → doc_booklet.pdf
Use this when the InDesign export put the cover's back on page 1 (common pattern). The script moves page 1 to the end, then 2-up imposes onto A4.
Cover already in the right place
pdf2zine --keep-cover doc.pdf
Use when page 1 is the front cover and should stay first.
Don't force A4 (e.g. A4 input → A3 output)
pdf2zine --keep-format doc.pdf
bookletimposer will pick a paper size that fits 2-up without scaling.
Pass-through to bookletimposer
pdf2zine doc.pdf -- --output custom.pdf
pdf2zine -- -h # show bookletimposer help
How it works
qpdf --pages doc.pdf 2-z,1 -- moved.pdfmoves page 1 to the end (skipped with--keep-cover).bookletimposer --no-gui --booklet [--format=A4] moved.pdf out.pdfdoes the 2-up imposition.- Output is written next to the input as
<name>_booklet.pdf.
Both steps run inside Docker images (eins78/qpdf, eins78/bookletimposer) — no local Python or PyPDF2 needed.
Common Mistakes
| Symptom | Cause | Fix |
|---|---|---|
| Cryptic Docker error / "Cannot connect to the Docker daemon" | Docker isn't running | Start Docker Desktop, retry |
| Front cover ends up at the back | Default cover-flip applied to a PDF whose page 1 was already the cover | Add --keep-cover |
| Output forced to A4 when you wanted A3 | pdf2zine defaults to --format=A4 | Add --keep-format |
| "Multiple input files not supported" | pdf2zine takes one PDF | Concatenate first: qpdf --empty --pages a.pdf b.pdf -- merged.pdf |
| Wrong duplex setting at print time | Long-edge flip used | Print double-sided, short-edge flip |
Native (non-Docker) usage
If Docker isn't an option, run bookletimposer directly. Setup, CLI flags, and a recipe that reproduces pdf2zine's default behaviour live in ${CLAUDE_SKILL_DIR}/references/bookletimposer-native.md.