Ghost Script - 从PDF中提取单个页面并将其转换为JPG

28

我正在使用Ubuntu 10.10,已安装Ghostscript。我需要做的是从我的PDF中提取一页,然后将该页面转换为jpg。目的是创建一个PDF预览器...

我找到了一些适用于Windows版本Ghostscript的设置,可以将整个文件转换为jpg。但它无法帮助我分离出单独的一页,这正是我所需要的。

    -dBATCH ^
    -dNOPAUSE ^
    -dSAFER ^
    -sDEVICE=jpeg ^
    -dJPEGQ=30 ^
    -r72x72 ^
    -sOutputFile=c:/path/to/jpeg-dir/pdffile-%03d.jpeg ^
    /path/to/pdffile.pdf

然后我需要将它写入我的PHP库,这样我就可以运行如下函数$img_src = pdf::preview('test.pdf', $page=1);

有人有任何想法吗?

谢谢

ESP Ghostscript 815.02(2006-04-19) 版权所有(C)2004 artofcode LLC,Benicia,CA。保留所有权利。 此软件不带任何保修:有关详细信息,请参见PUBLIC文件。

1个回答

48

你的意思是要从PDF中提取单个页面吗?假设你想提取第12页。你可以使用Ghostscript并使用以下选项来完成:

-dFirstPage=12 -dLastPage=12

只需将这两个选项添加到您上面的选项中,将 "12" 更改为要提取的页面。

如果您是从终端运行它,它会像这样:

gs \
 -sDEVICE=jpeg \
 -o %03d.jpeg \
 -dFirstPage=12 \
 -dLastPage=12 \
 -dJPEGQ=30 \
 -r72x72 \
  file.pdf

我真心不建议使用Imagemagick来将PDF转换为JPEG;它无论如何都使用Ghostscript来完成这个任务,并且比直接使用Ghostscript要慢。我做了一些实验,并发现使用Ghostscript输出高质量的JPEG图像,然后使用Imagemagick的mogrify命令调整大小和压缩图像可以获得更高质量的图像,尽管这可能是由于我对Ghostscript知识有限而不是其局限性造成的。如果你只是创建72 x 72的缩略图,那么这可能并不重要。


1
根据我的经验,这绝对是真的。ImageMagick在幕后调用GS,但我认为它会将页面串联起来,然后读入内存,这样非常慢。相比之下,Ghostscript更快、占用更少的内存,并且在执行此任务时具有更好的质量,因此比使用ImageMagick更好。 - Ibrahim
是的!从我的应用程序中删除ImageMagick层,直接调用Ghostscript可以显著提高性能。 - mike
gs页面是基于1而不是基于0的(对于这个问题来说,这是一些有用的信息,因为gs错误消息与不正确的页面范围是通用的)。 - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接