2015-05-15 3 views
0

У меня подписанный PDF-код с хорошо выполненной подписью Adobe. Моя проблема начинается, когда я хочу загрузить этот документ.проблемы с загрузкой подписанных PDF-файлов C#

Через webmethod Я получаю байты подписанного файла. Пока здесь нет проблем.

Если я попытаюсь сохранить файл на своем сервере, когда я открою файл, все будет правильно. Но если я попытаюсь загрузить его, когда я его открою, подпись будет неправильной.

Это ошибка читателя самана:

«Объем подписанных данных определяется целым рядом неожиданных байтов детали:. Диапазон байтов подписи недействителен»

Это способ загрузить файл:

HttpContext.Current.Response.ContentType = "application/pdf"; 
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename= Factura.pdf"); 
HttpContext.Current.Response.AddHeader("Content-Length", newStream.Length.ToString()); 
HttpContext.Current.Response.Buffer = true; 
HttpContext.Current.Response.BufferOutput = true; 
HttpContext.Current.Response.Clear(); 
HttpContext.Current.Response.OutputStream.Write(newStream.GetBuffer(), 0, newStream.GetBuffer().Length); 
HttpContext.Current.Response.OutputStream.Flush(); 
HttpContext.Current.ApplicationInstance.CompleteRequest(); 

Может кто-нибудь помочь мне с этой проблемой?

ответ

1

Вы отправляете больше байтов, чем объявления, объявленные в заголовке. Сделайте newStream.ToArray() и используйте массив байтов. Другое дело, чтобы проверить, действительно ли у вас есть все байты в newStream, сохраните его в файле для проверки (от ToArray().

+0

Спасибо за ответ, я изменил эту строку: «HttpContext.Current.Response.AddHeader (" Content-Length ", newStream.Length.ToString());' для этого другого: 'HttpContext.Current.Response.AddHeader (« Content-Length », newStream.ToArray(). Length.ToString()); и I имеют ту же проблему. Я могу проверить, что 'newStream' имеет все байты, потому что я сохраняю файл перед загрузкой, и я могу его прочитать –

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