【问题标题】:PDF to Image Conversion using Ghostscript使用 Ghostscript 将 PDF 转换为图像
【发布时间】: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 错误;

  1. 无法加载 Ghostscript DLL
  2. 无法加载 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


【解决方案1】:

顺便说一句,参数中的裸“-s”可能是以前存在的其他东西遗留下来的。我有点惊讶它没有抛出错误,但你很幸运——它所做的一切都是将一个零长度的字符串和空名称放入 systemdict。 这可以通过然后执行 PS 序列来看到:systemdict() cvn get 它返回一个长度为 0 的 stringtype 对象。 没有序列抛出的裸 -s 参数:错误:/undefined in --get--

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-14
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    相关资源
    最近更新 更多