Вопрос по memorystream, itextsharp, response, c# – iTextSharp создает поврежденный PDF с ответом

4

Я попробовал оба, но все еще не работает

iTextSharp + FileStream = Поврежденный файл PDF

iTextSharp производит поврежденный PDF

using (System.IO.MemoryStream memoryStream = new System.IO.MemoryStream())
        {
            //abre o documento para poder editar
            document.Open();

            //Adiciona os campos de assinatura
            document.Add(Assinatura());

            //fecha o documento ao finalizar a edição
            document.Close();

            //Prepara o download
            byte[] bytes = memoryStream.ToArray();
            memoryStream.Close();
            Response.Clear();
            Response.ContentType = "image/pdf";
            //Response.ContentType = "application/pdf";
            Response.AddHeader("Content-Disposition", "attachment;
            filename=ControleDePonto.pdf");
            Response.Buffer = true;
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Response.BinaryWrite(bytes);
            Response.End();
            Response.Close();
        }

Что я делаю не так?

не говоря уже о том, что я просто поместил "PdfWriter writer = PdfWriter.GetInstance (document, memoryStream);" на неправильной линии Daniel Boldrin
как мне это сделать? Daniel Boldrin
application/pdf правильный тип MIME Увидетьэтот вопрос, Нет необходимости закрывать ответ после того, как вы закончите его, кстати. mason
Просто заметил, что вы никогда не передадите информацию изdocument в ваш поток памяти. mason
я тоже попробовал, но не удачно Daniel Boldrin

Ваш Ответ

1   ответ
4

Используйте PdfWriter для записи PDF в MemoryStream.

PdfWriter writer = PdfWriter.GetInstance(document, memoryStream);
document.Open();

//Adiciona os campos de assinatura
document.Add(Assinatura());

//fecha o documento ao finalizar a edição
document.Close();

//Prepara o download
byte[] bytes = memoryStream.ToArray();
memoryStream.Close();
Response.Clear();
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "attachment;filename=ControleDePonto.pdf");
Response.Buffer = true;
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.BinaryWrite(bytes);
Response.End();
спасибо !, это именно то, что мне нужно Daniel Boldrin
Что значитAssinatura() вернуть? muttley91
@rar Если вы хотели связаться с OP, используйте синтаксис @. mason

Похожие вопросы