Obecnie używam ImageMagick do konwersji plików PDF na obrazy rastrowe JPEG. Jest boleśnie powolny i zużywa dużo pamięci.
Polecenie, którego użyłem to:
convert -geometry 1024x768 -density 200 -colorspace RGB foo.pdf bar%02d.jpg
Myślę, że jest powolny, ponieważ używa Ghostscript. Ale musi być szybszy sposób, aby to zrobić na Linux-ie.
Czy ktoś znalazł lepsze rozwiązanie?
pdf
imagemagick
ghostscript
mat3001
źródło
źródło
Odpowiedzi:
Używanie Ghostscript bezpośrednio (zamiast
convert
polecenia ImageMagick , które wywołuje Ghostscript pośrednio) jest rzeczywiście szybsze. Daje to większą kontrolę nad parametrami konwersji. Próbowaćgdzie
-o
: określa ścieżkę wyjściową + nazwę pliku (i oszczędza użycie-dBATCH -dNOPAUSE
)-dJPEGQ
: ustawia jakość JPEG na 95%-r
: ustawia rozdzielczość na 600 dpi-g
: ustawia rozmiar obrazu na 4960 x 7016 pikseli-sDEVICE
: ustawia wyjście jako JPEGTo polecenie prawdopodobnie nadal będzie dla ciebie spowalniać i tworzyć pliki większe niż oczekiwano. Aby uzyskać mniejsze rozmiary plików i szybsze wykonanie, wypróbuj to (co prawdopodobnie zbliża się do jakości wyjściowej
convert
wiersza poleceń):lub nawet
(co daje rozdzielczość 72dpi, często wystarczającą dla większości ekranów i większości aplikacji internetowych).
źródło
BTW, jednym z powodów, dla których ImageMagick jest o wiele wolniejszy, jest to, że wywołuje Ghostscript dwa razy. Nie konwertuje PDF => PNG za jednym razem, ale wykorzystuje 2 różne kroki:
PDF => PostScript
konwersji;PostScript => PNG
konwersji.Możesz dowiedzieć się o szczegółowych ustawieniach „delegatów” ImageMagick (programy zewnętrzne, z których korzysta ImageMagick, takie jak Ghostscript), pisząc
(W moim systemie jest to lista 32 różnych poleceń.) Teraz, aby zobaczyć, które polecenia są używane do konwersji na PNG, użyj tego:
Ok, to było dla Linuksa. Jeśli korzystasz z systemu Windows, spróbuj tego:
Przekonasz się, że IM tworzy PNG tylko na podstawie PS lub EPS. Więc w jaki sposób IM pobiera (E) PS z twojego pliku PDF? Łatwo:
Ach! Używa Ghostscript do konwersji PDF => PS, a następnie Ghostscript ponownie do konwersji PS => PNG. Działa, ale nie jest najskuteczniejszym sposobem, jeśli wiesz, że Ghostscript może zrobić PDF => PNG za jednym razem. I szybciej. I w znacznie lepszej jakości.
O przetwarzaniu wiadomości błyskawicznych przez konwersję PDF na obrazy za pośrednictwem delegata Ghostscript powinieneś wiedzieć przede wszystkim dwie rzeczy:
-density 600
jakoconvert
parametru, który mówi Ghostscriptowi, aby używał rozdzielczości 600 dpi do wyświetlania obrazu.PDF => PS
a następniePS => PNG
jest prawdziwym błędem. Ponieważ nigdy nie wygrywasz, a harldy utrzymuje jakość na pierwszym etapie, ale bardzo często przegrywasz. Powody:(Konwersja w przeciwnym kierunku
PS => PDF
, dlatego nie jest aż tak krytyczna ....)Właśnie dlatego zasugerowałem, aby przekonwertować pliki PDF za jednym razem do formatu PNG (lub JPEG) przy użyciu programu Ghostscript. I użyj najnowszej wersji 8.71 (wkrótce wydanej: 9.00) Ghostscript ...
źródło
Program
pdftoppm
z pakietu poppler jest również w stanie tworzyć pliki JPEG, a dla mnie jest około dwa razy szybszy niż przy użyciu,gs
jak opisano powyżej:źródło
Z mojego doświadczenia wynika , że MuPDF jest znacznie szybszy niż Ghostscript. Jest to znacznie nowszy projekt bez większego zamieszania w gs. Spróbuj, jeśli pasuje do twojej skrzynki!
mudraw -w 1024 -h 768 -r 200 -c rgb -o bar%d.png foo.pdf
Jeśli masz starszą dystrybucję linuksową i zainstalowałeś narzędzia mupdf z repozytorium,
mudraw
może być nadal wywoływanepdfdraw
Następnie musisz przekonwertować png na JPEG, używając na przykład imagemagick. Ale nadal będzie szybszy niż Ghostscript.
źródło