2016-09-28 6 views
0

Этот код работает отлично. Проблема заключалась в том, что кнопка находилась внутри панели обновления управления и это вызывало некоторые проблемы. Но я уже исправлен и теперь работает.Itextsharp download PDF

Dim documentoPDF As New Document(PageSize.A4, 10, 10, 10, 10) 
     Dim memStream As MemoryStream = New MemoryStream() 
     Dim writer As PdfWriter = PdfWriter.GetInstance(documentoPDF, memStream) 
     documentoPDF.Open() 

     Dim Paragraph1 As Paragraph = New Paragraph("First paragraph") 
     documentoPDF.Add(New Paragraph(Paragraph1)) 

     documentoPDF.Close() 

     Dim bytesInStream As Byte() = memStream.ToArray() 
     memStream.Close() 

     'Dim memorystreaam As MemoryStream = New MemoryStream(bytesInStream) 

     Response.Clear() 
     Response.ContentType = "application/pdf" 
     Response.AddHeader("content-disposition", "attachment;filename=FileName.pdf") 
     Response.Buffer = True 
     Response.Cache.SetCacheability(HttpCacheability.NoCache) 
     'Response.OutputStream.Write(memStream.GetBuffer(), 0, memStream.GetBuffer().Length) 

     Response.BinaryWrite(bytesInStream) 
     Response.End() 
+1

В каком случае ваш код не работает? То есть каково ожидаемое поведение и каково наблюдаемое поведение? – mkl

+0

@mkl посмотреть, я актуализирую код, проблема в том, что PDF-файл никогда не загружается на мой компьютер. –

+2

Что * точно * происходит при попытке загрузить? Вы проверили все соответствующие файлы журналов? Запустили ли вы код в отладчике? Вы использовали инструмент tcpdump для захвата и анализа веб-трафика? – mkl

ответ

1

Похоже, что вы не сохраняете документ PDF в потоке где-то.

Dim bin() As Byte 
Dim stream As MemoryStream = New MemoryStream 
documentoPDF.Save(stream, false) 
bin = stream.ToArray 

Response.ClearHeaders 
Response.Clear 
Response.Buffer = true 
Response.ContentType = "application/pdf" 
Response.AddHeader("content-length", bin.Length.ToString) 
Response.AddHeader("content-disposition", "attachment; filename="""" + txtnombre.Text + ".pdf, "") 
Response.OutputStream.Write(bin, 0, bin.Length) 
+0

:(не работал documentoPDF является документом и не имеет .save function Я помещаю memystream как параметр внутри pdfwriter, поэтому не нужно его сохранять. У меня нет ошибок при отладке, но страница выглядит так, как будто ничего не происходит все время. Я заменяю внутренний код и i опубликует в другом соглашении Dim memStream As MemoryStream = New MemoryStream() Dim writer As PdfWriter = PdfWriter.GetInstance (documentoPDF, memStream) –