Pdf2htmlEX 常见错误 "Cannot load font"



从命令提示符运行pdf2htmlEX.exe Windows二进制文件按预期工作。虽然在包装器(在我的例子中是.Net(中运行pdf2htmlEX Windows二进制文件,我收到了如下所示的错误。

__tmp_font1.ttf is not in a known format (or uses features of that format fontfo
rge does not support, or is so badly corrupted as to be unreadable)
Cannot load font C:UsersadminAppDataLocalTemppdf2htmlEX-5RLDCX/__tmp_fo
nt1.ttf

这是一个非常模棱两可的错误,在使用Windows二进制版本时,用户似乎很常见。

显然,Lu Wang无法为Windows用户提供解决方案,因为所有相关的帖子都被标记为"信息不足"。不幸的是,pdf2htmlEX 项目也被存档,无法添加新评论,所以我在这里添加此信息,希望将来可以帮助其他人。

在我的方案中,库是通过使用 System.Diagnostics.Process 的 ASP.Net 包装器方法调用的,以将上传的文件转换为 HTML 版本。Pdf2htmlEX库可以在命令提示符下正常工作,并且由于某种原因,在我的开发环境中也可以完美运行,但在生产环境中却不能正常工作(两者都是Windows Server 2012R2(。

我的第一个假设是正确的,是存在权限问题。Pdf2htmlEX在内部使用FontForge来处理字体,默认情况下,其中一个或两个都使用Windows Temp目录来存储用于创建HTML和/或其他文件的资源文件。而且,我"相信"虽然未经证实,但它也可能使用活动用户的%USERPROFILE%AppDataLocalTemp文件夹......

从命令提示符运行测试命令时,您是在用户上下文下操作,并且您的用户可以执行的所有操作,Pdf2htmlEX 都可以执行。所以一切都按预期工作。

在服务器环境中,进程在应用程序池标识(一种具有有限权限的特殊 IIS 用户类型(下运行。在这里它对我来说失败了。虽然,我会看到在Windows Temp文件夹中创建的文件夹和文件,但Pdf2HtmlEX无法打开它们以在其他地方创建最终文件。

解决方案(针对您的具体情况可能还有其他解决方案( 就我而言,添加新的系统用户,将该用户添加到Users组,然后将 IIS 工作进程设置为该帐户解决了该问题。我相信的原因是,Users组对Windows Temp目录具有读/写访问权限,以及完成Pdf2htmlEX所需的系统的其他必要区域。

最新更新