2010-03-03 14 views
5

Jest możliwe, aby stworzyć dokument PDF w pamięci z iTextSharp, które daje użytkownikowi możliwość wyboru na „otwarty” lub „Zapisz” ?, a jeśli to otwiera to otwiera się w oknie przeglądarki.otwarcia dokumentu PDF z pamięci

W tej chwili mam tylko zapisać na dysku.

EDYTOWANIE:

ok Mam to sussed. W końcu musiałem zapisać plik w folderze, ale jest to tylko tymczasowe, ponieważ zostaje nadpisane za każdym razem. Oto rozwiązanie dla co warto:

private void GeneratePDF() { 

    var doc1 = new Document(); 
    string path = Server.MapPath("~/pdfs/"); 
    string filepath = path + "Doc1.pdf"; 
    PdfWriter.GetInstance(doc1, new FileStream(filepath, FileMode.Create)); 

    doc1.Open(); 
    doc1.Add(new Paragraph("A new Document"));   
    doc1.Add(new Paragraph(DateTime.Now.ToString())); 

    doc1.Close(); 

    Response.Buffer = false; //transmitfile self buffers 
    Response.Clear(); 
    Response.ClearContent(); 
    Response.ClearHeaders(); 
    Response.ContentType = "application/pdf"; 
    Response.AddHeader("Content-Disposition", "attachment; filename=myPDF.pdf"); 
    Response.TransmitFile(filepath); 
    Response.End(); 

}

+0

Rozważ umieszczenie rozwiązania jako odpowiedzi i oznaczenie go jako zaakceptowanego. – dckuehn

Odpowiedz

0

Musisz zapisać go do folderu tymczasowego, a następnie zadzwonić Process.Start na plik.

0

Do otwierania/pokazywania pliku PDF można użyć komponentu acrobat activex po zapisaniu pliku w folderze tymczasowym. Nie mogłem znaleźć bezpłatnej kontroli wyświetlania plików PDF we wcześniejszych badaniach.

3

Możesz zapisać plik PDF na memorystream i zapisać go w przeglądarce w ten sposób.

protected void Page_Load(object sender, EventArgs e) 
{ 
    MemoryStream ms; 

    using (ms = new MemoryStream()) 
    { 
     PdfWriter writer = PdfWriter.GetInstance(myPdfDoc, ms); 

     Response.ContentType = "application/pdf"; 
     Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length); 
     Response.OutputStream.Flush(); 
     Response.OutputStream.Close(); 

    } 
} 
+0

Szukałem czegoś takiego, ale myślę, że czegoś jeszcze brakuje. Czy muszę ustawić zawartość/typ – Dkong

+0

Tak, bardzo dobrze, może zobaczyć edycję. –

Powiązane problemy