Подтвердить что ты не робот

Массив байтов в pdf

Я пытаюсь преобразовать содержимое файла, хранящегося в столбце sql, в pdf.

Я использую следующий фрагмент кода:

byte[] bytes;
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, fileContent);
bytes = ms.ToArray();
System.IO.File.WriteAllBytes("hello.pdf", bytes);

Сгенерированный pdf файл является коррумпированным в том смысле, что при открытии pdf в блокноте ++ я вижу некоторый заголовок нежелательной почты (это то же самое независимо от fileContent). Заголовок нежелательной почты - NUL SOH NUL NUL NUL....

4b9b3361

Ответ 1

Вы не должны использовать BinaryFormatter для этого - для сериализации типов .Net для двоичного файла, чтобы их можно было прочитать снова как .Net-типы.

Если он хранится в базе данных, надеюсь, как varbinary - тогда все, что вам нужно сделать, это получить массив байтов от этого (что будет зависеть от технологии доступа к данным - например, EF и Linq to Sql, создаст сопоставление, которое делает тривиальным получение байтового массива), а затем записывает его в файл, как в последней строке кода.

С какой-либо удачей - я надеюсь, что fileContent вот массив байтов? В этом случае вы можете просто сделать

System.IO.File.WriteAllBytes("hello.pdf", fileContent);