открытие PDF документа из памяти - PullRequest
5 голосов
/ 03 марта 2010

Можно создать PDF-документ в памяти с помощью iTextSharp, который дает пользователю возможность выбрать «открыть» или «сохранить»?

На данный момент только я сохранил его на диск.

EDIT:

хорошо, я подозреваю. В конце концов мне пришлось записать файл в папку, но он временный, так как каждый раз перезаписывается. Вот решение для того, что оно стоит:

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();

}

Ответы [ 3 ]

3 голосов
/ 03 марта 2010

Вы можете сохранить PDF в памяти и записать его в браузер следующим образом.

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 голосов
/ 03 марта 2010

Для открытия / отображения PDF вы можете использовать компонент acrobat activex после сохранения файла во временную папку. Я не смог найти бесплатный элемент управления для отображения PDF-файлов в более раннем исследовании.

0 голосов
/ 03 марта 2010

Вам нужно сохранить его во временную папку, а затем вызвать Process.Start для файла.

...