Как в linux объединить файлы pdf в один

Обновлено: 05.07.2024

У вас есть файл PDF, который вы хотите объединить с другим? Вы пробовали другие инструменты слияния в Linux только для того, чтобы найти их слишком запутанными? Не волнуйся, PDF Mix Tool здесь! Это удивительно простой инструмент, который позволяет любому объединить несколько файлов PDF. Вот как это можно использовать.

Установка PDF Mix Tool в Linux

Прежде чем мы сможем продемонстрировать, как вы может объединять PDF-файлы на вашем ПК с Linux, мы должны обсудить, как установить PDF Mix Tool, так как это необходимо для внесения этих типов изменений.

PDF Mix Tool довольно неплохо поддерживает платформу Linux и пользователи могут получить приложение различными способами, такими как Flatpak, пакеты Snap, репозиторий Arch Linux «Community» и исходный код. Чтобы начать установку на ПК с Linux, откройте окно терминала, нажав Ctrl + Alt + T или Ctrl + Shift + T на клавиатуре.

Затем следуйте приведенным ниже инструкциям по установке из командной строки, которые соответствуют используемому в настоящее время дистрибутиву Linux.

Flatpak

Flatpak — один из предлагаемых способов установки PDF Mix Tool. Причина?Flatpak поддерживает самые разные операционные системы Linux — даже менее известные. Кроме того, обновление программ на Flatpak работает так же, как и любая ОС Linux, поэтому пользователю не нужно суетиться. Если вы хотите, чтобы PDF Mix Tool работал через Flatpak, сделайте следующее.

Сначала убедитесь, что вы используете операционную систему Linux с установленной средой выполнения Flatpak и готовой к работе. Если вы не настроили Flatpak, следуйте нашему руководству, чтобы узнать, как настроить среду выполнения . Затем, когда среда выполнения запущена и работает, введите две команды ниже, чтобы приложение работало.

Пакет моментальных снимков

Если вы не являетесь поклонником Flatpaks, второй лучший способ заставить инструмент PDF Mix работать на большинстве Дистрибутивы Linux есть через Snap store. Почему? Помимо Flatpak, Snaps являются отличным ответом на совместимость с дистрибутивом. Snaps работают на 75% операционных систем Linux, а другие находятся в процессе разработки. Более того,

Snap интегрируется с Gnome Software и KDE Discover, что делает установку программного обеспечения из хранилища Snap проще, чем когда-либо.

Чтобы получить инструмент PDF Mix работая через хранилище Snap, сделайте следующее: во-первых, убедитесь, что у вас установлена ​​ОС Linux с установленной и готовой к запуску средой выполнения Snapd.

Кроме того, следуйте нашему руководству, чтобы узнать, как установить и включить Snapd. позаботьтесь о том, чтобы использовать утилиту snap install ниже, чтобы получить инструмент PDF Mix.

Arch Linux

Arch Linux у пользователей это хорошо, так как приложение PDF Mix Tool находится в хранилище программного обеспечения «Сообщество».Чтобы установить приложение в вашей системе, убедитесь, что в вашем файле Pacman.conf включено «Сообщество». Затем введите указанную ниже команду в терминал.

Исходный код

Хотите установить PDF Mix Tool из исходного кода на свой ПК с Linux? Перейдите на эту страницу здесь , чтобы получить последний исходный код. Затем следуйте этим инструкциям на странице загрузки приложения, чтобы узнать, как скомпилировать его с нуля.

Объединение файлов PDF

Чтобы объединить файл PDF с помощью инструмента PDF Mix, запустите запустив приложение. Чтобы запустить приложение, нажмите клавишу Win на клавиатуре и найдите «PDF Mix Tool». Кроме того, проверьте раздел «Офис» в меню приложения в среде рабочего стола.

Когда приложение PDF Mix Tool открыто и работает, следуйте пошаговым инструкциям, приведенным ниже.

Как объединить PDF-файлы в Linux

Шаг 1: в инструменте микширования PDF найдите кнопку «Добавить PDF-файл» и нажмите на нее мышью. Это действие вызовет диалоговое окно с открытым файлом. Добавьте файлы PDF в приложение, выбрав его в окне.

Как объединить PDF-файлы в Linux

Примечание: если все файлы PDF находятся в одной папке, удерживайте нажатой клавишу Ctrl , чтобы выбрать несколько файлов одновременно.

Возможно, вам придется нажать «Добавить файл PDF» несколько раз. раз, чтобы добавить во все файлы PDF, которые вы хотите объединить.

Шаг 2. С помощью кнопок «Переместить вверх» и «Переместить вниз» в инструменте «PDF Mix» измените порядок расположения файлов PDF в списке. Новый объединенный PDF-файл будет создан в соответствии с порядком файлов.

Шаг 3: щелкните правой кнопкой мыши любой из PDF-файлов в списке и выберите параметр «Изменить». Отсюда вы можете редактировать ротацию каждого PDF, его контурную запись PDF, а также многостраничные настройки.

Как объединить PDF-файлы в Linux

Шаг 4. Найдите кнопку «Создать PDF» в нижней части приложения PDF Mix Tool и выберите ее, чтобы создать новый объединенный файл PDF.

Шаг 5. После выбора файла «Создать PDF» на рабочем столе откроется диалоговое окно сохранения файла. Используйте это окно, чтобы выбрать, где вы хотите сохранить объединенный файл, и нажмите кнопку «Сохранить», чтобы завершить его создание.

Как объединить PDF-файлы в Linux

Когда процесс создания будет завершен, ваш вновь объединенный файл PDF появится в каталоге, указанном вами в окне сохранения.

PDFtk Server — это инструмент командной строки Linux, позволяющий легко объединять несколько PDF-файлов в один.

Как объединить несколько PDF-файлов в Linux с PDFtk 1

PDFtk — это бесплатное программное обеспечение с открытым исходным кодом, доступное для Windows, Linux и MacOS. Лучше всего то, что для его работы не требуется Acrobat или любой другой продукт Adobe.

PDFtk позволяет объединять PDF документы, разбивать PDF страницы на новые документы, вращать PDF страницы, расшифровывать и шифровать, обновлять метаданные, наносить водяные знаки и многое другое.

Примечание: Версия PDFtk Free для Windows поставляется с графическим интерфейсом, где вы можете легко добавить несколько PDF-файлов и объединить их в один.

Для Linux, в Ubuntu, вы можете установить его с помощью команды:

PDFtk также доступен в большинстве репозиториев.

1. После установки pdftk необходимо запустить его из командной строки, поэтому запустите терминал.

2. Перейдите в каталог, содержащий ваши PDF-файлы:

3. Решите, в каком порядке вы хотите, чтобы PDF-файлы появились в окончательном документе. Вы будете использовать этот порядок при наборе команды:

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

Это все, что нужно. Обязательно проверьте новый PDF файл, чтобы убедиться, что все новые страницы отображаются правильно. Процесс слияния является бесшовным, безболезненным и должен работать на любых обычных файлах PDF.

Чтобы скомбинировать несколько документов в каталоге без перечисления каждого из них, используйте знак (*):

В качестве дополнительного бонуса pdftk может выполнять множество других задач. Например, чтобы разделить страницы pdf файла на несколько документов, выполните следующую команду:

При этом документ будет разделен на отдельные страницы, которыми вы сможете управлять по своему усмотрению.

С помощью pdftk вы даже можете объединить определенные страницы из нескольких документов в один новый документ. Просто введите следующую команду:

В этом случае «А» и «В» используются в качестве «обработчиков» названий ваших документов.

Чтобы зашифровать новый PDF-файл, используйте следующую команду:

где «foopass» — это пароль, который вы используете для шифрования файла.

С другой стороны, если у вас есть зашифрованный PDF файл, вы также можете расшифровать его с помощью pdftk:

Вы также можете использовать команду pdftk --help или получить доступ к их онлайн-примерам.

Заранее спасибо! Все собранные средства будут пущены на развитие сайта. Поддержка проекта является подарком владельцу сайта.

объединить файлы pdf

В следующей статье мы рассмотрим, как можно комбинировать файлы PDF. В некоторых случаях может случиться так, что мы встретимся 2 или более PDF-файла, которые нам нужно объединить в один чтобы иметь возможность хранить все это в одном файле. Это минимизирует затраты времени на поиск этих файлов PDF, которые по той или иной причине могут находиться в разных папках и других каталогах.

Чтобы написать эту статью, я попробовал несколько инструменты для объединения или объединения файлов PDF из Ubuntu. Я перепробовал все инструменты, которые мы увидим в версии Ubuntu 18.04 ниже, но полагаю, что их можно использовать в других дистрибутивах Gnu / Linux.

Объедините файлы PDF

объединить файлы примеров PDF-файлов

Прежде всего в папке под названием PDFS я буду включать 2 PDF-документа для работы с с ними:

  1. entreunosyceros-1.pdf
  2. entreunosyceros-2.pdf

Использование pdfunite

Pdfunite - это инструмент, который можно использовать для объединения PDF-документов. Это часть пакета poppler-utils. Это причина, по которой при установке poppler уже включен pdfunite. Чтобы установить этот инструмент, мы открываем терминал (Ctrl + Alt + T) и пишем:

Чтобы выполнить это действие, объединяемые файлы должны находиться в том же каталоге, где запущен pdfunife.. Используя файлы, которые я назвал выше, можно использовать следующую команду:

Консоль покажет нам несколько предупреждения на выходе. Это не беспокоит, файлы будут объединены правильно.

объединить файлы pdf pdfunite

Как вы можете видеть на предыдущем снимке экрана, выходной файл с именем Combined_file_pdfunite.pdf.

Использование pdftk

Pdftk - еще один инструмент, который можно использовать для объединения документов PDF в Ubuntu 18.04. Чтобы установить pdftk в терминал в Ubuntu 18.04, сначала мы собираемся добавить PPA, из которого мы будем устанавливать инструмент. Для этого открываем терминал (Ctrl + Alt + T) и пишем:

ppa pdftk malteworld объединить файлы pdf

После добавления PPA в Ubuntu 18.04 список программного обеспечения будет обновлен. Продолжаем установку инструмента pdftk с помощью следующей команды:

объединить файл pdf с pdftk

После завершения установки pdftk, используя наши образцы файлов, команда для объединения PDF-файлов Это будет следующим:

