GraphicsMagick,GhostScript 之 nodejs

2021-09-27 123

nodejs 老牌的为数不多的图像编辑库

出现问题

这个项目用到的是 TS,不搭配任何框架。因此选型时候就得看 Nodejs 的库(方便管理)

由于我一心想用 npm 去管理,因此只能靠 NPM 命令直接下载的软件包来使用。
后果:这次我下到的是旧版本 1.3.2, 32 bit

中途出现一个 BUG:

gm convert: Unable to read font (n019003l.pfb) [No such file or directory].

查找后发现是缺少 gc 字体包。Mac 和 Linux 都多解决方案,很成功,唯独 Windows 很少。

查了资料和两个版本的源码(源码详见最后面,开头有 version 版本号和 source 源码地址)
参考 GraphicsMagick笔记得知,他是通过注册表的路径找目录。解决方向就是 改掉相对路径变量或者用绝对路径替换

相对路径变量

怀疑是这几方面的问题:

  1. 源码找默认目录:逻辑识别有问题
  2. 32 bit 和 64 bit 有问题
  3. 源码找默认目录:路径转换有问题

下手难度大,遂放弃,直接跳过

绝对路径替换

解决方法:

  • 下载 字体包,将解压后的 fonts 放到一个位置
  • 到GraphicsMagick安装目录,找到 type-ghostscript.mgk ,打开
  • 搜索 n019003l (全部都要改 ,我的是有 2 处)

    @ghostscript_font_dir@ 改成现在 fonts 绝对路径

例如:

metrics="@ghostscript_font_dir@n019003l.afm"
glyphs="@ghostscript_font_dir@n019003l.pfb"

改成

metrics="C:\gs\fonts\n019003l.afm"
glyphs="C:\gs\fonts\n019003l.pfb"

以后可能的坑

Error: spawn ENOENT while using GM in node