You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac环境下PDF转EPS如何避免栅格化且不替换原有字体

PDF转EPS无损转换方案(无栅格化、保留原始字体)

Inkscape字体替换问题修复

旧转换命令出现Times New Roman被替换为无衬线字体的问题,核心原因有两个:一是Inkscape默认内置PDF导入器的字体映射逻辑对matplotlib嵌入的字体识别兼容性差;二是Mac端Inkscape默认不会全局扫描全路径系统字体,缺失对应字重时会自动兜底替换为无衬线字体。
使用修正后的命令即可解决:

inkscape input.pdf --pdf-poppler --export-filename=output.eps

如果执行后仍存在字体替换,按两点排查即可:

  • 将Times New Roman全套字重(常规、斜体、粗体、粗斜体)放到~/Library/Fonts/用户字体目录,不要仅存放在系统根目录的字体文件夹,重启Inkscape后再执行转换
  • 如果不需要保留EPS内文本的可编辑性,可以在命令末尾添加--export-text-to-path参数,将所有文字转为矢量路径,从根源杜绝字体替换问题,不会损失矢量精度

Ghostscript栅格化问题修复

旧Ghostscript命令输出内容栅格化,核心是两处参数错误:一是多余的-dNOCACHE参数会干扰新版本Ghostscript的字体、路径渲染逻辑;二是eps2write设备默认会将所有带透明属性的元素直接栅格化,以适配老版本EPS的格式规范。
使用修正后的命令即可输出全矢量、字体完整嵌入的EPS文件:

gs -q -dNOPAUSE -dBATCH -dSAFER -dEPSCrop -dCompatibilityLevel=1.4 -dAutoRotatePages=/None -dHaveTrueTypes=true -dEmbedAllFonts=true -dSubsetFonts=false -sDEVICE=eps2write -sOutputFile=output.eps input.pdf

如果PDF包含透明效果(matplotlib默认生成的科研图一般无复杂透明),在命令中添加-dNOTRANSPARENCY参数即可,程序会自动将透明混合转换为EPS兼容的矢量填充叠加,不会触发整页栅格。

matplotlib源文件的零损耗最优方案

如果待转换的PDF是通过matplotlib生成的,完全不需要走二次转换流程,直接在导出环节输出EPS即可从根源避免所有转换损耗,导出参考参数如下:

plt.savefig('output.eps', 
            format='eps',
            bbox_inches='tight',
            fonttype=42, # 以Type42格式嵌入TrueType字体,无字体替换问题
            dpi=1200) # 仅对文件内嵌入的位图元素生效,矢量文字、路径不受影响

内容的提问来源于stack exchange,提问作者Wolpertinger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 16:12:20