这是一个非常模糊的错误,并且在使用 Windows 二进制版本时似乎在用户中很常见。
显然 Lu Wang 无法为 Windows 用户提供解决方案,因为所有相关的帖子都被标记为“信息不足”。不幸的是,pdf2htmlEX项目也被归档了,不能添加新的评论,所以我在这里添加这些信息,希望这可能对以后的其他人有所帮助。
在我的场景中,该库是通过 ASP.Net 包装器方法调用的,该方法使用 System.Diagnostics.Process 将上传的文件转换为 HTML 版本。Pdf2htmlEX 库可以在命令提示符下正常运行,并且由于某种原因,它也可以在我的开发环境中完美运行,但不能在生产环境中运行(两者都是 Windows Server 2012R2)。
我的第一个假设,而且是正确的,是存在权限问题。Pdf2htmlEX 在内部使用 FontForge 来处理字体,默认情况下,其中一个或两个都使用 Windows Temp 目录来存储用于创建 HTML 和/或其他文件的资源文件。而且,我“相信”虽然没有得到证实,但它也可能使用活动用户的%USERPROFILE%\AppData\Local\Temp
文件夹......
当从命令提示符运行测试命令时,您是在您的用户上下文中操作,并且您的用户可以做的所有事情,Pdf2htmlEX 都可以做。所以一切都按预期工作。
在服务器环境中,进程在 ApplicationPoolIdentity 下运行,这是一种具有有限权限的特殊 IIS 用户类型。这对我来说失败了。虽然,我会看到在 Windows Temp 文件夹中创建的文件夹和文件,但 Pdf2HtmlEX 无法打开它们以在其他地方创建最终文件。
解决方案:(对于您的个人情况,可能还有其他解决方案)在我的情况下,添加一个新的系统用户,将该用户添加到Users
组中,然后将 IIS 工作进程设置为该帐户解决了该问题。我相信的原因是该Users
组具有对 Windows Temp 目录的读/写访问权限,以及 Pdf2htmlEX 完成所需的系统的其他可能区域。