我将一些PDF加载到Byte []数组列表中。 我想在WPF表单中显示这些PDF的第一页。如果可能,图像控制就可以了。 但是,我不想在本地计算机上将字节写入PDF文件。
问题: 如何获取PDF的Byte [](已在内存中),并在不将PDF写入本地计算机的情况下在图像控件中显示PDF的第一页?
答案 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转换为适用于您的图像的问题:
您是否有可能影响解决方案的任何类型的要求(库,api等)?如果是这样,我会更新这个答案。