ghostscript

Ghostscript: объединяем PDF файлы Когда нужно склеить PDF файлы в один файл

Продолжаем мини-цикл посвященный преобразованию файлов формата PDF.
В прошлой заметке мы научились извлекать отдельные страницы из многостраничного документа PDF.
Давайте рассмотрим как можно с помощью Ghostscript объединять несколько PDF файлов в один.
Операция очень похожа на извлечение отдельных страниц, просто на ввод мы указываем список файлов, которые хотим объединить.

Простой пример:

gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -sOutputFile=merge.pdf 01.pdf 02.pdf 03.pdf
GPL Ghostscript 9.52 (2020-03-19)
Copyright (C) 2020 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.
Processing pages 1 through 1.
Page 1
Processing pages 1 through 1.
Page 1
Processing pages 1 through 1.
Page 1

Обратите внимание, что в вышеуказанном примере не указан режим -dPDFSETTINGS, поэтому выходной файл будет с настройкой по умолчанию: 72dpi в растровых изображениях, цветовая модель не меняется.

Давайте сделаем скрипт, который будет на вход получать директорию с отдельными PDF файлами и директорию с именем выходного файла, в этот раз на Bash:

vi ~/mergepdf.sh
#!/bin/bash
#Определим в переменную запуск Ghostscript со всеми нужными нам ключами, добавим ключ -qQUIET (для "тихого вывода")
pdf2pdf="gs -sDEVICE=pdfwrite -dNOPAUSE -dQUIET -dBATCH -sOutputFile="

# Сделаем проверку на наличие двух обязательных аргументов
if [ ! -n "$1" ] || [ ! -n "$2" ]
 then
    echo -e "Пожалуйста укажите входную директорию PDF и директорию с именем файла для сохранения многостраничного PDF файла \nПример: $0 /indir/ /outdir/file_name.pdf"
        exit
fi

for file in ${1}*.pdf; do
    #наполним массив 
    arrfile+=${file}" "
done

for items in "${arrfile[@]}"; do
    echo "Объединяем PDF файлы:" ${items}
    ${pdf2pdf}${2} ${items}
    echo "Файл сделан:" ${2}
done

Делаем файл исполняемым:

chmod +x ~/mergepdf.sh

Запускаем:

~/mergepdf.sh /share/pdf/ /share/mergepdf/merge.pdf
Объединяем PDF файлы: /share/pdf/001.pdf /share/pdf/002.pdf /share/pdf/003.pdf /share/pdf/004.pdf /share/pdf/005.pdf /share/pdf/006.pdf /share/pdf/007.pdf /share/pdf/008.pdf /share/pdf/009.pdf /share/pdf/010.pdf /share/pdf/011.pdf /share/pdf/012.pdf
Файл сделан: /share/mergepdf/merge.pdf

На этом все.

0 0 голосовать
Рейтинг статьи
Подписаться
Уведомление о
guest
0 Комментарий
Встроенные отзывы
Просмотр всех комментариев