Як об’єднати pdf: s за допомогою Imagemagick (проблема вирішення)


43

Коли я намагаюся об'єднати два .pdf-файли за допомогою Imagemagick

convert pdf1.pdf pdf2.pdf temp.pdf

Отриманий файл temp.pdf має дуже низьку роздільну здатність. Як я можу зберегти роздільну здатність так само, як у вихідних файлах?

Відповіді:


53

Барнс правий, але якщо pdftk не працював, спробуйте ghostscript.

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=temp.pdf pdf1.pdf pdf2.pdf

Працювало чудово і теж швидко - набагато швидше, ніж використання ImageMagick з прапорцем-щільності.
Бріоній

Це має бути правильна відповідь. Не те, що ImageMagick не працює; це теж працює. Але, як зазначав @Brionius, gs набагато швидше, і якість отриманого pdf є найкращою.
Jagtesh Chadha

Зауважте, що ви можете використовувати * .pdf замість списку pdf1.pdf та pdf2.pdf в кінці цієї команди для перетворення всіх pdf у папці в один pdf.
Колін Д

У мене виникли проблеми із шрифтом, деякі сторінки втрачають свій шрифт. Чи є спосіб я його вибрати?
Zloy Smiertniy

20

Команда перетворення Imagemagick зазвичай використовується для перетворення файлів зображень з одного формату в інший, і в цьому випадку можливо, що він фактично виконує внутрішнє перетворення сортів перед виведенням двох "зображень" (PDF) в один файл.

Я б запропонував вам замість цього http://www.accesspdf.com/pdftk/ використовувати PDF Toolkit (pdftk)

З прикладів на веб-сайті це повинно бути таким же простим, як:

pdftk pdf1.pdf pdf2.pdf cat output temp.pdf

Я працюю на OS X 10.6.1 і спробував встановити pdftk через Macports. Здається, що pdftk застарілий на Mac, установка не закінчиться. Отже, я спробував це зробити за допомогою Imagemagick.

На Ubuntu pdftk не було проблем встановити з apt, і це зробило трюк славно. Раніше я використовував ImageMagick для зшивання PDF-файлів із великим успіхом, але, оскільки він спочатку раструє PDF-файли (зрозуміло - він не працює з векторами), він не виглядає так добре для більшості текстових документів. Але pdftk працював чудово - дякую за пропозицію.
Ігуананавт

Чудово ... дякую
Дан Ортега

Давайте підкреслимо це, pdftk працює набагато краще, ніж це робить ghostcript.
Дан Ортега

18

Якщо кожен файл, який потрібно об'єднати, знаходиться в одній папці:

convert -density 150 $(ls -rt *pdf) output.pdf

аргумент -density 150зберігає якість об'єднаних PDF-файлів.


5
Бічну примітку до всього синтаксису PDF, ви можете опустити команду sub-ls:convert -density 150 *.pdf output.pdf
Josh

'* .pdf' і '$ (ls -rt * pdf)' можуть призвести до різних результатів.
shantanoo

8

Я завжди забуваю, як це зробити, і спочатку знаходжу це питання під час пошуку.

convert -density 600 file1.pdf file2.pdf -resize 50% new.pdf

Зв'язаний приклад має щільність 144, проте ніколи не була достатньо високою, щоб не виглядати пікселізованою.

http://web.archive.org/web/20130311071316/http://studio.imagemagick.org/pipermail/magick-users/2009-September/022958.html


На жаль, посилання зараз мертве.
Sablefoste


0

Я не міг знайти жодного способу з'єднання двох pdf-файлів разом, зберігаючи роздільну здатність та текст недоторканим, але я з'ясував спосіб перетворити його у png-файл високої роздільної здатності.

pdftoppm -f 1 -l 1 -aa yes -aaVector yes -png -r 300 page.pdf > tmp1.png
pdftoppm -f 2 -l 2 -aa yes -aaVector yes -png -r 300 page.pdf > tmp2.png
convert tmp1.png tmp2.png +append -quality 100 page.png

Це потрібно для перших двох сторінок page.pdf і приєднує їх до бічного png-файла з високою роздільною здатністю.

Зміна останнього рядка на

convert tmp1.png tmp2.png +append -quality 100 page.pdf

призведе до виведення документа в форматі PDF, як я пізніше з'ясував після того, як возитися з pngtopnm, pnmtops, ps2pdf.


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