2012-05-05 2 views
2

Как открыть PDF-файл после создания с помощью iTextSharp на ASP.Net? Я не хочу сохранять его на сервере, но напрямую , когда создается новый PDF, он отображается в браузере. Можно ли это сделать?iTextSharp создает PDF-файл и показывает его непосредственно в браузере

Вот пример того, что я имею в виду: Click here. Но в этом примере файл загружается напрямую.

Как я могу это сделать?

Dim doc1 = New Document() 

    'use a variable to let my code fit across the page... 
    Dim path As String = Server.MapPath("PDFs") 
    PdfWriter.GetInstance(doc1, New FileStream(path & "/Doc1.pdf", FileMode.Create)) 

    doc1.Open() 
    doc1.Add(New Paragraph("My first PDF")) 
    doc1.Close() 

Приведенный выше код сохраняет PDF-файл на сервер.

спасибо, что заблаговременно! :)

ответ

4

Проблема решена на код ниже:

HttpContext.Current.Response.ContentType = "application/pdf" 
    HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.pdf") 
    HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache) 

    Dim pdfDoc As New Document() 
    PdfWriter.GetInstance(pdfDoc, HttpContext.Current.Response.OutputStream) 

    pdfDoc.Open() 
    'WRITE PDF <<<<<< 

    pdfDoc.Add(New Paragraph("My first PDF")) 

    'END WRITE PDF >>>>> 
    pdfDoc.Close() 

    HttpContext.Current.Response.Write(pdfDoc) 
    HttpContext.Current.Response.End() 

Надежда помощь! :)

+0

@ mrjimoy.how, чтобы открыть его в новой вкладке ... в настоящее время открыта на той же вкладке, чтобы веб-страница была заменена и не может пойти на bak ... – Sivajith

5

Вам нужно установить Content Type в Response object и добавьте binary форму pdf в header

private void ReadPdfFile() 
    { 
     string path = @"C:\Somefile.pdf"; 
     WebClient client = new WebClient(); 
     Byte[] buffer = client.DownloadData(path); 

     if (buffer != null) 
     { 
      Response.ContentType = "application/pdf"; 
      Response.AddHeader("content-length",buffer.Length.ToString()); 
      Response.BinaryWrite(buffer); 
     } 

    } 

(или) вы можете использовать System.IO.MemoryStream для чтения и отображения:

Здесь может найти этот способ

Open Generated pdf file through code directly without saving it onto the disk

+0

Значит, мне все равно придется сохранять PDF-файл на сервер, а затем читать его? –

+0

Да, абсолютно и есть другой способ сделать это как обновлено. – coder

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