Skip to content

Extract Pages

huzpsb edited this page Oct 25, 2026 · 1 revision

Extract Pages

Export selected pages as single-page PDFs.

Command line

pdfcpu2 extract -m page in.pdf outDir             # every page
pdfcpu2 extract -m page -p 3 in.pdf outDir        # page 3 -> in_3.pdf
pdfcpu2 extract -m page -p 3 in.pdf -             # page 3 to STDOUT (needs exactly one page)

The stdout form makes it pipe-friendly:

aws s3 cp s3://bucket/contract.pdf - \
  | pdfcpu2 extract -m page -p 3 - - \
  | aws s3 cp - s3://bucket/pages/contract-page-3.pdf

Go API

package main

import (
	"context"
	"io"
	"os"

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

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

	f, _ := os.Open("in.pdf")
	defer f.Close()

	err := api.ExtractPages(ctx, f, []string{"3"}, func(r io.Reader, pageNr int) error {
		out, _ := os.Create("page3.pdf")
		defer out.Close()
		_, err := io.Copy(out, r)
		return err
	}, conf)
	if err != nil {
		panic(err)
	}

	// Or to disk
	_ = api.ExtractPagesFile(ctx, "in.pdf", "./pages", []string{"1-3"}, conf)
}

Related: Trim (keep selection in one file), Split (span-based), Collect (custom sequence).

Clone this wiki locally