Jak wyodrębnić tylko niektóre strony z dokumentu i zapisać je w osobnym PDF?

pdftk

$ command -v pdftk
/usr/bin/pdftk
$ pdftk doc.pdf cat 12-14 output doc_12-14.pdf

qpdf

~$ command -v qpdf
/usr/bin/qpdf

Zachowaj metadane oryginału:

~$ qpdf doc.pdf --pages . 12-14 -- doc_12-14.pdf
$ pdfinfo men-out1.pdf
Title:
Creator:         Adobe Acrobat 11.0.20
Producer:        Adobe Acrobat 11.0.20 Image Conversion Plug-in
CreationDate:    Tue Feb  9 18:44:55 2021 CET
ModDate:         Tue Feb  9 18:44:55 2021 CET
[...]

Wyczyść wszystkie metadane:

$ qpdf --empty --pages doc.pdf 12-14 -- doc_12-14.pdf
$ pdfinfo men-out1.pdf
Custom Metadata: no
Metadata Stream: no
Tagged:          no
UserProperties:  no
Suspects:        no
Form:            none
JavaScript:      no
Pages:           3
[...]

Ghostscript

gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dFirstPage=12 -dLastPage=14 -sOutputFile=doc_12-14.pdf doc.pdf
GPL Ghostscript 10.03.1 (2024-05-02)
Copyright (C) 2024 Artifex Software, Inc.  All rights reserved.
This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY:
see the file COPYING for details.
GPL Ghostscript 10.03.1: Destination page 1 lies outside the valid page range.
GPL Ghostscript 10.03.1:    **** Warning: Outline has invalid link that was discarded.
Processing pages 12 through 14.
Page 12
Page 13
Page 14
[...]

cat ~/bin/pdfextract.sh:

#!/usr/bin/env bash
#

FIRST_PAGE=${1:?First page not set}
LAST_PAGE=${2:?Last page not set}
SRC=${3:?Source file not set}

gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER \
   -dFirstPage="${FIRST_PAGE}" \
   -dLastPage="${LAST_PAGE}" \
   -sOutputFile="${SRC%.pdf}_${FIRST_PAGE}-${LAST_PAGE}.pdf" \
   "${SRC}"
$ pdfextract.sh 12 14 doc.pdf

Poppler

$ pdfseparate -f 12 -l 14 doc.pdf doc_%d.pdf
$ ls doc_*
doc_12.pdf  doc_13.pdf  doc_14.pdf
$ pdfunite doc_* doc_12-14.pdf

More information

Refs