从字节数组预览 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 等)也可能影响解决方案?如果是这样我会更新这个答案。
我将几个 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 等)也可能影响解决方案?如果是这样我会更新这个答案。