Использование convert

Чтобы использовать команду convert, сначала нам нужно будет установить Imagemagick, если он еще не установлен, откройте терминал (Ctrl + Alt + T) и используйте следующую команду:

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

конвертировать файлы pdf конвертировать

к объединить определенные страницы файлов PDF в один файл, мы будем вынуждены передать команде convert наши файлы с конкретными номерами страниц в скобках. Например, чтобы объединить 5-ю страницу первого документа с 7-й и 10-й страницами второго документа, вы должны использовать следующую команду. Пусть никто не забудет цифру ноль. За это указанные цифры меньше интересующих нас.

объединить конвертировать страницы

С помощью этой команды также возможно присоединиться к диапазонам страниц. Мы можем соединить первые 5 страниц первого файла с первыми 10 страницами другого. Используя наши образцы файлов, можно использовать следующую команду:

объединить диапазон страниц с convert

Использование Ghostscript

Мы также можем использовать Призрачный сценарий (gs) для присоединения к PDF-документам в Ubuntu 18.04. Для его установки в терминале пишем:

Теперь посмотрим на пример использования ghostscript для объединения двух наших образцов PDF-документов. Используемая команда будет следующей:

объединить файлы pdf ghostscript

Использование pdfsam

pdfsam это простой, интуитивно понятный и легкий в использовании инструмент с графическим интерфейсом который используется для объединения, разделения, поворота, редактирования и подписи PDF-документов. В этом примере мы собираемся использовать возможность объединения документов PDF в Ubuntu 18.04. Но сначала, мы установим зависимости необходимо:

После успешной установки мы определим переменную JAVA_HOME в пути / etc / environment используя наш любимый редактор.

Внутри файла мы будем добавьте следующую строку:

После сохранения и выхода перезагружаем отредактированный файл:

Затем мы скачаем файл .deb с официального сайта из pdfsam:

скачать pdfsam

После загрузки мы можем установить файл с помощью dpkg:

к запустить pdfsam, в терминале пишем его имя:

pdfsam объединить файлы pdf

Когда мы хотим объединить документы, мы нажмем «Объединить». На открывшемся экране вам нужно будет перетащить файлы в разделе, посвященном этим:

объединить файлы pdf sam box перетащить файлы pdf

Если вам это нужно, не стесняйтесь укажите другие атрибуты в разделе "Настроить соединение". Комбинация начнется, когда вы нажмете кнопку «Выполнить», расположенную внизу. Звук "дин" уведомит нас о том, что процесс завершен.

Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Полный путь к статье: Убунлог » Ubuntu » Легко комбинируйте файлы PDF с различными программами в Ubuntu

В этом блоге публикуются заметки и решения, найденные в процессе работы, освоения и жизни в дистрибутиве Debian GNU/Linux.

Как объединить и разбить PDF в Linux подручными средствами

Для тех, кто не хочет перечитывать томик квантовой физики от авторов pdftk, есть вариант с рюшечками и бубенчиками под названием PDF Split and Merge (pdfsam).
Как это всегда бывает, когда что-то кажется слишком прекрасным, чтобы быть правдой, обязательно найдётся заподлянка. И pdfsam не исключение - написан он на Java, а это значит кучи exceptions по поводу и без, лютые тормоза и интерфейс из фильма ужасов.

Установка и использование PDFsam в Linux

даёт что-то вроде:


Собственно, дальше всё довольно просто: pdfsam умеет объединять (merge), разрезать (split), поворачивать (rotate) документы PDF. Кроме того, имеет место быть режим burst, при котором из одного PDF-файла будет сделана куча одностраничных.


Например, для объединения PDF-файлов в один, просто добавляем файлы в порядке следования, выбираем новое имя файла и жмём RUN.

Из преимуществ можно отметить разве что графический, скажем так, интерфейс. Всё остальное - это типичное джава приложение: глючное, медленное и корявое (например, при split нужно указывать номер страницы, на единицу меньший той, с которой разрезание начнётся, и т.д.).

Сжатие и компрессия PDF файлов

Побочным продуктом работы pdfsam может быть раздувание PDF-файла до непричиных размеров. Этому горю можно помочь с помощью утилиты gs вот так:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
Это может сжать PDF, по крайней мере в большинстве случаев.

Мастерам консоли: резка и склейка PDF файлов в pdftk

PDFtk расшифровывается как pdf tool kit, и, как и подобает настоящему набору инструментов, требует некоторого изучения. Зато работает быстро, умеет много и клацать мышью не надо.
Установка pdftk проста - он уже есть в Debian:
pdftk исходный_файл.pdf ДЕЙСТВИЕ страницы output получаемый_файл.pdf

Как разбить PDF файл на несколько

Для того, чтобы разрезать PDF-файл на несколько, нужно воспользоваться ДЕЙСТВИЕМ cat, например вот так:
Эта команда выдаст файл zz1.pdf, в котором будут три страницы, а именно 140, 141 и 142. Если же нужно разбить файл с какой-то страницы до конца, делаем так:

Объединение нескольких файлов PDF в один с помощью PDFtk

Та же самая команда cat может склеивать PDF-файлы в один:
служит для объединения всех файлов, содержащих zz в имени, в один Issue26.pdf
Если файлы называются по-разному, можно использовать следующую команду для объединения файлов в один:

