Magick.net将PDF转换为图像“无法创建临时文件”:没有这样的文件或目录@ error / pdf.c / ReadPDFImage / 476“

时间:2017-11-11 14:44:33

标签: c# pdf imagick magick.net imagemagick.net

我正在尝试在控制台应用程序中使用Magick.net从PDF渲染图像,似乎无法解决这个问题。

在调用“MagickImageCollection.Read(byte [],设置)”时,我总是得到一个

  

“无法创建临时文件'':没有这样的文件或目录@   误差/ pdf.c / ReadPDFImage / 476"

异常。

我试过了:

  • 将x86和64位Ghostscript dll放在bin文件夹中。
  • 使用AnyCPU,x86,64版本的Magick.net以及GS版本
  • 的组合
  • 将MagickNET.SetGhostscriptDirectory设置为程序文件GS bin文件夹
  • 将MagickNET.SetTempDirectory设置为c:/ temp中的文件夹,并确认我的应用程序可以通过编程方式移动文件来访问。
  • 将MagickAnyCPU.CacheDirectory设置为c:/ temp
  • 中的文件夹

我不知道我可能做错了什么

    using (MagickImageCollection images = new MagickImageCollection())
    {
        // Add all the pages of the pdf file to the collection
        images.Read(file, settings);

        switch (orientation)
        {
            case Orientation.Horizontal:
                using (MagickImage image = (MagickImage)images.AppendHorizontally())
                {
                    using (MemoryStream ms = new MemoryStream())
                    {
                        image.Write(ms);

                        return ms.ToArray();
                    }

                }
            case Orientation.Vertical:
                using (MagickImage image = (MagickImage)images.AppendHorizontally())
                {
                    using (MemoryStream ms = new MemoryStream())
                    {
                        image.Write(ms);

                        return ms.ToArray();
                    }
                }
        }
    }

1 个答案:

答案 0 :(得分:1)

我终于设法克服了这个问题,我将错误的读取设置传递给MagickImageCollection.Read(byte [],设置)。

我告诉Magick用PNG格式阅读PDF而不是将结果写入PNG ......

MagickReadSettings settings = new MagickReadSettings();
settings.Format = MagickFormat.Png;

我感觉有点傻,但错误消息完全通过我。