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

时间:2015-12-07 17:59:27

标签: c# winforms pdf bytearray filestream

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

2 个答案:

答案 0 :(得分:1)

您需要的是一个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

注意:我为这家Gnostice公司工作。任何其他PDF查看器组件(如果它可以从字节数组加载)都可以工作。

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

答案 1 :(得分:0)

假设您有一些名为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();
}

这会将字节变成可以在某处显示的文本。

然后你可以在你的用户界面上做一些事情,例如:

myTextBox.Text = ByteArrayToString(GetDecryptedBytes());

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