Η αποθήκευση ορισμένων σελίδων από αρχεία pdf, ps, eps ώς ξεχωριστά αρχεία καθώς και η συγχώνευση πολλών αρχείων pdf, ps, eps είναι αρκετά εύκολη με το πρόγραμμα ghostscript. Από τη γραμμή εντολών το πρόγραμμα αυτό εκτελείται πληκτρολογόντας gs.
H αποθήκευση ορισμένων σελίδων ως νέο αρχείο γίνεται με την παρακάτω εντολή:
gs -q -sPAPERSIZE=a4 -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=output.pdf -dFirstPage=first -dLastPage=last input.pdf
όπου output.pdf είναι το όνομα του καινούριου αρχείου, first είναι ο αριθμός της πρώτης σελίδας που θέλουμε να εξάγουμε, last είναι ο αριθμός της τελευταίας σελίδας που θέλουμε να εξάγουμε, και input.pdf είναι το όνομα του αρχικού αρχείου.
Η συγχώνευση πολλών αρχείων pdf γίνεται με την παρακάτω εντολή:
gs -q -sPAPERSIZE=a4 -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=output.pdf input1.pdf input2.pdf input3.pdf
όπου output.pdf είναι πάλι το όνομα του νέου αρχείου και input1.pdf, input2.pdf input3.pdf είναι τα ονόματα των αρχείων προς συγχώνευση.
Και ένα script που αυτοματοποιεί κάπως την πληκτρολόγηση δίνεται παρακάτω:
#!/bin/csh -f
# pdfextract - extracts pages from a pdf
# 2009.06.19 - written by DP
set output=0
set com=`basename $0`
set USAGE="usage: $com [-f FirstPage] [-l LastPage] [-o OutputFile] [file]"
set argv=(`getopt f:l:o: $*`)
set errflg=$status
set first=1
set last=0
set pdffile=""
if ($errflg == 0) then
while ("$argv[1]" != "--")
switch ($argv[1])
case -f:
set first=$argv[2]
shift argv
breaksw
case -l:
set last=$argv[2]
shift argv
breaksw
case -o:
set output=1
set OutputFile=$argv[2]
shift argv
breaksw
default:
set errflg=1
breaksw
endsw
shift argv
end
shift argv
endif
if ( $#argv == 0 ) then
set errflg=2
endif
if ($errflg != 0) then
echo "$USAGE"
exit 1
endif
if ($output == 0) then
if ( $last == 0 ) then
set OutputFile="`basename -s .pdf $1`$first-end.pdf"
else
set OutputFile="`basename -s .pdf $1`$first-$last.pdf"
endif
endif
foreach i ( ${argv} )
set pdffile="$pdffile $i"
end
if (-e $OutputFile) then
echo "$OutputFile already exists"
exit 1
endif
if ( $last == 0 ) then
set gsargs=""
else
set gsargs="-dLastPage=$last"
endif
gs -q -sPAPERSIZE=a4 -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$OutputFile -dFirstPage=$first $gsargs $pdffile
ΥΓ. Προσοχή που αλλάζει η γραμμή και που συνεχίζεται.