【问题标题】:Out of memory exception reading a PDF file with Image.fromPath使用 Image.fromPath 读取 PDF 文件时出现内存不足异常
【发布时间】:2016-01-10 17:23:21
【问题描述】:

我正在尝试从本地路径读入 System.Drawing.Image 结构的 PDF 文件。

我使用了Image.fromPath(string fileName) - 它抛出了一个异常:

内存不足。

我阅读了文档,我明白这个异常可以在两种情况之一中引发 -

该文件没有有效的图像格式。

-或-

GDI+ 不支持文件的像素格式。

我的问题是 - 它是哪一个,尽管如此,我如何阅读图像?

注意:最终,图像会变成System.IO.Stream - 如果您可以将 PDF 转换成这种结构,对我也有同样的帮助。

【问题讨论】:

  • 答案就在您的链接中:PDF 不在支持的格式列表中!阅读 PDF 将需要一个外部库(嘘,我们不能在这里谈论它..)如何显示 PDF 是 afaik 未回答的问题之一 :-(
  • @TaW 那么您将如何将 PDF 读入图像?可能吗?如果不是,你能把它转换成System.IO.Stream吗?
  • 嗯,这取决于你想要实现什么;任何文件都可以读入(二进制)流,但这并不意味着任何人都可以将其转换为图像; pdf根本不是..
  • @TaW 非常感谢,您帮助我自己找到了解决方案,这实际上将System.Drawing 排除在外。 :)

标签: c# pdf drawing


【解决方案1】:

这个问题之前回答过,here.

我想做的是从本地路径获取流,为此我什至不必使用 System.Drawing - 它甚至不包括图像中的 PDF,而是 System.IO -

内存流可以由文件中的所有字节构成。我所要做的就是提供本地路径,从文件中读取数据,并将其作为内存流返回,如下所示:

var pdfContent = new MemoryStream(System.IO.File.ReadAllBytes(imageLocation));
pdfContent.Position = 0; // ensuring the stream is reading from the start.
return pdfContent;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    相关资源
    最近更新 更多