Изменение полей PDF-документа

Речь идёт о полях в PDF файле вроде автора, заголовка или времени создания:


InfoKey: Title
InfoValue: Coders At Work
InfoKey: Author
InfoValue: Peter Seivel
InfoKey: Subject
InfoValue: Programming
Эти значения можно отредактировать в полученном текстовом файле (report.txt в этом примере) и загрузить обратно:
pdftk book.pdf update_info report.txt output bookcopy.pdf

И это ещё не всё!

Возможности pdftk весьма велики, и желающие могут припасть к официальной документации.

Склейка страниц PDF файла в буклет с помощью LaTeX pdfpage

Например, у нас есть документ под формат А6, созданный в ЛаТеХе (назовём его mya6doc.pdf:


Теперь создаём ещё один документ (назовём его mya4doc):


Скомпилировать его нужно с помощью pdflatex. Это позволит получить все страницы ( pages=- ) в 2x2 страницы на одной ( nup=2x2 ) с прорисованной границей вокруг каждой страницы ( frame ).

Это означает, что pdfpages воспринимает вставляемые страницы как изображения, так что можно дополнительно задать поля для обрезки:


то есть страница будет обрезана на 1, 2, 3, 4 сантиметра слева, снизу, справа и сверху. Опция clip=true обрежет страницу.

Путь джедая: склеивание PDF документов с помощью gs

Как многие джедаи уже в курсе, gs это GhostScript, свободный как Столлман интерпретатор postscript и, соответственно, PDF. Командой gs можно не только орехи колоть, но и соединять документы. Соединять документы с помощью Ghostscript можно вот так:
$ gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=finished.pdf file1.pdf file2.pdf

Теперь что это всё значит:

Преимущество такого джедайства в том, что Ghostscript входит во все дистрибутивы Linux и часто уже установлен в системе. И не нужно тащить килотонны джавы.

Сохранение размеров EPS файлов при конвертировании в PDF

Не совсем в тему, но тем не менее про PDF. Дело в том, что при конвертировании файлов EPS в PDF разными поделками вроде ps2pdf вы получаете PDF в виде пустой страницы A4 с картинкой EPS где-то в углу. То есть поделка ps2pdf просто игнорирует выставленный BoundingBox при использовании по умолчанию:
Я не буду говорить о вменяемости авторов ps2pdf, но всякий разработчик с IQ выше комнатной температуры должен понимать, что подобные WTF-моменты в пользовательском опыте в конечном итоге приводят к тому, год линупсов на десктопе уезжает в голубую даль. И это происходит именно из-за таких вот казусов, коих в ёпенсорце год от года становится только больше из-за набегающих леннартов поттерингов и прочих ковбоев, склонных к тяжёлому велосипедостроению там, где этого абсолютно не требуется.

Так как ps2pdf принимает те же аргументы, что и Ghostscript, имеющий 900 газиллионов опций, среди которых должна быть возможность сохранять BoundingBox. И таки да, чудо случилось:


который даёт тот самый PDF, который от него, собственно, и ждёшь.

Заключение

Перечисленные возможности - не предел мечтаний, и всегда можно найти свежесобранный опенсорцовый велосипед со спойлером, антикрыльями и колёсами в форме листа Мёбиуса. Обнаружившим нечто интересное в деле работы с PDF документами просьба не стесняться в комментариях.
16 комментариев: |высказаться!| RSS-лента дискуссии.|

Совсем не понимаю, почему не удостоена вниманием библиотека Poppler, с замечательными утилитами pdfseparate и pdfunite? А еще, богатые возможности GhostScript? Вместо этого какие-то поделки на Java и Tcl.

В последнее время каждая заметка превращается в плач Ярославны и смачный пинок под зад линуксу. Если работа в Linux у автора сопряжена с воем и рыданием, что мешает поставить ОС проприетарную? Конечно, не факт, что воя и рыданий там будет меньше.

Важная информация собранная в одном месте и искрометный юмор.
Получил массу удовольствия от вашей статьи!
Большое спасибо!
Кстати, вопрос:
Приходилось ли вам встречать программу (решение, велосипед, волшебную фразу) для заполнения кириллицей pdf с полями для ввода текста?

Для конвертирования eps в pdf всё время пользовался утилитой epstopdf, у которой всё в порядке с BoundingBox. Статья подвигла меня выяснить, из какого-таки пакета родом это чудо (раз, по-видимому, в стандартных его нет); оказалось, что из texlive-font-utils.
Так уж случилось, что texlive я все время ставил на всю катушку, и соответственно, epstopdf была всегда под рукой, а косяка в ps2pdf не замечал. А косяк, да, отвратительный.
Ну а за статью спасибо.

к pdftk есть графические фронтэнды

Совсем не понимаю, почему не удостоена вниманием библиотека Poppler, с замечательными утилитами pdfseparate и pdfunite?

В моём дебиане этого нет. А pdftk есть - у него, кстати, один из самых вменяемых командных интерфейсов.

А еще, богатые возможности GhostScript?
В гробу я их видал, эти "богатые возможности", особенно вот это:

ps2pdf -dEPSCrop letterhead.eps

В посте я про это уже сказал, что так делают только полные [цензура].

Вместо этого какие-то поделки на Java и Tcl.
Главное, Володя, что они работают, а то мне надо было отправлять заявку на грант, а оно просит ОДИН большой PDF-файл, а не пару мелких. Мне ехать, а не шашечки.

@Viktor Yu. Kovalskiy комментирует.
Ещё есть один проект PDF-Shuffler:
Виктор, есть проблема:

PDF-Shuffler is a small python-gtk application

У меня уже стоит пистон2.4 для старых скриптов, пистон 2.6 для почти всего, а на днях пионэр-автор ReTeXt перешёл на пистон3. Как бы это помягче выразиться, но я не стану превращать свой ноутбук в гадюшник.

@redVi комментирует.
В последнее время каждая заметка превращается в плач Ярославны и смачный пинок под зад линуксу.
Возможно потому, что время идёт, Андроид занимает 80% рынка мобильников, а десктопный линукс где был, там и остаётся. И особых подвижек в сторону большего количества нормального софта я не вижу: как стоял у меня ВиртуальныйЯщик с виндовым софтом, так и стоит.

А возможно, мне нужно взять перекур с блогом. У меня уже были мысли прикрыть эту лавку. но я просто хочу взять тайм-аут. Тем более, что у меня на носу переезд в другой университет.

Если работа в Linux у автора сопряжена с воем и рыданием, что мешает поставить ОС проприетарную?
Я пристально смотрю на Мак, но там свои косяки, самый главный из которых - мне навязывают макинтошный стиль работы. А это deal-braker.

@inickto комментирует.
Важная информация собранная в одном месте и искрометный юмор.
Насчёт последнего автор не уверен, а про информацию - это да, долго собирал.

Приходилось ли вам встречать программу (решение, велосипед, волшебную фразу) для заполнения кириллицей pdf с полями для ввода текста?

Всё, что я слышал, это то, что есть FDF-toolkit, но никогда этим не пользовался. Я уж как-нибудь по-старинке, вприсядку :-)

