我有一个由 N 页组成的 PDF。我想将此 PDF 转换为 N 个 jpeg 图像(通过命令行,不使用 Php、Java 或其他编程语言)。
我正在尝试使用 GHOSTSCRIPT 来执行此操作,但 GS 提供给我的输出并不像我想要的输出。
例子:
gs \
-sDEVICE=jpeg \
-dNOCACHE \
-dDEVICEHEIGHTPOINTS=72 -dDEVICEWIDTHPOINTS=72 \
-r300 \
-g800x600 \
-dFIXEDMEDIA \
-dPDFFitPage \
-sOutputFile=output/%d.jpg \
mypdf.pdf
生成具有 800x600 分辨率的 N jpeg 图像,但似乎 PDF 页面被裁剪且不适合。
我怎样才能从 N-Pages PDF 中获取 N jpeg 图像(从命令行)?
答案1
alesdario 使用的命令行执行以下操作:
- 告诉 Ghostscript 使用 800px x 600px(像素)的输出尺寸。
- 告诉 Ghostscript 使用 300dpi(每英寸点数)的分辨率。
- 告诉 Ghostscript 使用 72 个设备点的输出维度。
三者不能同时起作用,因为如果两者同时起作用,就会与第三者相矛盾。
在 300 dpi 下,800x600 的画布将产生 2.33 英寸 x 2 英寸(英寸)的物理尺寸 - 比原始 PDF 页面大小(可能)小得多。
到“只需从 N 页 PDF 中获取 N 张 jpeg 图像(从命令行)”使用此命令:
gs \
-sDEVICE=jpeg \
-o output/%d.jpg \
mypdf.pdf
这是最简单的调用,不会裁剪任何内容,并将使用 Ghostscript 的默认设置:
- 图像分辨率:JPEG 输出为 72 dpi
- 输出图像的尺寸:这遵循相应的 PDF 页面大小(但是,Ghostscript 假定 PDF 使用 720dpi)。
为了从 N 页 PDF 中获取 N 个 JPEG 图像按预定义的分辨率和预定义的图像尺寸,您需要自己进行一些计算并相应地设置-r
和-g
值。例如,您可能希望 JPEG 的分辨率为 200 dpi(来自 ISO A4 [595x842 pt] 的 PDF 页面大小):这意味着-r200 -g1652x2338
如果您想避免裁剪,则需要在命令行中添加....这将使 Ghostscript重采样所有页面及其所包含的对象均调整为新的分辨率。
答案2
尝试图像魔术师。我相信你想要的命令是:
$ convert -density 400 my.pdf my.jpeg