Объединить / конвертировать несколько файлов PDF в один PDF - PullRequest
932 голосов
/ 24 марта 2010

Как можно объединить / преобразовать несколько файлов PDF в один большой файл PDF?

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

convert file1.pdf file2.pdf merged.pdf

Мне нужно очень простое / базовое решение командной строки (CLI). Лучше всего было бы, если бы я мог передать результаты слияния / конвертации прямо в pdf2ps (как первоначально попыталось сделать в моем ранее заданном вопросе: Linux-конвейер (convert -> pdf2ps -> lp) ).

Ответы [ 15 ]

1241 голосов
/ 01 июля 2012

Учитывая, что pdfunite является частью poppler, у него больше шансов быть установленным, использование также проще, чем pdftk:

pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf
463 голосов
/ 14 октября 2013

Попробуйте хороший ghostscript:

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=merged.pdf mine1.pdf mine2.pdf

или даже так для улучшенной версии PDF-файлов с низким разрешением (спасибо Адриано за указание на это):

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=merged.pdf mine1.pdf mine2.pdf

В обоих случаях выходное разрешение намного выше и лучше, чем при использовании convert:

convert -density 300x300 -quality 100 mine1.pdf mine2.pdf merged.pdf

Таким образом, вам не нужно устанавливать что-либо еще, просто работайте с тем, что уже установлено в вашей системе (по крайней мере, оба поставляются по умолчанию в моем rhel).

Надеюсь, это поможет,

ОБНОВЛЕНИЕ: прежде всего спасибо за все ваши хорошие комментарии !! просто совет, который может сработать для вас, ребята, после поиска в Google я нашел отличный способ уменьшить размер PDF, уменьшив один PDF с 300 МБ до 15 МБ с приемлемым разрешением! и все это с хорошим ghostscript, вот оно:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages -dCompressFonts=true -r150 -sOutputFile=output.pdf input.pdf

ура !!

459 голосов
/ 24 марта 2010

Извините, мне удалось найти ответ самому с помощью Google и немного удачи:)

Для заинтересованных;

Я установил pdftk (pdf toolkit) на нашем сервере Debian, и с помощью следующей команды получил желаемый результат:

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

ИЛИ

gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=output.pdf file1.pdf file2.pdf file3.pdf ...

Это, в свою очередь, может быть передано напрямую в pdf2ps.

47 голосов
/ 18 апреля 2013

Также pdfjoin a.pdf b.pdf создаст новый b-joined.pdf с содержимым a.pdf и b.pdf

35 голосов
/ 17 мая 2014

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

, например

convert sub1.pdf sub2.pdf sub3.pdf merged.pdf
26 голосов
/ 13 декабря 2018

Это самое простое решение, если у вас есть несколько файлов и вы не хотите вводить имена по одному:

qpdf --empty --pages *.pdf -- out.pdf

19 голосов
/ 28 июня 2018

pdfunite хорошо для объединения целых PDF-файлов.Если вы хотите, например, страницы 2-7 из file1.pdf и страницы 1,3,4 из file2.pdf, вы должны использовать pdfseparate, чтобы разбить файлы на отдельные PDF-файлы для каждой страницы, чтобы присвоить pdfunite.

В этот момент вы, вероятно, захотите программу с большим количеством опций.qpdf - лучшая утилита для работы с PDF, которую я нашел.pdftk больше и медленнее, и Red Hat / Fedora не упаковывают его из-за зависимости от gcj.Другие утилиты PDF имеют зависимости Mono или Python.Я обнаружил, что qpdf создает намного меньший выходной файл, чем при использовании pdfseparate и pdfunite для сборки страниц в 30-страничный выходной PDF, 970 КБ против 1,6450 КБ.Поскольку он предлагает намного больше опций, командная строка qpdf не так проста;исходный запрос на слияние file1 и file2 может быть выполнен с помощью

qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf
12 голосов
/ 20 ноября 2015

Apache PDFBox http://pdfbox.apache.org/

PDFMerger Это приложение возьмет список документов PDF и объединит их, сохранив результат в новом документе.

использование: java -jar pdfbox-app-x.y.z.jar PDFMerger "Исходные файлы PDF (2 ..n)" "Целевой файл PDF"

10 голосов
/ 06 июля 2017

Используйте инструменты PDF от python https://pypi.python.org/pypi/pdftools/1.0.6

Загрузите файл tar.gz, распакуйте его и выполните команду, как показано ниже

python pdftools-1.1.0/pdfmerge.py -o output.pdf -d file1.pdf file2.pdf file3 

Вам следует установить pyhton3, прежде чем запускать указанную выше команду

Этот инструмент поддерживает ниже

  • добавить
  • вставить
  • Удалить
  • Поворот
  • Split
  • Слияние
  • Страна

Вы можете найти более подробную информацию в ссылке ниже, и это с открытым исходным кодом

https://github.com/MrLeeh/pdftools

8 голосов
/ 02 февраля 2017

Вы можете использовать Сейда-консоль , бесплатную и с открытым исходным кодом. Распакуйте его и запустите sejda-console merge -f file1.pdf file2.pdf -o merged.pdf

Он сохраняет закладки, аннотации ссылок, акроформы и т. Д., На самом деле у него довольно много опций, с которыми вы можете играть, просто наберите sejda-console merge -h, чтобы увидеть их все.

...