0

我正在使用 File.WriteAllbytes 将二进制数据转换为 pdf/RTF/Doc/Docx 等,除了 pdf 我可以通过打开查看的其他文件。但是在从 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);

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

4

1 回答 1

0

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

如果您没有阅读全部数据,您将全部或部分遗漏交叉引用表,这需要很多时间才能恢复。

其他文件格式似乎可以正确读取的一个原因是文件大小可能低于缓冲区大小并且您的 PDF 较长。

于 2013-11-06T15:28:47.843 回答