Вопрос Как объединить несколько файлов PDF?


В Windows много программного обеспечения для объединения файлов PDF, но как мы можем сделать то же самое в Ubuntu?


281
2017-08-21 06:11


происхождения


я нашел эта ссылка - Grijesh Chauhan


ответы:


PDF-Shuffler  Install PDF-Shuffler 

Если вам нужен инструмент с простым графическим интерфейсом, попробуйте pdfshuffler, Он позволяет объединять PDF-файлы, а также переупорядочивать и удалять страницы. Для пакетной обработки и / или более сложных задач pdftk, конечно, более мощный.

Screenshot of PDF-Shuffler


171
2017-08-21 10:08



Я пробовал это - он не работал 10.04 - David Oneill
12.04, pdfshuffler всегда жалуется, что существует «слишком много значений для распаковки», что делает его непригодным. - despens
Устанавливается и работает как очарование 14.04. Огромное спасибо!! - Zlatty
Я также могу подтвердить pdfshuffler отлично работает 14.04 amd64. - conualfy
Также отлично работает 16.04.1 - Sanjay Manohar


PdftkInstall pdftk

Чтобы объединить два файла PDF, file1.pdf а также file2.pdf:

pdftk file1.pdf file2.pdf cat output mergedfile.pdf

Дополнительная информация доступна ВотОбратный путь,


275
2017-08-21 07:42



pdftk - глючит - bugs.launchpad.net/ubuntu/+source/pdftk/+bug/779908, gs может быть медленным, но отлично работает [ответ от IgnitE] - Pushpak Dagade
Благодаря! Pdftk делает простое, базовое слияние довольно хорошо. Более чем достаточно для моих нужд. YMMV. - Marky
@PushpakDagade ghostscript испортит аннотации, особенно комментарии, которые были отмечены (флажок с галочкой), больше не будет иметь эту галочку. Я не знаю об этом. Кроме того, если вы объедините PDF v1.5 + 1.6, по умолчанию будет 1,4. Это странное поведение. - Jonathan Komar
pdftk имеет необычное использование, когда команды cat а также output следуйте переменным входным аргументам и снова следуйте выходным аргументом. - Jeff Puckett
Похоже, что пакет был удален в 2018 году. - Nicolas Raoul


Ghostscript представляет собой пакет (доступный по умолчанию в Ubuntu), который позволяет просматривать или печатать файлы PostScript и PDF в других форматах или конвертировать эти файлы в другие форматы.
Чтобы использовать Ghostscript для объединения файлов PDF, введите следующее:

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dAutoRotatePages=/None -sOutputFile=finished.pdf  file1.pdf file2.pdf

Вот краткое описание команды:

gs         starts the Ghostscript program.
-dBATCH    once Ghostscript processes the PDF files, it should exit.
           If you don't include this option, Ghostscript will just keep running.
-dNOPAUSE  forces Ghostscript to process each page without pausing for user interaction.
-q         stops Ghostscript from displaying messages while it works
-sDEVICE=pdfwrite 
           tells Ghostscript to use its built-in PDF writer to process the files.
-sOutputFile=finished.pdf
           tells Ghostscript to save the combined PDF file with the specified name.
-dAutoRotatePages=/None
           Acrobat Distiller parameter AutoRotatePages controls the automatic orientation selection algorithm: For instance: -dAutoRotatePages=/None or /All or /PageByPage.

Ваши входные файлы даже не должны быть файлами PDF. Вы также можете использовать файлы PostScript или EPS или любую смесь из трех.

С Ghostscript вы можете многое сделать. Вы можете прочитать его документация Больше подробностей.

Источник


125
2018-02-17 02:27



Правда, но это невероятно медленный. Я просто попытался объединить 45 x 400K, одностраничные PDF-файлы. pdftk взял 0m0.484s, gs взял 1m32.898s (это почти на 200x медленнее) Файл из gsбыл примерно на 21% меньше. - aidan
эта команда также работает, если вы используете подстановочный знак для списка файлов, которые нужно объединить. например, заменить file1.pdf file2.pdf с file*.pdf - Antonios Hadjigeorgalis
Для меня gs работал с некоторыми «несоответствующими» PDF-файлами, где pdftk просто побежал бы навсегда. - ntc2
Это отлично работало для моей потребности! - dsh
@AntoniosHadjigeorgalis Просто для справки и хорошего понимания: это не команда поддержки подстановочных знаков, это на самом деле замена оболочки file*.pdf с file1.pdf file2.pdf перед передачей аргументов команде. - Midgard


Вы также можете использовать pdfunite для объединения PDF-документов:

pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf

55
2017-11-12 12:09



ПРЕДУПРЕЖДЕНИЕ: существующий файл out.pdf будут перезаписаны без предупреждения, поэтому pdfunite *.pdf не будет работать должным образом. - krlmlr
@krlmlr Вы всегда можете поместить вывод в другой каталог. - BЈовић
Справедливо, cp также перезаписывает последний аргумент без предупреждения. Это просто для спешки пользователей (например, я) - мне повезло, что у меня была резервная копия файла, о котором идет речь ... - krlmlr
Upvote: это простой инструмент командной строки без графического интерфейса с щелчком и слюни, как и многие другие ответы здесь. Он прекрасно инкапсулирует сложность (в значительной степени эквивалентного) решения GhostScript. - tripleee
Это тоже очень быстро. Хорошо работает. На очень медленном сервере (aws t1.micro) gs занимает 9 секунд, pdftk занимает 4 секунды, и этот pdfunite занимает 0,9 секунды для слияния двух файлов! - rsmoorthy


PDF-цепочка  Install PDF Chain 

Очень приятное решение - PDFChain. Это графический интерфейс - это интерфейс PDFTK, в котором вы можете объединять, разделять или даже добавлять некоторый фон в ваши PDF-файлы.


33
2018-01-31 16:16



Это лучший ответ. Он отлично работает, независимо от версии Ubuntu. - Paulo Coghi
Работал на Ubuntu 14.04 без хлопот! - my account_ram
Отлично работает на Ubuntu 18.04! - orschiro
так что он был удален из программного обеспечения ubuntu в 18.04 (!?) - user2413


Дайте PDFMod попробовать, это из проекта GNOME:

https://wiki.gnome.org/Apps/PdfMod


10
2017-09-16 21:35



не делает слияния. - user2413


Я использую pdfseparate для извлечения определенных страниц из большого pdf-файла:

pdfseparate -f  156 -l 157 input.pdf  output_%d.pdf 
pdfseparate -f  1   -l 2   input.pdf  output_%d.pdf 

и после этого я присоединяюсь к ним через команду:

pdfunite $(ls -v output_*.pdf | tr '\n' ' ') out$(date  +%Y-%m-%d_%H_%M_%S ).pdf

Это объединяет:

output_1.pdf output_2.pdf output_156.pdf output_157.pdf  

в:

out2014-12-14_23_25_36.pdf

Может быть, есть более простой способ справиться ... :-)


6
2017-12-14 22:37



Замена процесса является излишней и потенциально даже вредные, Правильная гораздо более простая командная строка pdfunite output_*.pdf out$(date +%Y-%m-%d-%H_%M_%S).pdf но ему не хватает порядка ls -v, Очевидное и тривиальное исправление состоит в том, чтобы называть ваши файлы так, чтобы они, естественно, сортировались в том порядке, в котором вы хотите их включить. Если вы абсолютно хотите ls -v, вы можете по крайней мере потерять tr, который ничего не выполняет здесь. - tripleee