1

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

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

“无法创建临时文件'':没有这样的文件或目录@error/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();
                    }
                }
        }
    }
4

1 回答 1

1

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

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

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

我觉得有点傻,但错误信息完全通过我关闭。

于 2017-11-13T19:06:48.443 回答