Jak scalić pdf: s za pomocą Imagemagick (problem z rozdzielczością)

43

Kiedy próbuję scalić dwa pliki .pdf za pomocą Imagemagick

convert pdf1.pdf pdf2.pdf temp.pdf

wynikowy plik temp.pdf wydaje się mieć bardzo niską rozdzielczość. Jak mogę zachować rozdzielczość taką samą jak w plikach źródłowych?


źródło

Odpowiedzi:

53

Barns ma rację, ale jeśli pdftk nie działa, wypróbuj ghostscript.

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

źródło
Działa idealnie i zbyt szybko - znacznie szybciej niż użycie ImageMagick z flagą -density.
Brionius
To powinna być poprawna odpowiedź. Nie to, że ImageMagick nie działa; to też działa. Ale jak zauważył @Brionius, gs jest znacznie szybszy, a jakość wynikowego pliku PDF jest na najwyższym poziomie.
Jagtesh Chadha,
Zauważ, że możesz użyć * .pdf zamiast listy pdf1.pdf i pdf2.pdf na końcu tego polecenia, aby przekonwertować wszystkie pdf w folderze na pojedynczy pdf.
Colin D
Miałem pewne problemy z czcionką, niektóre strony gubią czcionkę. Czy mogę to wybrać?
Zloy Smiertniy
20

Polecenie konwersji Imagemagick jest zwykle używane do konwertowania plików obrazów z jednego formatu na inny, w takim przypadku możliwe jest, że faktycznie wykonuje wewnętrzną konwersję, zanim wyśle ​​dwa „obrazy” (PDF) do jednego pliku.

Proponuję rozważyć użycie zestawu narzędzi PDF (pdftk) zamiast http://www.accesspdf.com/pdftk/

Z przykładów na stronie internetowej powinno to być tak proste, jak:

pdftk pdf1.pdf pdf2.pdf cat output temp.pdf
Richard
źródło
Korzystam z systemu OS X 10.6.1 i próbowałem zainstalować pdftk za pośrednictwem Macports. Wygląda na to, że pdftk jest przestarzałe na Macu, instalacja się nie zakończy. Próbowałem to zrobić za pomocą Imagemagick.
Na Ubuntu pdftk nie miał problemu z zainstalowaniem z apt, i zrobił to wspaniale. Użyłem ImageMagick do łączenia plików PDF z dużym sukcesem, ale ponieważ najpierw rasteryzuje pliki PDF (co zrozumiałe - nie działa z wektorami), nie wygląda tak dobrze dla większości dokumentów tekstowych. Ale pdftk działał świetnie - dzięki za sugestię.
Iguananaut
Świetnie ... dziękuję
Dan Ortega
Głosujmy teraz, pdftk działa o wiele lepiej niż robiąc to ghostcript.
Dan Ortega
18

Jeśli każdy plik, który chcesz scalić, znajduje się w tym samym folderze:

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

argument -density 150utrzymuje jakość scalonych plików PDF.

juda
źródło
5
Uwaga dodatkowa na temat całej składni pliku PDF, możesz pominąć polecenie sub-ls:convert -density 150 *.pdf output.pdf
Josh
„* .pdf” i „$ (ls -rt * pdf)” mogą powodować różne wyniki.
shantanoo
8

Zawsze zapominam, jak to zrobić i znajduję to pytanie jako pierwsze, gdy szukam.

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

Połączony przykład ma gęstość 144, która jednak nigdy nie była wystarczająco wysoka, aby nie wyglądała na pikselowaną.

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

Leslie Pajuelo
źródło
Przepraszamy, link już nie działa.
Sablefoste
0

Nie mogłem znaleźć żadnego sposobu na połączenie dwóch plików pdf razem przy zachowaniu dobrej rozdzielczości i nienaruszonego tekstu, ale wymyśliłem sposób, aby przekonwertować go na plik png w wysokiej rozdzielczości.

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

To prowadzi do pierwszych dwóch stron page.pdf i łączy je w plik png o wysokiej rozdzielczości obok siebie.

Zmiana ostatniej linii na

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

zaowocuje wydrukiem dokumentu pdf, jak później zorientowałem się po bałaganie w pngtopnm, pnmtops, ps2pdf.

Barry Dmytro
źródło
2
-1 za sugerowanie rasteryzacji (możliwego) obrazu wektorowego. To nie jest droga.
Marco