【问题标题】:Previewing PDF from Byte Array Without Writing Bytes to the Local Machine从字节数组中预览 PDF 而不将字节写入本地计算机
【发布时间】:2018-02-08 12:21:06
【问题描述】:

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

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

【问题讨论】:

    标签: c# wpf pdf wpf-controls byte


    【解决方案1】:

    您不必将 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 问题,这也适用于您:

    Save pdf to jpeg using c#

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-27
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      • 2014-04-10
      相关资源
      最近更新 更多