Як об'єднати кілька файлів PDF?


Відповіді:


209

PDF-Shuffler Встановіть PDF-Shuffler

Якщо вам потрібен інструмент з простим графічним інтерфейсом, спробуйте pdfshuffler . Це дозволяє об'єднувати PDF-файли, а також переставляти та видаляти сторінки. Для пакетної обробки та / або складніших завдань pdftk, звичайно, є більш потужним.

Знімок екрана PDF-Shuffler


Я спробував це - це не вийшло 10.04
Девід Онелл

12.04 pdfshuffler завжди скаржиться на те, що існує "занадто багато значень для розпакування", що робить його непридатним.
деспан

8
Встановлюється і працює як шарм 14.04. Дякую купу !!
Златті

1
Я також можу підтвердити pdfshufflerроботу чудово 14.04 amd64.
conualfy

2
Також чудово працює 16.04.1
Санджай Манохар

333

pdftkВстановіть pdftk

Щоб об'єднати два файли pdf file1.pdfта file2.pdf:

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

Додаткова інформація доступна тут машина Way Back .


5
pdftk - це помилка - bugs.launchpad.net/ubuntu/+source/pdftk/+bug/779908 . gs може бути повільним, але робота ідеально [відповідь IgnitE]
Pushpak Dagade

@PushpakDagade ghostscript псує анотації, зокрема коментарі, які були встановлені (прапорці поставлені галочкою), більше не матимуть цієї позначки. Я не знаю способу цього. Крім того, якщо ви об'єднаєте PDF v1.5 + 1.6, вихід за замовчуванням буде 1,4. Це дивна поведінка.
Джонатан Комар

2
pdftk має незвичне використання, де команди catта outputслідування різним аргументам введення, а потім знову вихідним аргументом.
Джефф Пукетт

3
Пакет, схоже, видалено у 2018.04.
Ніколя Рауль

1
@NicolasRaoul Я просто завантажив його як оснащення.
Макс

161

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 можна багато чого зробити. Ви можете прочитати його документацію для отримання більш детальної інформації.

Джерело


2
Щоправда, але це неймовірно повільно. Я просто спробував об'єднати односторінкові PDF-файли розміром 45 х 400 К. pdftkвзяв 0m0.484s, gsзайняв 1m32.898s (це майже на 200 разів повільніше) Файл з gsприблизно на 21% менше.
помічник

2
ця команда також працює, якщо ви використовуєте підстановку для списку файлів, які потрібно об'єднати. наприклад, замінити file1.pdf file2.pdfнаfile*.pdf
Антоніос Хаджігеоргаліс

2
Для мене gsпрацювали з деякими "невідповідними" PDF-файлами, де pdftkпросто працювали б назавжди.
ntc2

1
Використовуйте -dPDFSETTINGS=/prepressваріант покращення якості. Всім подяк за оригіналу автора
Mohnish

6
@AntoniosHadjigeorgalis Просто для довідки і доброго розуміння: це не команда підтримки символів узагальнення, що насправді оболонка заміни file*.pdfз file1.pdf file2.pdfперед передачею аргументи команди.
Midgard

81

Ви також використовуєте pdfunite для об'єднання PDF-документів:

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

12
ПОПЕРЕДЖЕННЯ: Існуючий файл out.pdfбуде перезаписаний без попередження, тому pdfunite *.pdfвін не працюватиме, як очікувалося.
krlmlr

1
@krlmlr Ви завжди можете помістити вихід в інший каталог.
BЈович

Досить справедливо, cpтакож замінює останній аргумент без попередження. Це лише для спішних користувачів (як я) - Мені пощастило, що у мене була резервна копія файлу, про який йде мова ...
krlmlr

1
Оновлення: Це простий інструмент командного рядка без графічного інтерфейсу, що використовується для натискання та перетягування, як і багато інших відповідей тут. Це чудово інкапсулює складності (в значній мірі еквівалентного) рішення GhostScript.
трійка

1
Це теж дуже швидко. Робота добре На дуже повільному сервері (Aws t1.micro) gs займає 9 секунд, pdftk займає 4 секунди, а цей pdfunite займає 0,9 секунди для об'єднання двох файлів!
rsmoorthy

34

PDF Ланцюжок Встановити PDF-ланцюжок

Дуже приємне рішення - PDFChain. Це графічний інтерфейс - це PDFTK, де ви можете об'єднати, розділити або навіть додати деякий фон у ваші файли PDF.


Це найкраща відповідь. Він працює чудово, незалежно від версії Ubuntu.
Paulo Coghi

Працювали на Ubuntu 14.04 без клопоту!
мій рахунок_ram

Чудово працює на Ubuntu 18.04!
orschiro


@ user2413 це нескладний магазин, не єдине джерело програмного забезпечення в Ubuntu. Спроба пошуку aptне дала жодних результатів, хоча: /
jena


8

Альтернативний підхід - використовувати Latex, як пояснено в цій публікації ( без кореневого доступу, якщо ви встановили pdflatex ): https://tex.stackexchange.com/questions/8662/merge-two-pdf-files-output-by- латекс

Це корисно, якщо у вас немає згаданих інструментів чи привілеїв root, але у вас є pdflatex.

Я копіюю текстовий код нижче для злиття file1.pdfта file2.pdf. Створіть файл з назвою output.texта поставте:

\documentclass{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=-]{file1}
\includepdf[pages=-]{file2}
\end{document}

А для компіляції просто використовуйте: pdflatex output.tex

Об'єднаний файл буде названий як output.pdf.


6

Я використовую 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

Можливо, є простіший спосіб, як впоратися ... :-)


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



4

Ви можете використовувати pdftk для об'єднання та зміни документів PDF в цілому. Крім того, є онлайн-сервіс, що робить саме це: http://www.pdfmerge.com/


1

Ось мій підхід:

  • Я хотів, щоб це було легко доступним, тому я створив ярлик правої кнопки в Nautilus (див. Https://help.ubuntu.com/community/NautilusScriptsHowto )
  • Я хотів, щоб це було дуже швидко, тому я використовував pdfunite
  • pdfunite приймає файлові доріжки лише в середині команди, тому мені довелося подряпати голову, щоб керувати пробілами у файлових шляхах. Тому я взяв припущення, що всі файлові контури починатимуться з "/ home /" і закінчуватимуться з ".pdf"

Ось результат:

#!/bin/sh
CLEANED_FILE_PATHS=$(echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | sed 's,.pdf /home/,.pdf\\n/home/,g')
echo $CLEANED_FILE_PATHS | bash -c 'IFS=$'"'"'\n'"'"' read -d "" -ra x;pdfunite "${x[@]}" merged.pdf'

Джусте вставте цей сценарій у

/home/your_username/.local/share/nautilus/scripts

і назвіть його "merge_pdfs.sh" (наприклад). Потім зробіть його виконуваним (клацніть правою кнопкою миші на merge_pdfs.sh -> вкладка Дозволи -> галочку "Дозволити виконання файлу як програми"

Тож тепер, щоб об’єднати файли PDF, потрібно просто вибрати їх -> клацнути правою кнопкою миші -> скрипти -> merge_pdfs.sh, і це створить файл "merged.pdf" у тому самому каталозі

Сподіваюся, це допомагає!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.