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?
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?
Odpowiedzi:
Zainstaluj imagemagick .
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 xxx
ustawi DPI na xxx
(wspólne to 150 i 300).
-quality xxx
ustawi kompresję xxx
na 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 .
-density 300
parametr
gs -q NOPROMPT ...-sDEVICE=pngalpha -r150x150 -sOutputFile=/var/tmp/Yf%d -f/var/tmp/L -f/var/tmp/Fic1
a jeśli masz convert: no images defined output.png
to oznacza, że nie został zainstalowany Ghostscript ...
/etc/ImageMagick-7/policy.xml
pliku i usunięcie PDF
z<policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />
Możesz użyć pdftoppm
do 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 01
jest indeksem strony.
pdftoppm input.pdf outputname -png -f {page} -singlefile
Zmień {page}
na numer strony. Indeksuje się na 1, więc -f 1
byłaby to pierwsza strona.
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
-r 300
zamiast samodzielnie określać rozdzielczości xiy, gdy chcesz ustawić je na tę samą wartość.
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.
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ć
-density
do konwersji w wyższej rozdzielczości:convert -density 300 file.pdf page_%04d.jpg
(Możesz dodać
-units PixelsPerInch
lub w-units PixelsPerCentimeter
razie potrzeby. Domyślnie moja kopia to ppi.)Aktualizacja: Jak już wspomniałeś,
gscan2pdf
(sposób, w jaki go używasz) jest tylko opakowaniem dlapdfimages
(z popplera ).pdfimages
nie robi tego samego,convert
co 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.
pdfimages
przeglą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,
pdfimages
znacznie lepiej wyodrębni je, ponieważ dostarczy ci surowe dane w oryginalnym rozmiarze. Prawdopodobnie zechcesz również skorzystać z tej-j
opcjipdfimages
, ponieważ plik PDF może zawierać surowe dane JPEG. Domyślniepdfimages
konwertuje 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
convert
po.jpg
kroku (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.
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
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.png
Aby uzyskać 12. stronę z pliku PDF.
Do pdftoppm
użycia -f N -singlefile
, gdzie N jest numerem strony rozpoczynającym się od 1, tj. pdftoppm -f 12 -singlefile foo.pdf out
Dla tego samego wyniku. Wygląda na to, że zawsze dodaje „.png” do wyjściowej nazwy pliku i nie ma sposobu, aby to zatrzymać.
Jeśli chcesz tylko przekonwertować określoną stronę pliku PDF na format PNG, możesz przesłać pdftk
do convert
( opisanego powyżej ) potoku w następujący sposób:
pdftk document.pdf cat 12 output - | convert - document-page-12.png
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ą.