Jak przekonwertować plik PDF na obraz?

327

Mam wymaganie konwersji stron PDF na obrazy. Jest obraz tła z napisem, więc kiedy zapisuję go jako obraz, zapisywany jest tylko obraz tła.

Czy jest dostępne oprogramowanie do tego samego, aby można było przekonwertować całą stronę na obraz?

Deependra Solanky
źródło
Najwyraźniej jest to również możliwe w inkscape: stackoverflow.com/a/15484727/32453
rogerdpack

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 .

Życie binarne
źródło
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
enzotib
źródło
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.

tesseract
źródło
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.

Anmol Singh Jaggi
źródło
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 
VitoshKa
źródło
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ć.

użytkownik3080602
źródło
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

Arjun
źródło
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
IQAndreas
źródło
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ą.

Wysypka
źródło
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
nylowany
źródło