Skip to content

Booklet

huzpsb edited this page Oct 25, 2026 · 1 revision

Booklet

Impose pages onto larger sheets for folding and binding — booklets, zines, perfect-bound books and multi-folio signatures.

Command line

pdfcpu2 booklet [description] outFile n inFile | imageFiles...

n selects the booklet style — pages per sheet side:

n portrait landscape Use
2 1x2 — fold-in-half booklet (most common)
4 2x2 2x2 long/short-edge binding, advanced collation
6 2x3 — unusual size
8 2x4 — e.g. A6 on A3

<description> — defaults "dim:595 842, formsize:A4, btype: booklet, binding: long, multifolio: false, border:off, guides:off, margin:0":

Entry Meaning
dim: / formsize: sheet size (see Paper)
btype: booklet (default) | bookletadvanced | perfectbound
binding: long (default) | short edge
multifolio: / foliosize: signature binding, e.g. multifolio:on, foliosize:8
border: / guides: print borders / folding & cutting guides
margin: (+bgcol:) content margin, sheet background
pdfcpu2 booklet 'formsize:Letter' out.pdf 2 in.pdf
pdfcpu2 booklet 'formsize:Ledger' out.pdf 4 in.pdf
pdfcpu2 booklet 'formsize:A3, binding:short' out.pdf 4 in.pdf
pdfcpu2 booklet 'formsize:A4, multifolio:on' hardback.pdf 2 in.pdf
pdfcpu2 booklet 'formsize:A4, btype:perfectbound' out.pdf 2 in.pdf

Assembly instructions per booklet type: https://pdfcpu.io/generate/booklet

Go API

package main

import (
	"context"

	"github.com/huzpsb/pdfcpu2/pkg/api"
	"github.com/huzpsb/pdfcpu2/pkg/pdfcpu/model"
)

func main() {
	ctx := context.Background()
	conf := model.NewDefaultConfiguration()

	nup, err := api.PDFBookletConfig(2, "formsize:A4", conf)
	if err != nil {
		panic(err)
	}

	err = api.BookletFile(ctx, []string{"in.pdf"}, "out.pdf", nil, nup, conf)
	if err != nil {
		panic(err)
	}

	// Image input
	nupImg, _ := api.ImageBookletConfig(2, "formsize:A4", conf)
	_ = api.BookletFile(ctx, []string{"a.jpg", "b.jpg"}, "out.pdf", nil, nupImg, conf)
}

Clone this wiki locally