Преобразовать байт [] в PDF - PullRequest
0 голосов
/ 16 марта 2010

С помощью этого вопроса C # 4.0: преобразовать pdf в байт [] и наоборот я смог преобразовать байт [] в PDF. Длина байтового массива составляет 25990 ок. Когда я пытаюсь открыть PDF, он говорит, что файл поврежден. В чем может быть причина?

Я попробовал BinaryWriter, но он создает PDF размером 0 КБ.

Это ответ от веб-службы

Пример кода

WebResponse resp = request.GetResponse();
var buffer = new byte[4096];
Stream responseStream = resp.GetResponseStream();
{
  int count;
  do
  {
    count = responseStream.Read(buffer, 0, buffer.Length);
    memoryStream.Write(buffer, 0, responseStream.Read(buffer, 0, buffer.Length));
  } while (count != 0);
}
resp.Close();
byte[] memoryBuffer = memoryStream.ToArray();
System.IO.File.WriteAllBytes(@"E:\sample1.pdf", memoryBuffer);
int s = memoryBuffer.Length;

BinaryWriter binaryWriter = new BinaryWriter(File.Open(@"E:\sample2.pdf", FileMode.Create));
binaryWriter.Write(memoryBuffer);

Ответы [ 2 ]

9 голосов
/ 16 марта 2010

Вы читаете дважды из потока, но записываете только один буфер. Изменить это:

count = responseStream.Read(buffer, 0, buffer.Length);
memoryStream.Write(buffer, 0, responseStream.Read(buffer, 0, buffer.Length));

К этому:

count = responseStream.Read(buffer, 0, buffer.Length);
memoryStream.Write(buffer, 0, count);
2 голосов
/ 16 марта 2010

Кажется, вы пропустили несколько байтов, потому что у вас есть одно ненужное чтение. Попробуйте это:

  do
  {
    count = responseStream.Read(buffer, 0, buffer.Length);
    memoryStream.Write(buffer, 0, count);
  } while (count != 0);
...