@riedel комментирует.
Для конвертирования eps в pdf всё время пользовался утилитой epstopdf, у которой всё в порядке с BoundingBox.

Хммм, это интересно. Я про эту утилиту, если честно, не знал. Или забыл. Она в моём дебиане тут:

что, конечно, сразу очевидно :-)

Статья подвигла меня выяснить, из какого-таки пакета родом это чудо
Ну да, оно не в самом видном месте, скажем так. Просто мой шеф любит pdflatex, и всегда меня долго и громко благодарит на испанском за то, что у меня какие-то eps. Я как-то прошёлся ps2eps14 по постскриптам, сконпелировал и обомлел. Найти волшебный ключик -dEPSCrop стоило, скажем мягко, усилий, что и послужило причиной эмоциональной реакции в посте.

А косяк, да, отвратительный.
Я бы мог отнестись с бОльшим пониманием, если бы сохранение размеров было по умолчанию, а вклейка в пустой А4 файл - опцией. Но я и авторы ps2pdf курим разные шишки :-)

Ну а за статью спасибо.
Пожалуйста. А вам спасибо за epstopdf. Век живи - век учись.

@dimio комментирует.
к pdftk есть графические фронтэнды
А можно ссылок в студию? А то у меня только pdftk и ничего больше.

@virens комментирует.
В моём дебиане этого нет. А pdftk есть
Это требует Tcl/Tk, у меня этого нет. Так что о годности софта будем судить по тому, требуется ли ввести "apt-get install" или нет?

Под линукс? Нет, конечно: там и выделенный текст-то в PDF-файлах вытаскивается с воем и рыданиями
Я уже давал ссылку на свой репозиторий, но похоже, что не в того коня корм. Зато разводить плачи Ярославны это так по-мужски.

И особых подвижек в сторону большего количества нормального софта я не вижу: как стоял у меня ВиртуальныйЯщик с виндовым софтом, так и стоит.
Так и есть, и будет всегда. Потому что Linux - среда для программистов, это ни плохо ни хорошо, это просто факт. Почитай Спольски на эту тему, я с ним абсолютно согласен.

Я бы мог отнестись с бОльшим пониманием, если бы сохранение размеров было по умолчанию, а вклейка в пустой А4 файл - опцией. Но я и авторы ps2pdf курим разные шишки :-)
Михаил, ты не понимаешь разницы между PS и EPS, а начинаешь опять про вселенский заговор против пользователей линукса. BoundingBox входит в стандарт EPS, термин "Encapsulated" на это недвусмысленно намекает. PostScript, напротив, не поддерживает размер изображения, это там просто нет. Выучи матчасть наконец. То есть, только epstopdf. Есть и у нее заморочки, например, если в рисунке подписи выполнены LaTeX-шрифтом, то BoundingBox определяется некорректно, но это уже проблемы самого шрифта, для которого заранее нельзя определить размер символов.

Что-то совсем не похоже на подручные средства. Все эти программы надо устанавливать.

Спасибо за статью, как раз сегодня понадобилось.

Сравнил варианты с использованием gs и pdftk, последний работает гораздо быстрее (3m38.926s и 11.654s, соответственно). При этом gs выполняет оптимизацию получившегося документа (размер склеенного pdf меньше суммарного размера исходных файлов), а pdftk - нет, размеры совпадают.

