显示从字节数组到 c# winforms 的 pdf
Display pdf from byte array to c# winforms
我做了一个加密和解密pdf文件的程序。我希望除了我以外的任何人都可以锁定它们,并且只能通过我的程序打开它们。在我加密 pdf 之后,我将它放在一个字节数组中。
有没有办法在不将文件部署到驱动器的情况下将pdf文件的解密字节数组显示到表单?
假设您有一些名为 GetDecrypedBytes()
的函数,其签名为:
public byte[] GetDecryptedBytes();
你如何 encrypt/decrypt 事情超出了手头问题的范围,我假设你知道如何做到这一点。
然后你可以编写一个函数,例如:
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
函数来更改字节的十六进制表示形式的显示方式。
您需要的是一个可以从字节数组加载 PDF 的 WinForms PDF 查看器组件。使用 Gnostice PDFOne .NET 的 PDF 查看器,代码如下:
PDFViewer PDFViewer1;
byte[] baPDF; // load the decrypted PDF to this byte array
...
PDFViewer1.LoadDocument(baPDF);
注意:我在这家 Gnostice 公司工作。任何其他 PDF 查看器组件,如果它可以从字节数组加载,都可以使用。
解密后的PDF无需存盘
我做了一个加密和解密pdf文件的程序。我希望除了我以外的任何人都可以锁定它们,并且只能通过我的程序打开它们。在我加密 pdf 之后,我将它放在一个字节数组中。 有没有办法在不将文件部署到驱动器的情况下将pdf文件的解密字节数组显示到表单?
假设您有一些名为 GetDecrypedBytes()
的函数,其签名为:
public byte[] GetDecryptedBytes();
你如何 encrypt/decrypt 事情超出了手头问题的范围,我假设你知道如何做到这一点。
然后你可以编写一个函数,例如:
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
函数来更改字节的十六进制表示形式的显示方式。
您需要的是一个可以从字节数组加载 PDF 的 WinForms PDF 查看器组件。使用 Gnostice PDFOne .NET 的 PDF 查看器,代码如下:
PDFViewer PDFViewer1;
byte[] baPDF; // load the decrypted PDF to this byte array
...
PDFViewer1.LoadDocument(baPDF);
注意:我在这家 Gnostice 公司工作。任何其他 PDF 查看器组件,如果它可以从字节数组加载,都可以使用。
解密后的PDF无需存盘