我使用此Ghostscript命令将PDF转换为图像:
gs \
-q -dQUIET -dPARANOIDSAFER -dBATCH -dNOPAUSE -dNOPROMPT \
-dCOLORSCREEN \
-dDOINTERPOLATE \
-dMaxBitmap=500000000 \
-dNumRenderingThreads=4 \
-dAlignToPixels=0 \
-dGridFitTT=0 \
-dTextAlphaBits=4 \
-dGraphicsAlphaBits=4 \
-sDEVICE=jpeg \
-dFirstPage=1 \
-dDEVICEWIDTHPOINTS=1654 \
-dDEVICEHEIGHTPOINTS=2333 \
-dDEVICEXRESOLUTION=1654 \
-dDEVICEYRESOLUTION=2333 \
-sOutputFile=d:\images\%01d.jpg \
d:\test.pdf
它会转换图像,但图像为13675x27280像素。我想要1654x2333px中的图像。我做错了什么?
答案 0 :(得分:9)
您已在PostScript点中指定了介质的宽度和高度,其中有72英寸,然后指定了以每英寸点数定义的巨大分辨率(1654x2333)/
媒体的大小仅与输出的像素大小成比例,因为这也取决于分辨率。如果我将介质设置为72点(1英寸),分辨率为300 dpi,则生成的图像将为300像素。如果我将其设置为600 dpi,则图像将为600像素。
所以你说媒体是1654点(22.97222英寸)乘2333点(32.402777英寸。然后你说x方向的分辨率是1654 dpi。所以x方向的大小(以像素为单位)是22.97222 * 1654 = 37966.055。类似的计算得出y大小为75596.68。
虽然这与您声明的大小不同,但这可能是因为您没有设置-dFIXEDMEDIA,因此PDF文件中的介质大小会覆盖命令行上提供的介质大小。取分辨率和大小,这意味着介质宽度为13675/1654 = 8.25英寸,高度为11.69英寸。您的PDF文件最初使用A4作为页面大小。
您需要指定分辨率和页面大小,在一起计算时为您提供所需的像素大小。您还必须设置-dFIXEDMEDIA以防止 PDF文件覆盖指定的大小。
最后,您可能希望指定-dPDFFITPAGE,以便缩放PDF以适合媒体,假设这是您实际想要发生的事情。
在这种情况下,只需设置200 dpi的分辨率,并忽略其他点,就会得到接近你想要的结果(-r200)。显然你必须删除-dDEVICERESOLUTION开关。
答案 1 :(得分:5)
Ken解释得很清楚,但我注意到他在其中一个开关上的情况不正确。
使PDF适合(固定)页面大小的参数是-dPDFFitPage(不是全部大写)。所有Ghostscript 除非文档特别允许多个版本,否则交换机区分大小写。
此外,-g_ x _ 选项可直接以像素为单位设置图像大小(页面大小)并自动设置 -dFIXEDMEDIA选项。