经Ghostscript压缩的带内部链接PDF在OSX预览中运行缓慢如何解决
解决方案
问题核心原因
Ghostscript默认使用/prepress配置压缩PDF时,会针对印刷场景重排PDF内部对象结构,丢弃屏幕交互所需的跳转元数据,同时将命名式内部跳转目标转换为硬编码的页面坐标,OSX预览应用解析这类结构的PDF时会触发全文件遍历逻辑,导致卡顿。
可直接使用的优化后压缩命令
gs -sDEVICE=pdfwrite \ -dCompatibilityLevel=1.6 \ -dPDFSETTINGS=/ebook \ -dNOPAUSE -dQUIET -dBATCH \ -dPreserveNamedDests=true \ -dPrinted=false \ -dCompressFonts=true \ -dDetectDuplicateImages=true \ -sOutputFile=${outputFile} ${inputFile}
参数调整说明
- 替换原
-dPDFSETTINGS=/prepress为/ebook:印刷级配置会保留大量印刷相关冗余元数据,还会重排页面对象结构,拖慢预览解析速度,/ebook配置的压缩率与/prepress差异极小,更适配屏幕阅读场景 - 新增
-dPreserveNamedDests=true:保留PDF内部的命名跳转目标,不会将链接转换为硬编码坐标,避免OSX预览解析跳转时触发全文件遍历 - 新增
-dPrinted=false:关闭打印优化逻辑,保留屏幕交互所需的元数据,匹配OSX预览的解析逻辑 - 新增
-dDetectDuplicateImages=true:自动识别合并重复图片,在不降低画质的前提下进一步缩小文件体积 - 升级
-dCompatibilityLevel=1.6:OSX预览对1.4版本的扩展PDF结构存在已知解析bug,1.6版本的标准结构解析流畅度更高
特殊场景补充配置
如果你的PDF包含中日韩等CJK字体,压缩后仍存在卡顿,可在命令中额外添加-dSubsetFonts=false参数,避免字体子集化后字体索引与跳转目标冲突导致的预览异常。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

