Ghostscript PDF转PNG:输出总是595x842(A4)

5
我试图将PDF转换为PNG,但输出的图像始终是A4大小,而源PDF非常巨大。以下是我的命令:
-dNOPAUSE ^
-dBATCH ^
-dSAFER ^
-sDEVICE=png16m ^
-dFirstPage=1 ^
-sOutputFile="D:\PDF.png" ^
 "D:\PDF.pdf" ^
-sPAPERSIZE=a1

我尝试了几个选项(-r,-g,-sDEFAULTPAPERSIZE),但都没有起作用。

如何强制输出图像尺寸?

P.S:我的PDF文件


我建议你切换到MuPDF,它更快速、更易于使用。 - vartec
1
如果您想尝试vartec的建议,请使用更新版本的MuPDF。您想要测试的命令行是针对1页PDF(输出分辨率=100dpi)的,即 mupdfdraw -o out.png -r 100 input.pdf。您会发现,mupdfdraw目前不允许同时指定输出图像的尺寸和分辨率。这就是所谓的“更易于使用”... :-) - Kurt Pfeifle
2个回答

5

您链接的PDF文件只有一页,这意味着您的命令行参数-dFirstPage=1没有任何影响。

另外,您的-sPAPERSIZE=a1参数不应该放在最后(它在这里没有任何影响 - 因此Ghostscript会从输入PDF的页面大小中获取默认大小,即A4)。相反,它应该出现在"D:\PDF.pdf"之前(必须是最后一个)。

看起来您想要一个大小为A1的PNG,并且您的操作系统是Windows(根据您提供的部分命令行猜测)?

请尝试使用以下命令行(它添加了-dPDFFitPage=true到命令行中,并将参数放入正确的顺序中,同时使用-o技巧缩短了一些):

gswin32c.exe ^
  -o "D:\PDF.png ^
  -sDEVICE=png16m ^
  -sPAPERSIZE=a1 ^
  -dPDFFitPage=true ^
   "D:\PDF.pdf"

这将给您一个尺寸为1684x2384像素,分辨率为72dpi(如果未指定其他分辨率,则是所有Ghostscript图像输出的内置默认值)的PNG文件。如果需要不同的分辨率和纸张大小组合,请添加您想要的-rXXX-gNNNxMMM变量(而不是-sPAPERSIZE=a1),但务必保留-dPDFFitPage=true
如果只需要不同的分辨率,请保留-sPAPERSIZE=a1并添加-r100-r36-r200等变量。请注意,增加分辨率可能不会改善与PDF页面中嵌入的图像的默认72dpi输出相比的图像质量。但这肯定会增加文件大小...

非常感谢!它运行得很好。我没想到参数位置会有影响。 - desperate man

0
function pdf2png-mutool() {
    #: "mutool draw [options] file [pages]"
    # pages:  Comma separated list of page numbers and ranges (for example: 1,5,10-15,20-N), where
    #               the character N denotes the last page.  If no pages are specified, then all pages
    #               will be included.

    local i="$1"
    local out="${pdf2png_o:-${i:r}_%03d.png}"
    [[ "$out" == *.png ]] || out+='.png'

    command mutool draw -o "$out" -F png "$i" "${@[2,-1]}"
    #: '`-r 300` to set dpi'
}

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