Jak przekonwertować plik PDF na obraz?


Odpowiedzi:


299
  1. Zainstaluj imagemagick .

  2. Korzystanie z terminala, w którym znajduje się plik PDF:

    • Aby uzyskać pełny dokument:

      convert -density 150 input.pdf -quality 90 output.png
      
    • Dla jednej strony:

      convert -density 150 input.pdf[666] -quality 90 output.png
      

W wyniku czego:

  • Można wybrać format PNG, JPG lub (praktycznie) dowolny inny format obrazu.

  • -density xxxustawi DPI na xxx(wspólne to 150 i 300).

  • -quality xxxustawi kompresję xxxna formaty plików PNG, JPG i MIFF (100 oznacza brak kompresji).

  • [666]przekonwertuje tylko 667 stronę na PNG (numeracja zerowa, więc [0]jest to pierwsza strona).

  • Wszystkie inne opcje (takie jak przycinanie, skala szarości itp.) Można wyświetlić na stronie internetowej Image Magic .


2
Odpowiedź, jak jest, działa, ale rozdzielczość jest bardzo słaba. Dlatego obecnie nie jest przydatna odpowiedź. Może jeśli konwersja ma jakieś parametry, które można określić, może się to zmienić.
Elijah Lynn,

48
Ta odpowiedź jest znacznie lepsza jakość askubuntu.com/a/50180/11929
Elijah Lynn

6
Możesz zmienić gęstość, dodając -density 300parametr
OHLÁLÁ

4
Czy ktoś może więc potwierdzić, że określenie gęstości czyni ją „tak dobrą” jak inne odpowiedzi tutaj, czy nie? Również jako notatkę do zwolenników, ImageMagick nazywa się „Ghostscript” faktycznie przekonwertować z PDF do PNG ex: gs -q NOPROMPT ...-sDEVICE=pngalpha -r150x150 -sOutputFile=/var/tmp/Yf%d -f/var/tmp/L -f/var/tmp/Fic1a jeśli masz convert: no images defined output.pngto oznacza, że nie został zainstalowany Ghostscript ...
rogerdpack

4
Parsowania PDF w ImageMagick został wyłączony - bugs.archlinux.org/task/59778 - może to być włączony ręcznie poprzez edycję /etc/ImageMagick-7/policy.xmlpliku i usunięcie PDFz<policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />
Jęzor

393

Możesz użyć pdftoppmdo konwersji pliku PDF do formatu PNG:

pdftoppm input.pdf outputname -png

Spowoduje to wydrukowanie każdej strony w formacie PDF w formacie outputname-01.png, który 01jest indeksem strony.

Konwertowanie pojedynczej strony pliku PDF

pdftoppm input.pdf outputname -png -f {page} -singlefile

Zmień {page}na numer strony. Indeksuje się na 1, więc -f 1byłaby to pierwsza strona.

Określanie rozdzielczości przekonwertowanego obrazu

Domyślna rozdzielczość tego polecenia to 150 DPI. Zwiększenie go spowoduje zarówno większy rozmiar pliku, jak i więcej szczegółów.

Aby zwiększyć rozdzielczość przekonwertowanego pliku PDF, dodaj opcje -rx {resolution}i -ry {resolution}. Na przykład:

pdftoppm input.pdf outputname -png -rx 300 -ry 300

24
Dziękuję bardzo. Znacznie lepsza jakość niż w przypadku imageMagick lub GraphicsMagick!
dAnjou

7
pdftoppm jest znacznie szybszy niż konwersja
zuo

4
To naprawdę dużo lepsze niż imagemagick. Imagemagick zmienił kolory w nieoczekiwany sposób w moim przypadku!
NoBackingDown,

13
to dobrze !, ale nieco łatwiej jest pisać -r 300zamiast samodzielnie określać rozdzielczości xiy, gdy chcesz ustawić je na tę samą wartość.
mlc,

2
Miałem o wiele większy sukces z pdftoppm niż z imagemagick.
Michael Hays,

22

IIRC GIMP może wykorzystywać pliki PDF, tzn. Konwertować je na obrazy. Więc jeśli chcesz od razu edytować obrazy - GIMP jest twoim przyjacielem.


GIMP może rzeczywiście otwierać pliki PDF, każda strona jako jedna warstwa. Wybranie opcji „Eksportuj jako” wydaje się zapisywać tylko bieżącą warstwę, ale można ją łatwo usunąć po wyeksportowaniu i ponownie uruchomić opcję „Eksportuj jako”.
Dan Dascalescu

12

Akceptowana obecnie odpowiedź spełnia swoje zadanie, ale daje wynik, który jest większy i cierpi z powodu utraty jakości.

Sposób w odpowiedzi udzielonej tutaj skutkuje wyjściem która jest porównywalna wielkością do wejścia i nie cierpią z powodu utraty jakości.

