我运行以下命令在ImageMagick中拆分PDF:
转换file.pdf5-10 file.png
结果输出文件总是以零开头的后缀。这就是:
文件-0.png,文件-1 file,文件-2 file.
知道我可能做错了什么吗?文档指出,文件应该从5开始以后缀形式出现,与提取的页面页码相匹配。
发布于 2015-02-18 16:08:38
最后,我使用-scene #
命令行参数解决了这个问题。
这将使输出以所需的索引开始。为子孙后代:
convert file.pdf -scene 5 file-%d.png
发布于 2015-02-18 15:35:46
您可以看到您描述的结果,因为ImageMagick对多页图像格式的页面计数是基于零的:第1页将有索引0
,第2页将有索引1
,等等。
另外,ImageMagick本身也不能处理PDF输入文件:它使用Ghostscript作为其‘委托’-- Ghostscript首先使用该PDF并为每个PDF页面发射一个光栅文件。然后,只有这些光栅文件由ImageMagick处理。
根据您的确切ImageMagick版本和IM设置,这可能导致间接的PNG输出生成,转换链可能如下所示:
PDF --> PPM (portable pixmap) --> PNG
^ ^
| |
| +-- (handled by ImageMagick)
+-- (handled by Ghostscript)
如果你不走运,结果将是缓慢的,质量可能没有它可能是好的。
要验证convert a.pdf a.png
命令中到底发生了什么,可以添加-verbose
参数。它将显示IM使用的Ghostscript命令来处理PDF输入:
convert -verbose a.pdf a.png
/var/tmp/magick-15951W3TZ3WRpwIUk1 PNG 612x792 612x792+0+0 8-bit sRGB 3.73KB 0.000u 0:00.000
a.pdf PDF 612x792 612x792+0+0 16-bit sRGB 3.73KB 0.000u 0:00.000
a.pdf=>a.png PDF 612x792 612x792+0+0 8-bit sRGB 2c 2.95KB 0.000u 0:00.000
[ghostscript library] -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT \
-dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pngalpha" \
-dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r72x72" \
"-sOutputFile=/var/tmp/magick-15951W3TZ3WRpwIUk%d" \
"-f/var/tmp/magick-15951nJD8-fF8kA7j" \
"-f/var/tmp/magick-15951JTZDMwtEswHn"
(如您所见,my IM安装被设置为进行PDF->PNG转换,而不需要通过PPM.你的里程可能会有所不同。)
当直接使用Ghostscript而不是运行IM convert
命令时,您可能会得到更好的结果。(如果ImageMagick完全适用于PDF->PNG转换,那么您肯定会安装Ghostscript。)所以你可以试试这个:
gs \
-o file-%03d.png \
-sDEVICE=pngalpha \
file.pdf
-%03d
文件名后缀将导致Ghostscript输出file-001.png
、file-002.png
、file-003.png
。
但是,如果您运气不好,并且安装了较旧版本的Ghostscript,那么文件名也将以file-000
one开头.
无论如何,由于您的sample命令似乎意味着您只想从PDF文件(并非所有页面)转换一个页面范围(5-10),下面是要使用的命令:
gs \
-o file-%03d.png \
-sDEVICE=pngalpha \
-dFirstPage=5 \
-dLastPage=10 \
file.pdf
,但坏消息是: Ghostscript仍将以file-001.png
(第5页). file-005.png
(第10页)的形式命名输出文件。
要解决这个问题,您还必须为前4页生成PNG,然后再删除它们:
gs \
-o file-%03d.png \
-sDEVICE=pngalpha \
-dFirstPage=1 \
-dLastPage=10 \
file.pdf
rm -rf file-00{1,2,3,4}.png
https://stackoverflow.com/questions/28586539
复制相似问题