Pdf zine
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.From its SKILL.md
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.
3 things 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.
- runs commandsInstructs the agent to run 7 commands, including `curl -fsSL https://github.com/eins78/pdf2zine/raw/refs/heads/main/pdf2zine > ~/bin/pdf2zine` and 6 more.
- fetches URLsInstructs the agent to fetch 1 URL, including https://github.com/eins78/pdf2zine/raw/refs/heads/main/pdf2zine.
What its file declares
Copied from the file, not written here
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, 892 tokens by cl100k_base, 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.
What ships with it: 2 files
5.8 KB alongside SKILL.md
references/
- bookletimposer-native.md2.3 KB
- README.md3.5 KB
Gives 0 of the 12 instructions most pdf office docs skills give in 892 tokens
Counted across 569 of the 585 authors here whose files we hold, read 2026-09-06
- Ensure every slide fits inside one viewportin 20 of 569, across 11 files
- Check for product marketing context firstin 15 of 569, across 5 files
- Ask for the minimum neededin 15 of 569, across 5 files
- Set the API key environment variablein 15 of 569, across 10 files
- Support keyboard and touch navigationin 14 of 569, across 5 files
- Match the buyer stagein 13 of 569, across 3 files
- Split overflowing content into multiple slidesin 12 of 569, across 3 files
- Set page size explicitly for consistent resultsin 12 of 569, across 5 files
- Convert documents to markdown using pandocin 12 of 569, across 6 files
- Read STYLE_PRESETS.md before generatingin 12 of 569, across 7 files
- Send multipart POST requests to the APIin 12 of 569, across 7 files
- Use smart quotes for new contentin 11 of 569, across 4 files
Said here and by no other author read
- Use pdf2zine to create a booklet
- Run pdf2zine with keep cover if needed
- Print double sided with short edge flip
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.