显示从字节数组到c#winforms的pdf

本文关键字:c#winforms pdf 数组 字节 字节数 显示 | 更新日期: 2023-09-27 18:26:10

我制作了一个加密和解密pdf文件的程序。我希望除了我之外的任何人都能锁定它们,并且只通过我的程序打开它们。在我加密pdf之后,我把它放在一个字节数组中。是否可以在不将文件部署到驱动器的情况下将pdf文件的解密字节数组显示到表单中?

显示从字节数组到c#winforms的pdf

您需要的是一个WinForms PDF查看器组件,它可以从字节数组加载PDF。使用Gnostice PDFOne.NET的PDF查看器,以下是代码:

PDFViewer PDFViewer1;
byte[] baPDF; // load the decrypted PDF to this byte array
...
PDFViewer1.LoadDocument(baPDF);

http://www.gnostice.com/docs/pdfone_dot_net/Gnostice_PDFOne_Windows_PDFViewer_PDFViewer_LoadDocument@byte[].html

注:我在诺斯替公司工作。任何其他PDF查看器组件,如果可以从字节数组加载,都可以工作。

无需将解密后的PDF保存到磁盘。

假设您有一个名为GetDecrypedBytes()的函数,它具有以下签名:

public byte[] GetDecryptedBytes();

如何加密/解密不在当前问题的范围内,我想你知道如何做到这一点

然后你可以写一个函数,比如:

public static string ByteArrayToString(byte[] bytes)
{
  StringBuilder hex = new StringBuilder(bytes.Length * 2);
  foreach (byte b in bytes)
    hex.AppendFormat("{0:x2}", b);
  return hex.ToString();
}

这将把字节变成可以显示在某个地方的文本。

然后你可以在你的UI上做一些事情,比如:

myTextBox.Text = ByteArrayToString(GetDecryptedBytes());

显然,可以调整ByteArrayToString函数来改变字节的十六进制表示的显示方式。