pdfをjpegに変換しようとしたらこんなエラーが出た:
$ convert -limit memory 512 -density 600 -quality 80 -resize 800x /path/to/001.pdf /path/to/001.jpg **** Error reading a content stream. The page may be incomplete. **** Error reading a content stream. The page may be incomplete. Error: /typecheck in --run-- Operand stack: --dict:3/3(L)-- 13787 1 1 --nostringval-- --nostringval-- --nostringval-- 0 3 1 1 --nostringval-- Execution stack: %interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1894 1 3 %oparray_pop 1893 1 3 %oparray_pop 1877 1 3 %oparray_pop --nostringval-- --nostringval-- 2 1 1 --nostringval-- %for_pos_int_continue --nostringval-- --nostringval-- --nostringval-- --nostringval-- %loop_continue --nostringval-- 1 1 0 --nostringval-- %for_pos_int_continue --nostringval-- Dictionary stack: --dict:1166/1684(ro)(G)-- --dict:1/20(G)-- --dict:82/200(L)-- --dict:82/200(L)-- --dict:109/127(ro)(G)-- --dict:292/300(ro)(G)-- --dict:25/32(L)-- Current allocation mode is local GPL Ghostscript 9.07: Unrecoverable error, exit code 1 convert: Postscript delegate failed `/path/to/001.pdf': No such file or directory @ error/pdf.c/ReadPDFImage/678. convert: no images defined `/path/to/tmp.jpg' @ error/convert.c/ConvertImageCommand/3078.
散々ググった結果、Ghostscriptでpdfinflt.psで処理してから再度convertすればいいことがわかった:
$ gs -sDEVICE=bbox -- /path/to/pdfinflt.ps /path/to/001.pdf /path/to/001_inflt.pdf GPL Ghostscript 9.07 (2013-02-14) Copyright (C) 2012 Artifex Software, Inc. All rights reserved. This software comes with NO WARRANTY: see the file PUBLIC for details. **** Error reading a content stream. The page may be incomplete. Converting 001.pdf to 001_inflt.pdf **** Error reading a content stream. The page may be incomplete. Done. $ convert -limit memory 512 -density 600 -quality 80 -resize 800x /path/to/001_inflt.pdf /path/to/001.jpg
使用したGhostscriptは9.07。
Linuxの場合、本家サイトからバイナリがダウンロードできるけど、lib/pdfwrite.ps
が必要になるのでソースを取ってきてビルドしたほうがいい。*1pdfwrite.psがない(gsが発見できない)場合には次のようなエラーが出る:
$ gs -sDEVICE=bbox -- /path/to/pdfinflt.ps 001.pdf 001_inflt.pdf GPL Ghostscript 9.07 (2013-02-14) Copyright (C) 2012 Artifex Software, Inc. All rights reserved. This software comes with NO WARRANTY: see the file PUBLIC for details. Error: /undefinedfilename in (pdfwrite.ps) Operand stack: --nostringval-- Execution stack: %interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1900 1 3 %oparray_pop 1899 1 3 %oparray_pop 1883 1 3 %oparray_pop 1771 1 3 %oparray_pop --nostringval-- %errorexec_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- Dictionary stack: --dict:1160/1684(ro)(G)-- --dict:0/20(G)-- --dict:80/200(L)-- Current allocation mode is local Last OS error: No such file or directory Current file position is 5151 GPL Ghostscript 9.07: Unrecoverable error, exit code 1
pdfinflt.psはソースからインストールした場合(Homebrew含む)でもそれだけでは手に入らないので、リポジトリから落としてきて適当な場所に保存する必要がある。
参考
*1:yumとかapt-getとかの対応状況はわからない