jpeg2ps生成PostScript文件经Adobe Distiller转PDF出现空白问题
问题产生原因
- Adobe Distiller对PostScript语法、元数据的校验标准远严于GhostScript,
jpeg2ps默认生成的是极简封装的PostScript文件,仅包含JPEG流解码渲染的核心逻辑,缺失Distiller要求的标准页面元数据声明,导致Distiller无法识别图像尺寸、页面边界,直接跳过渲染步骤输出空白页。 - 部分旧版本
jpeg2ps生成的ASCII85编码封装逻辑不符合Adobe官方规范,Distiller校验内嵌流时判定为无效流,不会触发解码绘制流程,而GhostScript做了大量兼容处理,可自动识别非标准封装的JPEG流完成渲染。
可行解决方案
- 重新生成PostScript时为
jpeg2ps增加标准元数据生成参数,示例命令:jpeg2ps -p <页面尺寸> -c <输入JPEG路径> > output.ps,其中-c参数会强制生成符合Adobe规范的EPS头与BoundingBox声明,-p可指定匹配JPEG尺寸的页面规格(如a4、letter等,也可自定义尺寸)。 - 若无法重新生成PS文件,可手动编辑现有PostScript文件,在文件开头补充两行声明:
其中<实际宽度>、<实际高度>替换为原JPEG图片对应72dpi下的点数值(和像素值一致即可)。%%BoundingBox: 0 0 <实际宽度> <实际高度> << /PageSize [ <实际宽度> <实际高度> ] >> setpagedevice - 用GhostScript做格式中转,输出符合Distiller规范的PostScript文件,执行命令:
gs -sDEVICE=ps2write -sOutputFile=fixed.ps -dNOPAUSE -dBATCH 原文件路径.ps
输出的fixed.ps可直接用Adobe Distiller正常转换为PDF。 - 绕开
jpeg2ps方案,直接将原JPEG文件通过Adobe Acrobat、InDesign等工具直接插入PDF,或用Adobe官方工具生成PS文件,从根源避免兼容问题。
内容的提问来源于stack exchange,提问作者F. Pantigny
相关产品推荐
相关产品推荐

