【发布时间】:2020-08-21 09:32:40
【问题描述】:
我正在寻找将 PDF 文件转换为图像文件,我之前使用过 GhostScript 并且效果很好。由于某种原因,它已停止转换,现在抛出了我不太确定如何解决的错误。
using (Process p = new Process())
{
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.UseShellExecute = false;
p.StartInfo.Verb = "runas";
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.FileName = Server.MapPath("~/app/ghostscript/gswin64.exe");
p.StartInfo.Arguments = "-sDEVICE=tiff12nc -s -dBATCH -r200 -dNOPAUSE -sOutputFile=" + Server.MapPath("~/temp/temp_" + guid + "/output.tiff") + " " + Server.MapPath("~/temp/temp_" + guid + "/temp.pdf");
p.Start();
p.WaitForExit(10000);
}
一旦到达 p.Start() 行,它就会引发 2 个 GhostScript 错误;
- 无法加载 Ghostscript DLL
- 无法加载 DLL,LoadLibrary 错误代码 126
以前有人遇到过这个问题并设法解决了吗?
【问题讨论】:
-
您只是在启动一个应用程序,而不是加载任何 DLL。您是否尝试过从 shell 运行这个特定的命令行?从您尝试执行该代码的同一文件夹?
~/app/ghostscript很可能不在路径上,因此可执行文件找不到它需要的库。您需要做的就是将WorkingDirectory属性设置为~/app/ghostscript -
另一方面,从 Web 应用程序内部执行其他进程是一个非常的坏主意 - 它根本无法扩展并引入了严重的漏洞。必须为服务帐户授予对额外文件夹的访问权限,并且黑客可以轻松地注入使用服务帐户增加的权限运行的脚本代码。有人可以利用任何 Ghostscript 漏洞使用恶意 PDF 文档运行代码
-
该错误意味着 Ghostscript 可执行文件找不到它需要的 DLL。 Ghostscript(可执行文件)使用注册表中的一个条目来尝试查找 Ghostscript DLL。如果注册表或条目已损坏,那么我相信 Windows 会搜索路径。我建议的第一件事是检查 Ghostscript 安装目录以查看 DLL 是否已被删除。然后您可以手动检查注册表; HKEY_LOCAL_MACHINE\SOFTWARE\GPL GhostScript\x.xx 然后查找 GS_DLL 密钥并检查其值,或者您可以重新安装 Ghostscript。
-
谢谢,DLL的问题已经解决了
标签: c# pdf ghostscript