首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ImageMagick拆分PDF输出文件名总是从零开始

ImageMagick拆分PDF输出文件名总是从零开始
EN

Stack Overflow用户
提问于 2015-02-18 14:53:09
回答 2查看 1.3K关注 0票数 6

我运行以下命令在ImageMagick中拆分PDF:

转换file.pdf5-10 file.png

结果输出文件总是以零开头的后缀。这就是:

文件-0.png,文件-1 file,文件-2 file.

知道我可能做错了什么吗?文档指出,文件应该从5开始以后缀形式出现,与提取的页面页码相匹配。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-18 16:08:38

最后,我使用-scene #命令行参数解决了这个问题。

这将使输出以所需的索引开始。为子孙后代:

代码语言:javascript
运行
复制
convert file.pdf -scene 5 file-%d.png
票数 8
EN

Stack Overflow用户

发布于 2015-02-18 15:35:46

您可以看到您描述的结果,因为ImageMagick对多页图像格式的页面计数是基于零的:第1页将有索引0,第2页将有索引1,等等。

另外,ImageMagick本身也不能处理PDF输入文件:它使用Ghostscript作为其‘委托’-- Ghostscript首先使用该PDF并为每个PDF页面发射一个光栅文件。然后,只有这些光栅文件由ImageMagick处理。

根据您的确切ImageMagick版本和IM设置,这可能导致间接的PNG输出生成,转换链可能如下所示:

代码语言:javascript
运行
复制
PDF --> PPM (portable pixmap) --> PNG
     ^                         ^
     |                         |
     |                         +-- (handled by ImageMagick)
     +-- (handled by Ghostscript)

如果你不走运,结果将是缓慢的,质量可能没有它可能是好的。

要验证convert a.pdf a.png命令中到底发生了什么,可以添加-verbose参数。它将显示IM使用的Ghostscript命令来处理PDF输入:

代码语言:javascript
运行
复制
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。)所以你可以试试这个:

代码语言:javascript
运行
复制
gs                  \
 -o file-%03d.png   \
 -sDEVICE=pngalpha  \
  file.pdf

-%03d文件名后缀将导致Ghostscript输出file-001.pngfile-002.pngfile-003.png

但是,如果您运气不好,并且安装了较旧版本的Ghostscript,那么文件名也将以file-000 one开头.

无论如何,由于您的sample命令似乎意味着您只想从PDF文件(并非所有页面)转换一个页面范围(5-10),下面是要使用的命令:

代码语言:javascript
运行
复制
gs                  \
 -o file-%03d.png   \
 -sDEVICE=pngalpha  \
 -dFirstPage=5      \
 -dLastPage=10      \
  file.pdf

,但坏消息是: Ghostscript仍将以file-001.png (第5页). file-005.png (第10页)的形式命名输出文件。

要解决这个问题,您还必须为前4页生成PNG,然后再删除它们:

代码语言:javascript
运行
复制
gs                  \
 -o file-%03d.png   \
 -sDEVICE=pngalpha  \
 -dFirstPage=1      \
 -dLastPage=10      \
  file.pdf

rm -rf file-00{1,2,3,4}.png
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28586539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档