显示从字节数组到c#winforms的pdf
本文关键字:c#winforms pdf 数组 字节 字节数 显示 | 更新日期: 2023-09-27 18:26:10
我制作了一个加密和解密pdf文件的程序。我希望除了我之外的任何人都能锁定它们,并且只通过我的程序打开它们。在我加密pdf之后,我把它放在一个字节数组中。是否可以在不将文件部署到驱动器的情况下将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
函数来改变字节的十六进制表示的显示方式。