Не критики ради, а просто в качестве уточнения:

1. ps2pdf -- это и есть GhostScript. Все эти утилиты (ps2pdf*) являются sh-скринтами обёртками к gs с параметром -sDEVICE=pdfwrite. В этом легко убедиться сделав "less /usr/bin/ps2pdfwr"


Формат PDF стал очень популярен с развитием интернета и распространением электронной документации, и тем, кто имеет дело с текстами, приходится подбирать инструментарий, чтобы открывать файлы в этом формате и работать с ними. Сторонникам *nix есть из чего выбирать.

PDF-файлы достаточно сложны по своей структуре, они могут содержать текст, графику, вложения, иметь сжатие и шифрование, поэтому современные версии формата невозможно прочитать при помощи стандартных команд Linux, cat, less или обычного текстового редактора вроде vi. Для просмотра и извлечения информации необходимо использовать специальную программу.

Сам Adobe также выпускает версию Adobe Reader для UNIX, но она давно не обновлялась и вряд ли представляет какой-то интерес. В большинстве дистрибутивов Linux по умолчанию установлена какая-то из программ для чтения PDF-файлов, поэтому проблем с этим нет. В Ubuntu и клонах это одна из лучших и в то же время очень простых программ Evince, разрабатываемая в рамках проекта GNOME, но она отлично работает и с любым другим оконным менеджером. Evince поддерживает просмотр — PDF, DjVu, TIFF, PostScript, DVI, XPS, SyncTex, Сomics Books (cbr, cbz, cb7, cbt) и презентации в формате ODP. Открывает зашифрованные документы PDF. Реализован поиск по документу, несколько вариантов отображения структуры документа (древовидная, миниатюры страниц и другие), что позволяет быстро найти нужную. Для PDF и DVI можно выделить нужный фрагмент текста и скопировать его в буфер обмена, произвольный участок страницы сохраняется в картинку. Есть возможность установки закладок, запуска в режиме презентации и полноэкранном, вывод по одной или по две страницы, зуминг и поворот страницы. Каждый документ открывается в новом окне; если их много, это бывает неудобно. В целом весьма хороший просмотрщик для PDF-файлов, не сильно требующий ресурсов.

Evince — простой и удобный просмотрщик PDF

Evince — простой и удобный просмотрщик PDF

В репозитории можно найти еще несколько альтернатив. Наиболее современный из них — универсальный просмотрщик документов от проекта KDE Okular, кроме PDF поддерживающий PostScript, DjVu, CHM, XPS, ePub, CHM и некоторые другие форматы. По функциям он превосходит Evince, больше всяких возможностей по просмотру и навигации, есть даже настройки производительности, позволяющие установить оптимальный режим вывода документа в зависимости от мощности компьютера.

Плюс целый ряд легких просмотрщиков с минимальным интерфейсом, но не уступающих функционально, — ePDFviewer, XPDF, MuPDF, Zathura и другие. Например, Zathura и MuPDF вообще не имеют кнопок, управляются при помощи клавиш (все они описаны в man), а программы весят меньше сотни килобайт и летают даже при загрузке больших документов. В Zathura возможно сохранить текущую страницу в графический файл или сохранить изображение в буфер обмена.

С графической средой в общем все понятно, но бывает, что PDF-файл нужно прочитать в консоли, а ничего под рукой нет. Здесь два варианта — специальный просмотрщик, использующий framebuffer, и конвертирование файлов в другой формат (текстовый или HTML). Для первого случая нам понадобится просмотрщик изображений через фреймбуфер fbi и один из вьюверов PDF — fbgs (Framebuffer Ghostscript Viewer), который входит в состав пакета fbi или аналогов — FBPDF, JFBPDF. Кроме PDF, fbgs поддерживает и DjVu. Принцип работы прост — из страниц документа автоматически генерируется изображение, которое и выводится в консоль. Но нужно учесть, что работает этот способ для реальной консоли, в эмуляторе терминала запуск приведет к ошибке. Установка:

Для просмотра пользователь должен быть добавлен в группу video:

Теперь можно смотреть:

Некоторое время придется подождать, пока будут сгенерированы изображения.

В большинстве программ с GUI PDF поддерживается при помощи библиотеки poppler, которая, в свою очередь, базируется на коде популярного просмотрщика xpdf. Кроме собственно библиотеки, проект предлагает 11 консольных утилит для работы с PDF-файлами, которые позволяют конвертировать PDF во всевозможные форматы (текст, HTML, PPM, PS, PNG, JPEG, SVG) и извлекать заголовок, вложения, рисунки и шрифты. Конвертеры pdftohtml и pdftotext как раз подходят для чтения файлов в консоли. В Ubuntu, как правило, эти утилиты уже установлены. Если выполнить, не указав имя выходного файла, или вывести на стандартный вывод, то в текущем каталоге будет создан файл с аналогичным именем и расширением txt или html, который затем можно открыть в любом редакторе или консольном браузере (например, Links или ELinks). Или просто прочитать:

