Ghostscript: объединяем 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

На этом все.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

Этот сайт защищен reCAPTCHA и применяются Политика конфиденциальности и Условия обслуживания Google.

:) :D :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.