Как можно объединить / преобразовать несколько файлов PDF в один большой файл PDF?
Я попробовал следующее, но содержимое целевого файла оказалось не таким, как ожидалось:
convert file1.pdf file2.pdf merged.pdf
Мне нужно очень простое / базовое решение командной строки (CLI). Лучше всего было бы, если бы я мог направить вывод слияния / преобразования прямо в pdf2ps
(как первоначально пыталось сделать в моем ранее заданном вопросе: Linux-конвейер (convert -> pdf2ps -> lp) ).
linux
pdf
merge
command-line-interface
алкоголь
источник
источник
Ответы:
Учитывая, что
pdfunite
это часть poppler, у нее больше шансов быть установленной, использование также проще, чемpdftk
:источник
pdfunite *.pdf out.pdf
при условии, что в этом каталоге нет других файлов pdf и их порядок сохраняется с помощью «*». Если его не сохранить, используйте диапазоны: filename_ {0..9} .pdf решает его.Попробуйте хороший ghostscript:
или даже таким образом для улучшенной версии для PDF с низким разрешением (спасибо Adriano за это):
В обоих случаях выходное разрешение намного выше и лучше, чем при использовании convert:
Таким образом, вам не нужно устанавливать что-либо еще, просто работайте с тем, что уже установлено в вашей системе (по крайней мере, оба поставляются по умолчанию в моем rhel).
Надеюсь это поможет,
ОБНОВЛЕНИЕ: прежде всего спасибо за все Ваши хорошие комментарии !! просто совет, который может сработать для вас, ребята, после поиска в Google я нашел отличный способ уменьшить размер PDF, уменьшив один PDF с 300 МБ до 15 МБ с приемлемым разрешением! и все это с хорошим ghostscript, вот оно:
ура !!
источник
gs
работает очень быстро и сильно сжимает. Тем не менее, качество значительно улучшилось после того, как я использовал этот параметр:-dPDFSETTINGS=/prepress
-dPDFSETTINGS=/prepress
это очень приятный эффект при вращении страниц, которые слишком широки и заставляют раздражать горизонтальные полосы прокрутки..bash_profile
и у вас получится хороший ярлык:pdfmerge() { gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=$@ ; }
это сэкономит вам немного времени на ввод текста, если вам придется много использовать команду. Использование выглядит следующим образом:pdfmerge merged.pdf mine1.pdf mine2.pdf
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=merged.pdf mine1.pdf mine2.pdf
Может быть сокращен доgs -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -o merged.pdf mine1.pdf mine2.pdf
. Из документации : «В удобном сокращении вы можете использовать-o
опцию следует спецификации выходного файла , как описано выше.-o
Опция также устанавливает-dBATCH
и-dNOPAUSE
опцию Это предназначено , чтобы быть быстрым способ вызова. ,ghostscript
Чтобы преобразовать один или несколько входных файлы.»Извините, мне удалось найти ответ, используя Google и немного удачи :)
Для интересующихся;
Я установил pdftk (pdf toolkit) на нашем сервере Debian и с помощью следующей команды добился желаемого результата:
ИЛИ
Это, в свою очередь, может быть передано непосредственно в pdf2ps.
источник
gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf in1.pdf in2.pdf in3.pdf ...
pdftk file1.pdf file2.pdf cat output out.pdf
выведет объединенный файл какout.pdf
pdftk
недоступно для систем EL7 из-за отсутствия зависимостиlibgcj
.Это самое простое решение, если у вас есть несколько файлов и вы не хотите вводить имена по одному:
qpdf --empty --pages *.pdf -- out.pdf
источник
Также
pdfjoin a.pdf b.pdf
создам новыйb-joined.pdf
с содержимым a.pdf и b.pdfисточник
Вы можете использовать команду преобразования напрямую,
например
источник
convert -compress lossless sub1.pdf sub2.pdf sub3.pdf merged.pdf
, но размер файла может быть слишком большим. Я бы предложилconvert -compress jpeg -quality 90 sub1.pdf sub2.pdf sub3.pdf merged.pdf
вместо этого.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 может быть выполнен систочник
pdftk
из-за своей зависимостиgcj
, от которой поддержка была отброшена, я полагаю. Несмотря на то, что я искал pdf-инструменты для манипулированияpacman -Ss pdf
, я упустил это. Спасибо за этот ответ! Я должен получить гораздо больше голосов, так что он появляется прямо рядом с предложениями дляpdfunite
илиpdftk
.Apache PDFBox http://pdfbox.apache.org/
PDFMerger Это приложение возьмет список документов PDF и объединит их, сохранив результат в новом документе.
источник
Используйте инструменты PDF из python https://pypi.python.org/pypi/pdftools/1.0.6
Загрузите файл tar.gz, распакуйте его и выполните команду, как показано ниже
Вы должны установить pyhton3 перед запуском вышеуказанной команды
Эти инструменты поддерживают ниже
Вы можете найти более подробную информацию в ссылке ниже, и это с открытым исходным кодом
https://github.com/MrLeeh/pdftools
источник
gs
(все варианты, перечисленные выше), простое объединение двух PDF-файлов, 2 МБ и 500 КБ, заняло несколько минут, в результате чего файл размером 40 МБ!pdftools
завершается мгновенно с идентичным размером файла.Вы можете использовать сейда-консоль , бесплатную и с открытым исходным кодом. Распакуйте его и запустите
sejda-console merge -f file1.pdf file2.pdf -o merged.pdf
Он сохраняет закладки, аннотации ссылок, акроформы и т. Д., На самом деле у него довольно много опций, с которыми вы можете играть, просто запустите,
sejda-console merge -h
чтобы увидеть их все.источник
Если вы хотите конвертировать все загруженные изображения в один PDF, выполните
convert img{0..19}.jpg slides.pdf
источник
Я второй
pdfunite
рекомендации. Однако я получалArgument list too long
ошибки, когда пытался объединить> 2k PDF-файлов.Я обратился к Python для этого и двух внешних пакетов: PyPDF2 (для обработки всех вещей, связанных с PDF) и natsort (для «естественной» сортировки имен файлов каталога). В случае, если это может помочь кому-то:
источник
date +%s
.pdf' && pdfunite output - *. pdf output.pdf (Это создаст пакеты из 500 файлов, обрабатываемых последовательно, и получающиеся временные файлы сортируются в правильном порядке и создайте соответствующий выходной файл; после этого вам нужно будет очистить временные файлы)Вот метод, который я использую, который работает и его легко реализовать. Для этого потребуются библиотеки fpdf и fpdi, которые можно скачать здесь:
источник
Я предвзято являюсь одним из разработчиков PyMuPDF (Python-связка MuPDF).
Вы можете легко сделать то, что вы хотите с ним (и многое другое). Скелетный код работает так:
Вот и все. Существует несколько вариантов выбора только диапазонов страниц, ведения объединенного оглавления, изменения последовательности страниц или изменения поворота страницы и т. Д. И т. Д.
Мы на PyPi.
источник
Мне нравится идея Chasmo, но я предпочитаю использовать преимущества таких вещей, как
Предоставление нескольких исходных файлов
convert
приводит к объединению их в общий PDF-файл. Эта команда объединяет все файлы с.pdf
расширением в текущем каталоге вmerged.pdf
родительский каталог .источник
$(ls *.pdf)
вместо простого подстановочного знака*.pdf
?ls *.pdf
подстановочными знаками вы теряете контроль над порядком объединенных файлов. Например, следующий список: 1.pdf, 2.pdf, 3.pdf, ..., 10.pdf, ..., 100.pdf будет фактически объединен как 1.pdf, 10.pdf, 100. pdf, 2.pdf, 3.pdf (из-за способа заказа файлов по умолчанию в Linux - здесь у вас есть более подробная информация об этой проблеме - stackoverflow.com/q/22948042/1977012 ).Вы можете увидеть использование свободного и открытого исходного кода pdftools (отказ от ответственности: я его автор).
Это в основном интерфейс Python для
pdfpages
пакета Latex .Чтобы объединить PDF-файлы один за другим, вы можете запустить:
Чтобы объединить все файлы PDF в каталоге, вы можете запустить:
источник
Хотя это не решение для командной строки, оно может помочь
macos
пользователям:источник