К слову, файловый менеджер Midnight Commander в некоторых дистрибутивах позволяет просматривать PDF-файлы. За это отвечает скрипт /usr/lib/mc/ext.d/doc.sh (описывается в /etc/mc/mc.ext). Если его просмотреть, то увидим, что по умолчанию файл конвертируется в текстовый как раз при помощи pdftotext и затем выводится на экран. Хотя возможны и другие варианты, поэтому стоит заглянуть в doc.sh.
Утилиты из poppler покрывают почти все основные форматы для конвертирования и некоторой обработки PDF-файлов. Так, PDF-файлы могут содержать вложения, утилита pdfdetach позволяет просмотреть их список и извлечь:

Аналогично одной командой извлекаются изображения.

Чтобы узнать информацию о встроенных шрифтах, следует запустить утилиту pdffonts.
В контексте можно вспомнить о SWFTools, содержащем несколько конвертеров в формат SWF (Small Web Format), включая PDF2SWF. Единственный момент, что пакет SWFTools в Ubuntu и некоторых других дистрибутивах не включает утилиту pdf2swf, поэтому ее приходится устанавливать из исходников:

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

Еще одна полезная утилита, распространяемая под Artistic License, — QPDF представляет собой конвертер PDF, позволяющий производить различные преобразования: оптимизацию для веба, шифрование/дешифрование, верификацию файлов, а также слияние и разделение. С ее помощью также можно создать PDF-файл программным способом, QPDF берет на себя все синтаксическое представление объектов, создание перекрестных ссылок таблицы, шифрование, линеаризацию и другие детали синтаксиса.

При обновлении версии Adobe Extension Level, которое используется при создании PDF-файлов в облаке компании Adobe, часто первое время невозможно такие файлы прочитать на программах, отличных от Adobe Reader. Здесь как раз и выручает QPDF (и некоторые другие утилиты обзора), достаточно снять с файла шифрование, и вопрос с чтением снимается. Смотрим свойства документа при помощи pdfinfo из комплекта poppler:

Теперь с чтением проблем точно не будет. Если файл защищен паролем, то его следует указать при помощи параметра --password.

Получаем информацию о файле при помощи pdfinfo

Получаем информацию о файле при помощи pdfinfo

При работе с PDF очень часто возникает задача сборки файлов из частей отдельных документов или изменения отдельных параметров, таких как размер листа или ориентации (книжная или альбомная). Несложные скрипты позволяют сделать все нужное буквально одной командой, но для начала следует разобраться с базовыми утилитами.

Утилиты pdfseparate и pdfunite из poppler позволяют извлекать отдельные страницы и объединять документы. Причем среди других описанных далее они самые простые в использовании, так как не имеют большого количества опций, и с их работой легко разобраться. Например, извлекаем страницы с 10-й по 20-ю и сохраняем их в отдельный документ:

В имени переменная %d обязательна, так как pdfseparate умеет сохранять страницы только в отдельные файлы. Вместо него будет подставлен номер страницы, то есть в нашем случае получим файлы с именем file-10.pdf . file-20.pdf. Если все же нужен единственный документ, то на помощь приходит pdfunite. Соберем страницы 10 и 11 в один документ:

У QPDF очень много параметров и возможностей, это практически универсальная утилита для обработки файлов формата PDF, причем многие операции выполняются одной командой. Например, можем сохранить в отдельный файл нужные страницы одного или нескольких источников:

В результате получим файл, собранный из полного документа in.pdf и указанных страниц документов in1.pdf и in2.pdf. Диапазон можно задавать через дефис или перечислить страницы через запятую. Возможен и реверс при помощи конструкции z-№страницы. Добавив параметр --linearize, сгенерируем оптимизированные для веба файлы. Специальный QDF-режим (--qdf) позволяет создавать PDF-файлы, которые затем можно редактировать в обычном текстовом редакторе, то есть без сжатия и шифрования, нормализованный и со специальными метками. Правда, и размер такого файла как минимум в два раза больше.

Иногда нужно просто сравнить две версии PDF-файла — текст, рисунки, вложения. Здесь помогут две прекрасные утилиты: diffpdf и comparepdf. В самом простом случае:

На выходе получим отличие. Если файлы одинаковы, то команда ничего не выдаст (опция «-v 2» сделает ее чуть болтливей). Diffpdf представляет собой GUI-программу, позволяющую произвести постраничную сверку документа. В случае отсутствия расхождения, после запуска будут показаны пустые поля.

Сравнение документов в diffpdf

Сравнение документов в diffpdf

При необходимости в diffpdf можно задать диапазоны проверки. Это полезно, если, например, в документ добавлена страница, а поэтому постраничная проверка после нее точно покажет несоответствие.

Не всем пользователям нравится разбираться с многочисленными параметрами и экспериментировать, некоторые предпочитают просто выбрать нужные операции в GUI. Нет проблем. PDF-Shuffler — небольшое Python-GTK приложение к Python-библиотеке pyPdf, предоставляющей все функции для работы с PDF: извлечение, слияние, обрезку, шифрование/дешифрование и прочее. Программа есть в репозитории дистрибутивов:

