현재 ImageMagick을 사용하여 PDF를 JPEG 래스터 이미지로 변환하고 있습니다. 고통스럽고 느리고 많은 메모리를 사용합니다.
내가 사용한 명령은 다음과 같습니다.
convert -geometry 1024x768 -density 200 -colorspace RGB foo.pdf bar%02d.jpg
Ghostscript를 사용하기 때문에 속도가 느리다고 생각합니다.
그러나 Linux 박스에서 더 빠른 방법이 있어야합니다.
더 나은 해결책을 찾은 사람이 있습니까?
답변
convert
Ghostscript를 간접적으로 호출 하는 ImageMagick의 명령 대신 Ghostscript를 직접 사용 하는 것이 실제로 더 빠릅니다. 또한 전환 매개 변수를보다 강력하게 제어 할 수 있습니다. 시험
gs \
-sDEVICE=jpeg \
-o bar_%03d.jpg \
-dJPEGQ=95 \
-r600x600 \
-g4960x7016 \
foo.pdf
어디
-o
: 출력 경로 + 파일명을 결정한다 (그리고 사용량을 절약-dBATCH -dNOPAUSE
)-dJPEGQ
: JPEG 품질을 95 %로 설정-r
: 해상도를 600dpi로 설정-g
: 이미지 크기를 4960x7016px로 설정-sDEVICE
: 출력을 JPEG로 설정
이 명령은 여전히 느리게 진행되어 예상보다 큰 파일을 생성합니다. 더 작은 파일 크기와 더 빠른 실행을 위해 이것을 시도하십시오 (아마도 convert
명령 줄의 출력 품질에 가깝습니다 ).
gs \
-sDEVICE=jpeg \
-o bar_%03d_200dpi_q80.jpg \
-dJPEGQ=80 \
-r200x200 \
-g1653x2339 \
foo.pdf
또는
gs \
-sDEVICE=jpeg \
-o bar_%03d_default_a4.jpg \
-sPAPERSIZE=a4 \
foo.pdf
(72dpi 해상도를 제공하며 대부분의 화면과 대부분의 웹 응용 프로그램에 적합합니다.)
답변
BTW, ImageMagick이 너무 느린 이유 중 하나는 Ghostscript를 두 번 호출하기 때문입니다. PDF => PNG를 한 번에 변환하지 않지만 두 가지 단계를 사용합니다.
- 먼저 Ghostscript를 사용하여
PDF => PostScript
변환합니다. - 그런 다음 고스트 스크립트를 사용하여
PostScript => PNG
변환합니다.
다음을 입력하여 ImageMagick의 “대리인”(Ghostscript와 같은 외부 프로그램 인 ImageMagick)에 대한 자세한 설정을 배울 수 있습니다.
convert -list delegate
(내 시스템에는 32 개의 다른 명령 목록이 있습니다.) 이제 PNG로 변환하는 데 사용되는 명령을 보려면 다음을 사용하십시오.
convert -list delegate | grep -i png
좋아, 이것은 리눅스를위한 것이었다. Windows를 사용하는 경우 다음을 시도하십시오.
convert -list delegate | findstr /i png
IM은 PS 또는 EPS 입력에서만 PNG를 생성합니다. 그렇다면 IM은 어떻게 PDF에서 (E) PS를 얻습니까? 쉬운:
convert -list delegate | findstr /i PDF
convert -list delegate | grep -i PDF
아! 그것은 Ghostscript를 사용하여 PDF => PS 변환을 한 다음 Ghostscript를 다시 사용하여 PS => PNG 변환을 만듭니다. 작동하지만 Ghostscript가 한 번에 PDF => PNG를 수행 할 수 있다는 것을 알고 있다면 가장 효율적인 방법은 아닙니다 . 그리고 더 빠릅니다. 그리고 훨씬 더 나은 품질로.
IM이 Ghostscript 대리자를 통한 이미지로의 PDF 변환을 처리하는 것에 대해 먼저 두 가지를 알아야합니다.
- 기본적으로 추가 매개 변수를 제공하지 않으면 Ghostscript는 72dpi 해상도의 이미지를 출력합니다. 가끔 여기 사람들이 추가하시기 바랍니다의 그
-density 600
A와convert
고스트 스크립트는 이미지 출력을위한 600 dpi의 해상도를 사용하도록 지시 매개 변수입니다. - 메신저의 우회는 먼저 고스트 스크립트를 두 번 호출하여 먼저 변환
PDF => PS
한 다음PS => PNG
실수입니다. 당신이 있기 때문에 결코 승리하지 않고 첫 번째 단계에서 harldy 킵 품질,하지만 매우 자주 약간 느슨한. 원인:- PDF는 투명 필름을 처리 할 수 있으며 PostScript에서는 불가능합니다.
- PDF는 트루 타입 글꼴을 포함 할 수 있으며 PostScript에서는 할 수 없습니다. 등 pp.
(반대 방향으로의 변환은PS => PDF
그렇게 중요하지 않습니다 ….)
그래서 Ghostscript를 사용하여 PDF를 한 번에 PNG (또는 JPEG)로 변환하는 것이 좋습니다. 그리고 Ghostscript의 최신 버전 8.71 (곧 출시 : 9.00)을 사용하십시오 …
답변
pdftoppm
poppler 패키지 의 프로그램 은 JPEG를 만들 수 gs
있으며 위의 경우보다 두 배 빠릅니다 .
pdftoppm -jpeg -r 300 foo.pdf foo.jpg
답변
내 경험상 MuPDF 는 Ghostscript보다 훨씬 빠릅니다. gs에 많은 균열이없는 훨씬 새로운 프로젝트입니다. 사용 사례에 적합한 지 확인해보십시오!
mudraw -w 1024 -h 768 -r 200 -c rgb -o bar%d.png foo.pdf
이전 Linux 배포판이 있고 저장소에서 mupdf-tools를 설치 한 경우 mudraw
여전히 호출 될 수 있습니다.pdfdraw
그런 다음 예를 들어 imagemagick을 사용하여 png를 jpeg로 변환해야합니다. 그러나 여전히 Ghostscript보다 빠릅니다.