显示从字节数组到 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);

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

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

解密后的PDF无需存盘