从字节数组预览 PDF 而无需将字节写入本地机器

Previewing PDF from Byte Array Without Writing Bytes to the Local Machine

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

问题: 如何获取 PDF 的 Byte[](已在内存中),并在图像控件中显示 PDF 的第一页,而无需将 PDF 写入本地机器?

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

这是一篇关于如何使用 C# 转换 PDF 图像的 Microsoft 文章,我认为这对您来说是一个很好的起点。以下示例来自 link,根据您的要求,您可以跳过 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 转换为图像的 SO 问题也适用于您:

Save pdf to jpeg using c#

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