08.10.2019 16:26 Обновлено: 18.05.2022 14:31
Linux и pdf
Очень часто нужно склеить несколько pdf в один и наоборот разбить один pdf на страницы. Convert делает это с преобразованием и можно получить очень некачественное изображение.
Лучшим способом является использование gs:
1 |
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=finished.pdf file1.pdf file2.pdf |
- -dBATCH — после окончания пакетной обработки, GS прекращает работу
- -dNOPAUSE — обрабатывать каждую страницу без пауз между ними
- -q — тихий режим, без выдачи сообщений
- -sDEVICE=pdfwrite — использовать встроенный обработчик PDF
- -sOutputFile=finished.pdf — записать в файл finished.pdf
Для разделения можно использовать такой скрипт:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#!/bin/sh # # pdfsplit [input.pdf] [first_page] [last_page] [output.pdf] # # Example: pdfsplit big_file.pdf 10 20 pages_ten_to_twenty.pdf # # written by: Westley Weimer, Wed Mar 19 17:58:09 EDT 2008 # # The trick: ghostscript (gs) will do PDF splitting for you, it just not # obvious and the required defines are not listed in the manual page. if [ $# -lt 4 ] then echo "Usage: pdfsplit input.pdf first_page last_page output.pdf" exit 1 fi yes | gs -dBATCH -sOutputFile="$4" -dFirstPage=$2 -dLastPage=$3 -sDEVICE=pdfwrite "$1" >& /dev/null |
Постранично:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#!/bin/bash #where $1 is the input filename ournum=`gs -q -dNODISPLAY -c "("$1") (r) file runpdfbegin pdfpagecount = quit" 2>/dev/null` echo "Processing $ournum pages" counter=1 while [ $counter -le $ournum ] ; do newname=`echo $1 | sed -e s/\.pdf//g` reallynewname=$newname-$counter.pdf counterplus=$((counter+1)) # make the individual pdf page yes | gs -dBATCH -sOutputFile="$reallynewname" -dFirstPage=$counter -dLastPage=$counter -sDEVICE=pdfwrite "$1" >& /dev/null counter=$counterplus done |
https://stackoverflow.com/questions/10228592/splitting-a-pdf-with-ghostscript
UPD
Появилась прекрасная утилита для работы с pdf, которая может всё, что нужно и даже немного больше 🙂
Называется утилита Pdf Mod