使用C#中的File.WriteAllBytes打开从二进制数据转换的pdf文件时出错

时间:2013-11-06 14:44:48

标签: c#

我正在使用File.WriteAllbytes将二进制数据转换为pdf / RTF / Doc / Docx等,除了pdf其他文件我可以通过open查看。但是从Windows资源管理器打开pdf文件时,我收到的错误是“打开此文档时出错。此文件已损坏且无法打开。” 我正在使用以下代码。

if (!dbReader.IsDBNull(o))
   bytedata = (byte[])dbReader["resume"];
  if (!dbReader.IsDBNull(1))
   extension = dbReader.GetString(1);

  try
  {
   var filePath = "C:\Data\a.pdf";
   File.WriteAllBytes(filePath, bytedata);

你能告诉我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

有各种各样的事情可以导致你看到的错误。您最好的选择是查看写入的字节并将其与实际数据进行比较。首先检查应该是“每个字节中的字节数是否相同?”然后担心内容。 PDF是一种非常基于偏移的格式,如果注入或遗漏了额外的数据,你将损坏文件(例如,更改行终止规则,这几乎肯定是这里发生了什么)。

如果您没有阅读整个数据,那么您将全部或部分地遗漏交叉引用表,这需要花费很多时间来恢复。

其他文件格式似乎正确读取的一个原因是文件大小可能在缓冲区大小之下,而且PDF更长。