Интерфейс не локализован, но все, что требуется после запуска, — это кинуть файлы в окно программы, а после того, как будут отображены все страницы документа, при помощи меню удаляем, обрезаем, поворачиваем, экспортируем нужные. Если требуется произвести операцию с несколькими страницами сразу, то просто отмечаем их при нажатой клавише Ctrl, после чего сохраняем результат в новый документ. Быстро и очень удобно. Правда, как видим, PDF-Shuffler использует далеко не все возможности библиотеки, нет, например, оптимизации и шифрования/дешифрования, нельзя производить другие преобразования вроде изменения размера листа. Поэтому полностью консольные утилиты он не заменяет. Кстати, pyPdf, на котором базируется PDF-Shuffler, уже не развивается и сегодня в дистрибутивах, бывает, замещается форком PyPDF2, который полностью совместим с оригиналом плюс содержит несколько новых методов.

PDF-Shuffler позволяет легко убрать все лишнее из документа

PDF-Shuffler позволяет легко убрать все лишнее из документа

Среди альтернатив PDF-Shuffler можно выделить PDF Mod, легкое, очень простое в использовании приложение с локализованным интерфейсом, которое позволяет извлекать, удалять страницы, изменять их порядок, поворачивать, объединять несколько документов, экспортировать изображения в выбранной странице и редактировать информацию в заголовке документа (названия, ключевые слова, автор). Поддерживаются закладки. PDF Mod есть в репозитории:

Окно PDF Mod

Окно PDF Mod

Кросс-платформенная утилита PDFsam — PDF Split And Merge, написанная на Java, умеет объединять, разрезать и поворачивать документы PDF. А в режиме burst генерирует из страниц PDF отдельные файлы. В репозитории далеко не самая последняя и весьма глючная версия. Новые релизы уже лишены многих недостатков, поэтому лучше ставить с официального сайта, но придется немного покомпилировать, так как без оплаты разработчики предлагают только сборку под Win и исходные тексты.

Редактирование PDF

PDF сам по себе сложный формат, предназначенный для издательской продукции, требующий специальных инструментов для создания и редактирования. И *nix-пользователям есть из чего выбирать. Создать PDF-документ можно в Open/LibreOffice, а чтобы получить возможность редактирования, следует установить расширение Oracle PDF Import Extension. Кроме этого, доступны специальные приложения — PDFedit, Scribus и Master PDF Editor. Среди них Scribus — очень мощное приложение со множеством функций, требующее времени на освоение.

Master PDF Editor — весьма простой инструмент, распространяемый бесплатно для некоммерческого использования. PDFedit позволяет производить любые операции по внесению исправлений в PDF-документы. Встроенные средства дают возможность редактировать текст и графику, но не дружат с таблицами. Возможна автоматизация при помощи ECMAScript-скриптов. К сожалению, PDFedit, использующий Qt 3, в текущей версии Ubuntu убран из-за отсутствия поддержки пакета libqt3-mt, а попытка установки не всегда удачна. Версия на Qt 4 пока находится в стадии разработки.

В контексте работы с PDF утилиту PDFtk Сида Стюарда (Sid Steward) хотелось бы выделить особо. Это даже не утилита, а комбайн «все в одном», позволяющий разделить или объединить несколько документов в один, расшифровать/зашифровать PDF-файл, добавить или удалить вложения, заполнить формы, восстановить поврежденные документы и многое другое. Вообще, разработчики предлагают несколько решений, основа всех — консольная утилита PDFtk Server, о которой речь дальше. Для пользователей Win разработчики предлагают GUI. Плюс доступны еще две утилиты: GNU Barcode Plus PDF для генерации штрих-кода в PDF-файл и платный STAMPtk, генерирующий водяные знаки и колонтитулы в PDF-файле. Пакет PDFtk уже есть в репозиториях дистрибутивов, поэтому с установкой проблем нет. Вместе с командой следует указать имя входных и выходного файла (поддерживается маска), команду и параметры. Всего поддерживается 18 команд, все они описаны в документации. Приведу лишь несколько примеров, достаточных для понимания сути работы с PDFtk. Например, команда cat позволяет объединить несколько файлов в третий — outfile.pdf:

Если файлов много, то проще собрать их в одном каталоге и использовать маску *.pdf. Отдельные страницы вырезаются просто указанием их номеров после cat:

Причем, если файлов несколько, для каждого задаются свои страницы, при необходимости меняется ориентация.

В примере из документа in1.pdf будет извлечена первая страница, которая будет повернута на 90 градусов. Со второго документа извлекаются только четные страницы в диапазоне 2–20. Четность возможно указать как even (четный) или odd (нечетный), поворот указывается как north, south, east, west, left, right или down. Последнюю страницу документа можно указать при помощи ключевого слова end. Диапазон указывается или прямо, как в примере, или реверсно (например, end-1). Чтобы разложить PDF на страницы, используется команда burst.

Теперь открываем и правим metadata.txt в текстовом редакторе, после чего загружаем обратно:

Дешифровка PDF, о которой мы говорили выше, дело одной команды:

PDFtk — универсальная утилита для работы с PDF

PDFtk — универсальная утилита для работы с PDF

На самом деле это далеко не все утилиты для работы с PDF-файлами. Практически не затронут вопрос генерации PDF из различных источников. Но большинство решений легко найти в репозитории. Преобразование через PostScript дает еще большие возможности по управлению содержимым.

Читайте также: