2013-02-12 2 views
0

Я использую MS SQL 2008 У меня есть таблица с VARBINARY (макс) типа столбца
Эта таблица имеет много загруженных файлов PDF (массивы байтов)
Я превращаю- байты в файлы в формате PDF
этим кодом:
поврежденные PDF данные из базы данных

using (FileStream fs = new FileStream 
       (@"D:\EIFiles\test.pdf", FileMode.Create)) 
     { 
      fs.Write(byte, 0, byte.Length); 
     } 

Многие из PDF-файлов можно открыть, но некоторые из них не может быть открыт, потому что предупреждает читателя самана сообщение «поврежденный файл». Примечание: Все они могут быть открыты с помощью программы (написанной в DevExpress XAF), который использует этот DB

+0

Когда вы говорите «можно открыть через программу». Отображает ли программа PDF? – Paparazzi

+0

Попробуйте использовать несколько альтернативных PDF-считывателей для поврежденных файлов, и вы узнаете, есть ли проблема в читателе или в файле. – Serg

+0

Не стесняйтесь присылать мне образец PDF, и я могу рассмотреть его для вас с полной версией Adobe Acrobat. Также проверьте сопоставление на вашем сервере sql. У меня были подобные проблемы при использовании unicode. – lstanczyk

ответ

2

Реализация DevExpress XAF типа по умолчанию FileData сжимает поток (Gzip) перед его сохранением. Вы не сможете прочитать содержимое без декомпрессии потока в первую очередь. Вы можете использовать CompressionUtils.Decompress(), который находится в сборке DevExpress.Persistent.Base.

Альтернативно вы можете осуществить свою версию FileData и изменить это поведение. Посмотрите на источник (или используйте декомпилятор) и удалите атрибут [ValueConverter(typeof(CompressionConverter))] из свойства Content.

Смежные вопросы