GhostScript unrecoverable error: undefined file name

GhostScript unrecoverable error: undefined file name

试图找出如何使用 Ghost 脚本获取 memoryStream 和 return 图像。这是代码以及执行 rasterizer.Open 后出现的错误:

 public static System.Drawing.Image PDFToImage(MemoryStream inputMS)
    {
        GhostscriptRasterizer rasterizer = null;
        GhostscriptVersionInfo version = null;
        if (Environment.Is64BitProcess)
           version = new GhostscriptVersionInfo(
                new Version(0, 0, 0), @"C:\Program Files\gs\gs9.20\bin\gswin64.exe",
                string.Empty, GhostscriptLicense.GPL);
        else
            version = new GhostscriptVersionInfo( 
                new Version(0, 0, 0), @"C:\Program Files (x86)\gs\gs9.20\bin\gswin32.exe",
                string.Empty, GhostscriptLicense.GPL);

        int dpi = 96;
        System.Drawing.Image img = null;

        using (rasterizer = new GhostscriptRasterizer())
        {
            rasterizer.Open(inputMS, version, true);

            for (int i = 1; i <= rasterizer.PageCount; i++)
            {

                using (MemoryStream ms = new MemoryStream())
                {
                    img = rasterizer.GetPage(dpi, dpi, i);
                    img.Save(ms, ImageFormat.Jpeg);
                    ms.Close();
                }

            }
            rasterizer.Close();
        }
        return img;
    }

好吧,Ghostscript 告诉你它无法打开文件 '/config:C:\Users\Sean.McNary\ApexRemington\.vs\config\applicationhosts.config' 因为(这并不完全不足为奇如此乱码的文件名),它找不到文件。

我假设您正在使用某种围绕 Ghostscript 的包装器(这是一个用 C 编写的 DLL),因为您显然使用的是 C#,如果您要说明您在那里使用的是什么,将会有所帮助。

它 'looks like' 无论您使用什么包装器,它都希望得到一个输入文件名,然后将其简单地传递给 Ghostscript。虽然可以将数据从内存传递到 Ghostscript,并在内存中返回渲染结果,但您应该知道,如果输入是 PDF 文件,则您不会保存任何内容,因为 Ghostscript 会将整个输入假脱机到处理之前的临时文件你必须四处寻找一个PDF文件,所以你需要随机访问,因此它被写成一个文件。

您将不得不调试您的包装器并查看它在做什么。

问题是您指向的是 exe 文件而不是 dll。当您将 'gswin64.exe' 替换为 'gsdll64.dll'(32 位版本相同)时,您的代码应该可以工作。