TLDR - użyj pdfimages:pdfimages -j input.pdf output

Cytując połączoną odpowiedź:

Nie jest jasne, co rozumiesz przez „utratę jakości”. To może znaczyć wiele różnych rzeczy. Czy możesz opublikować próbki do zilustrowania? Być może wyciąć tę samą sekcję z wersji niskiej jakości i dobrej jakości (jako PNG, aby uniknąć dalszej utraty jakości).

Być może trzeba użyć -densitydo konwersji w wyższej rozdzielczości:

convert -density 300 file.pdf page_%04d.jpg

(Możesz dodać -units PixelsPerInchlub w -units PixelsPerCentimeterrazie potrzeby. Domyślnie moja kopia to ppi.)

Aktualizacja: Jak już wspomniałeś, gscan2pdf(sposób, w jaki go używasz) jest tylko opakowaniem dla pdfimages(z popplera ). pdfimages nie robi tego samego, convertco w przypadku pliku PDF jako danych wejściowych.

convert pobiera plik PDF, renderuje go w pewnej rozdzielczości i wykorzystuje uzyskaną bitmapę jako obraz źródłowy.

pdfimagesprzegląda pliki PDF pod kątem osadzonych obrazów bitmapowych i eksportuje je do pliku. Po prostu ignoruje wszelkie polecenia rysowania tekstu lub wektorów w pliku PDF.

W rezultacie, jeśli masz plik PDF, który jest tylko opakowaniem wokół serii map bitowych, pdfimagesznacznie lepiej wyodrębni je, ponieważ dostarczy ci surowe dane w oryginalnym rozmiarze. Prawdopodobnie zechcesz również skorzystać z tej -jopcji pdfimages, ponieważ plik PDF może zawierać surowe dane JPEG. Domyślnie pdfimageskonwertuje wszystko do formatu PNM, a konwersja JPEG> PPM> JPEG jest procesem stratnym.

Więc spróbuj

pdfimages -j file.pdf page

Konieczne może być wykonanie tej czynności krok convertpo .jpgkroku (w zależności od formatu bitmapy, z którego korzystał plik PDF).

Wypróbowałem to polecenie w pliku PDF, który utworzyłem z sekwencji obrazów JPEG. Wyodrębnione pliki JPEG były bajt po bajcie identyczne z obrazami źródłowymi. Nie można uzyskać wyższej jakości niż to.


8

Jeśli twoje pliki PDF są skanowane, obrazy są już przechowywane jako część pliku pdf. po prostu musisz je wyodrębnić za pomocą pdfimages:

pdfimages my-file.pdf prefix 

2
Jest to idealne rozwiązanie dla zeskanowanych plików PDF, ponieważ za pomocą jednego polecenia można wyodrębnić oryginalne pliki JPG i bez dalszych kompresji.
Jose Gómez

3

Aby uzyskać pojedynczą stronę z konwersji gm, dodaj [N] (z N numer strony zaczynający się od 0) do nazwy PDF, tzn. gm convert foo.pdf[11] out.pngAby uzyskać 12. stronę z pliku PDF.

Do pdftoppmużycia -f N -singlefile, gdzie N jest numerem strony rozpoczynającym się od 1, tj. pdftoppm -f 12 -singlefile foo.pdf outDla tego samego wyniku. Wygląda na to, że zawsze dodaje „.png” do wyjściowej nazwy pliku i nie ma sposobu, aby to zatrzymać.


2

Możesz użyć konwersji i określić wyższą gęstość za pomocą -densityopcji.

na przykład. convert -d 300 foo.pdf bar.png


czy możesz wyjaśnić więcej na temat tego, czym jest gęstość i co może zrobić?
rɑːdʒɑ

1
@AgentCool Określa gęstość obrazu w poziomie i pionie (w ppi).
Arjun

2

Jeśli chcesz tylko przekonwertować określoną stronę pliku PDF na format PNG, możesz przesłać pdftkdo convert( opisanego powyżej ) potoku w następujący sposób:

pdftk document.pdf cat 12 output - | convert - document-page-12.png

1

Master PDF Editor (wersja 2.2) ma tę opcję włączoną. Otwórz plik PDF, a następnie przejdź do Plik> Eksportuj do> Obrazy. Przedstawia okno dialogowe, w którym można zdefiniować różne opcje wyniku. Niezwykle przydatny. Mam nadzieję, że te informacje pomogą.


Czy to w wersji darmowej czy płatnej? W mojej wersji opcja jest wyszarzona? Czy to oznacza, że ​​muszę zapłacić? Czy jest wersja płatna?
Joshua Robison

0

PDF Mod pozwala również na eksport obrazów wszystkich lub pojedynczych stron plików PDF.

  • Otwórz plik PDF w PDF Mod
  • Wybierz strony -
  • Edycja> Eksportuj obrazy
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.