如何让GhostScript在调整页面尺寸时保持页面方向不变?
解决GhostScript中-dPDFFitPage导致页面旋转的问题
问题背景
处理学生作业PDF时,需要通过GhostScript统一页面尺寸(适配Xournal++编辑需求)并压缩文件,但使用-dPDFFitPage时部分页面被意外旋转,添加-dAutoRotatePages=/None也无法解决。
解决方案
核心是通过-dFIXEDMEDIA强制固定页面尺寸,结合-dAutoRotatePages=/None禁用自动旋转,让-dPDFFitPage仅做尺寸适配而非旋转页面。
方案1:固定宽度为1920点(保持A4比例)
使用以下命令,明确指定页面宽高并强制媒体尺寸:
gs -sDEVICE=pdfwrite \ -dDEVICEWIDTHPOINTS=1920 \ -dDEVICEHEIGHTPOINTS=2715 \ -dFIXEDMEDIA \ -dPDFFitPage \ -dAutoRotatePages=/None \ -dCompatibilityLevel=1.4 \ -dDownsampleColorImages=true \ -dColorImageResolution=150 \ -dNOPAUSE -dQUIET -dBATCH \ -sOutputFile=../output.pdf input.pdf
参数说明:
-dFIXEDMEDIA:强制使用指定的页面尺寸,禁止GhostScript根据内容自动调整媒体大小-dDEVICEWIDTHPOINTS=1920&-dDEVICEHEIGHTPOINTS=2715:按A4宽高比例(210:297)计算的固定尺寸,确保内容缩放时比例正确-dAutoRotatePages=/None:彻底禁用页面自动旋转逻辑-dPDFFitPage:将内容适配到指定的固定页面尺寸,仅缩放不旋转
方案2:直接使用A4纸张尺寸
如果目标是统一为标准A4尺寸,可简化为:
gs -sDEVICE=pdfwrite \ -sPAPERSIZE=a4 \ -dFIXEDMEDIA \ -dPDFFitPage \ -dAutoRotatePages=/None \ -dCompatibilityLevel=1.4 \ -dDownsampleColorImages=true \ -dColorImageResolution=150 \ -dNOPAUSE -dQUIET -dBATCH \ -sOutputFile=../output.pdf input.pdf
原命令问题分析
之前的命令同时使用-sPAPERSIZE=a4和-dDEVICEWIDTHPOINTS=1920,导致GhostScript对媒体尺寸的判断冲突;且未添加-dFIXEDMEDIA,程序仍会根据内容尝试调整页面方向,最终触发意外旋转。
内容的提问来源于stack exchange,提问作者Photon
相关产品推荐
相关产品推荐

