Как быстро преобразовать PDF в JPG или соединить несколько PDF в один?

Сергей Бадло, Елена Бадло (г. Запорожье)

Вам случалось сталкиваться с объединением нескольких PDF-документов в один? А сохранить все листы из PDF-документа в виде файлов графического формата? Да, конечно, есть же FineReader и множество  всяческих редакторов по типу FoxitPDF-Editor (http://www.foxitsoftware.com/products/editor) или весьма известный проект PDFTk (http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit). А ведь можно обойтись одной свободной утилитой в 144 килобайта из не менее известного GhostScript (http://www.ghostscript.com). Его командная строка поможет нам в этом…

Справка.

Ghostscript первоначально был написан Л. Питером Деучем (L. Peter Deutsch) в 1986 году для проекта GNU, и выпущен под лицензией GNU General Public License. Ghostscript в настоящее время принадлежит компании Artifex Software. Последняя версия этого набора ПО снова доступна под лицензией GPL, но может также лицензироваться для использования в частных проектах за плату.

Краткий экскурс…

Меня поймут те, кто занимается версткой в пакете Scribus (http://www.scribus.net/canvas/Scribus) и не понаслышке знакомы с этим поистине замечательным интерпретатром языка PostScript, GhoStscript. GhostScript был перенесен на многие операционные системы, включая Unix, Linux, Mac OS, OpenVMS, Microsoft Windows, MS-DOS, FreeDOS, OS/2 и AmigaOS.

Но от слов, перейдем ближе к… телу :). Рассмотрим весьма распространенные случаи…

Вариант 1. Преобразуем лист PDF-ника в картинку

Напишем небольшой батничек для автоматизации конвертации. Откройте блокнот и добавьте следующий текст:

REM ищем любой PDF-ник, если не находим – завершаем выполение

if not exist *.pdf goto quit

REM в цикле перебираем все PDF-ники и конвертируем в картинку каждый найденный файл

for %%s in (*.pdf) do gswin32 -q -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -r300 -dTextAlphaBits=4

-dGraphicsAlphaBits=4 -dMaxStripSize=8192 -sOutputFile=%%s.jpg %%s

22

После чего сохраните его в файл под именем <pdf-to-jpg.bat>. Допустим, у нас имеется следующий документ <1.pdf >.

Запускаем наш батничек на выполнение. В результате чего получаем в каталоге картинку:

33

Результат преобразования содержимого страницы PDF-ника в файл <d.jpg >

Вариант 2. Преобразуем PDF-документ в набор картинок

В этом случае вариант скрипта будет несколько другим:

REM ищем любой PDF-ник, если не находим – завершаем выполение

if not exist *.pdf goto quit

REM в цикле перебираем все PDF-ники и конвертируем в набор картинок каждый найденный файл

for %%s in (*.pdf) do gswin32 -q -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -r300 -dTextAlphaBits=4

-dGraphicsAlphaBits=4 -dMaxStripSize=8192 -sOutputFile=1-%d%%s.jpg %%s

При этом каждой картинке будет дан индекс с 1-го по N и именем исходного файла, для удобства различения между собой.

Вариант 3. Объединяем несколько PDF-ников в один

Метод, который довольно часто использую сам при необходимости слияния нескольких версток от разных верстальщиков. Тут все просто, снова откроем блокнот или прямо в командной строке напишем команду слияния двух PDF в один:

gswin32 -r600 -dBATCH -sPAPERSIZE=a4 -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=all.pdf 1.pdf 2.pdf

Допустим, имеем два документа, первый со схемой <1.pdf>

и второй <2.pdf> с каталогом-прайсом на комплектующие:

55

Запускаем батничек и… вуа-ля, любуемся результатом слияния:

77

Cборка < all.pdf > готова

Заключение

Вот все-таки батники незаслуженно игнорируются любителями высокоуровневых языков, а, тем не менее, даже на них можно решить задачи по мониторингу не только удаленных хостов, но и мониторинга COM-порта. В следующем нашем материале мы рассмотрим пример решения задачи реагирования приложения на приход сигнала на один из пинов COM-порта, подключенной кнопки, к примеру.

Ресурсы

Проект GhostScript на SourceForge http://sourceforge.net/projects/ghostscript

Ресурсы со скриптами к материалу http://raxp.radioliga.com/cnt/s.php?p=gs.zip

 

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *