3

在 ASP.Net 上使用 iTextSharp 创建后如何打开 PDF 文件?我不想将它保存在服务器上,而是直接在生成新的 PDF 时,它会显示在浏览器上。有可能这样做吗?

这是我的意思的示例:单击此处。但是在这个例子中,文件是直接下载的。

我怎样才能做到这一点?

    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

2 回答 2

5

您需要在Content Type_ Response object_binarypdfheader

 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用来阅读和显示:

在这里你可以找到这样做的方式

直接通过代码打开生成的pdf文件,无需保存到磁盘

于 2012-05-05T14:46:22.930 回答
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()

希望有所帮助!:)

于 2012-05-05T15:09:30.833 回答