ABCPDF 字体访问 Windows 2012

ABCPDF font access Windows 2012

问题:将稳定的系统从 Win 2008 迁移到 Win 2012 后,ABCPDF 无法正确设置字体子集。我们怀疑存在 Windows 权限问题,但不知道解决什么或如何解决。

背景:多年来,我们在刚刚从 Win 2008 R2 迁移到 Win 2012 R2 Datacenter 的数据中心上享受了 ABCPDF 的使用。我们使用 ActiveX DLL - 是的,我们想替换它们,但现在不在范围之内。当前的 ABCPDF 级别是 ABCPDF 8.1。 dll 的 运行 在 COM 管理器下,并具有特定的 运行-as 标识集,以避免在 运行 作为网络 Svc 或系统帐户时遇到的常见访问问题。

我们的应用程序使用自定义字体文件,这意味着我们不依赖 windows 下安装的字体。我们使用 Windows API 调用

AddFontResourceEx(font_path, FR_PRIVATE, &O0)

将字体加载到内存和 运行 文本测量例程。这被证明是有效的,因为我们使用 select 字体的示例字符生成了一个小位图,并且我们看到的字形是正确的。结论是字体通过 Windows API 加载成功。这很重要,因为它告诉我们字体在预期的位置,并且 运行-as 用户帐户可以访问它们。

与此同时,我们通过

将相同的字体提供给 ABCPDF

oDoc.AddFont(font_path)

但生成的 PDF 不包含特定字体的字形。在 Acrobat pro 中检查显示正在使用 Times New Roman。

在旧的 Win2008 安装上一切正常。自从迁移到 Win 2012 R2 后,我们遇到了这个问题。

结论:DLL代码可以访问Win下的字体API,但是ABCPDF不能。怀疑 Windows 2012 中的某些权限发生了变化。求助?

当我们安装 ABCPDF 时,它是作为非管理员用户安装的。解决方案是卸载然后按照 Websupergoo 网站上的建议进行操作,即使用 运行-As Administrator.

安装