从字节数组预览PDF而不向本地计算机写入字节

时间:2017-08-30 17:18:30

标签: c# wpf pdf wpf-controls byte

我将一些PDF加载到Byte []数组列表中。 我想在WPF表单中显示这些PDF的第一页。如果可能,图像控制就可以了。 但是,我不想在本地计算机上将字节写入PDF文件。

问题: 如何获取PDF的Byte [](已在内存中),并在不将PDF写入本地计算机的情况下在图像控件中显示PDF的第一页?

1 个答案:

答案 0 :(得分:2)

您不必将PDF写入磁盘,您可以将其保存在内存中。但是,您需要将PDF完全加载为内存中的对象。

以下是一篇关于如何使用C#转换PDF图像的Microsoft文章,我认为这对您来说是一个很好的起点。以下示例来自以下链接,根据您的要求,您将跳过for循环并转换第一页。注意,在实例化PdfImageConverter对象时,有多个重载,一个接收流,这是你的byte []。

PdfImageConverter pdfConverter = new PdfImageConverter("sample.pdf"); 

pdfConverter.DPI = 96; 

for (int i = 0; i < pdfConverter.PageCount; i++) 
{    
    Image pageImage = pdfConverter.PageToImage(i, 500, 800); 

    pageImage.Save("Page " + i + ".jpg", ImageFormat.Jpeg); 
}

https://code.msdn.microsoft.com/windowsdesktop/How-to-Convert-PDF-to-84ac3273

代码项目有一个从PDF(VB.NET)创建缩略图的答案

https://www.codeproject.com/Articles/5887/Generate-Thumbnail-Images-from-PDF-Documents

它是用VB.NET编写的,但C#的过程也是一样的。

还有另一个关于将PDF转换为适用于您的图像的问题:

Save pdf to jpeg using c#

您是否有可能影响解决方案的任何类型的要求(库,api等)?如果是这样,我会更新这个答案。