Ghostscript合并PS和PDF文件时指定页重复插入问题排查
Ghostscript 按指定页码合并多文件失败解决方案
错误原因
你遇到的问题是Ghostscript的参数生效规则导致的:9.50版本之前的Ghostscript中,-sPageList是全局参数,整条命令中仅首次设置的值生效,后续输入新文件时重新设置的-sPageList不会被读取,因此第二次插入ghi-21.ps时仍然使用了首次设置的1-3页规则。
解决方案
方案1:适配9.50及以上版本Ghostscript
9.50及以上版本支持对单个输入文件指定页码范围,使用-dFirstPage和-dLastPage参数,将参数放在对应需要处理的输入文件之前即可,全页输入的文件不需要额外加页码参数。
Windows环境下正确命令如下(^为命令行换行符,可删除后整行输入):
gswin32c -dNOPAUSE -dSAFER -dBATCH -sOutputFile=out.pdf -sDEVICE=pdfwrite ^ -dFirstPage=1 -dLastPage=3 ghi-21.ps ^ bf1ypage4-8.pdf ^ -dFirstPage=4 -dLastPage=5 ghi-21.ps ^ bfpage11-37.pdf
方案2:适配9.50以下版本Ghostscript
低版本不支持单文件单独指定页码,可先拆分需要分页的文件为临时PDF,再统一合并:
- 提取ghi-21.ps的1-3页为临时文件temp1.pdf
gswin32c -dNOPAUSE -dSAFER -dBATCH -sOutputFile=temp1.pdf -sDEVICE=pdfwrite -sPageList=1-3 ghi-21.ps
- 提取ghi-21.ps的4-5页为临时文件temp2.pdf
gswin32c -dNOPAUSE -dSAFER -dBATCH -sOutputFile=temp2.pdf -sDEVICE=pdfwrite -sPageList=4-5 ghi-21.ps
- 合并所有文件生成最终out.pdf
gswin32c -dNOPAUSE -dSAFER -dBATCH -sOutputFile=out.pdf -sDEVICE=pdfwrite temp1.pdf bf1ypage4-8.pdf temp2.pdf bfpage11-37.pdf
内容的提问来源于stack exchange,提问作者Vipul Bhatt
相关产品推荐
相关产品推荐

