【发布时间】:2018-02-08 12:21:06
【问题描述】:
我将一些 PDF 加载到 Byte[] 数组列表中。 我想在 WPF 表单中显示这些 PDF 的第一页。如果可能的话,图像控件会很好。 但是,我不想将字节写入本地机器上的 PDF 文件。
问题: 如何获取 PDF 的 Byte[](已经在内存中),并在图像控件中显示 PDF 的第一页而不将 PDF 写入本地机器?
【问题讨论】:
标签: c# wpf pdf wpf-controls byte
我将一些 PDF 加载到 Byte[] 数组列表中。 我想在 WPF 表单中显示这些 PDF 的第一页。如果可能的话,图像控件会很好。 但是,我不想将字节写入本地机器上的 PDF 文件。
问题: 如何获取 PDF 的 Byte[](已经在内存中),并在图像控件中显示 PDF 的第一页而不将 PDF 写入本地机器?
【问题讨论】:
标签: c# wpf pdf wpf-controls byte
您不必将 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 转换为图像的 SO 问题,这也适用于您:
您是否有任何类型的需求(库、API 等)也可能影响解决方案?如果是这样,我会更新这个答案。
【讨论】: