簡體   English   中英

將PDF從服務器流式傳輸到Web客戶端vb.net

[英]Stream PDF from a server to a web client vb.net

我們有一個Servlet,可以將PDF報告發送到瀏覽器。 我們也有一個運行.net應用程序的IIS服務器,我們希望將servlet中的PDF作為流返回到.Net應用程序,然后.Net應用程序會將PDF呈現給瀏覽器(出於這種原因,我們使用此技術不需要進入這里)。 我不是一個VB / Visual Studio開發者,通過使用Web請求,此代碼可以工作:

    Dim BUFFER_SIZE As Integer = 1024
    ' Create a request for the URL. 
    Dim serveraction As String = "https://OurSeverName/ServletContext/Dispatch?action=ajaxRunReport&reportName="
    Dim request As WebRequest = _
      WebRequest.Create(serveraction + ReportName.Text)

    ' Get the response.
    Dim res As WebResponse = request.GetResponse()

    ' Get the stream containing content returned by the server.
    Dim dataStream As Stream = res.GetResponseStream()

    ' Open the stream using a BinaryReader for easy access.
    Dim reader As New BinaryReader(dataStream)

    ' Read the content.
    Response.ContentType = "application/pdf"

    Response.AddHeader("content-disposition", "inline; filename=reportfile.pdf")
    Dim bytes = New Byte(BUFFER_SIZE - 1) {}

    While reader.Read(bytes, 0, BUFFER_SIZE) > 0
        Response.BinaryWrite(bytes)
    End While
    reader.Close()
    ' Clean up the streams and the response.
    Response.Flush()
    Response.Close() 

唯一的問題是,即使代碼運行很快,在Chrome和IE中渲染PDF仍需要20-30秒,而在FireFox中僅需幾秒鍾。 知道為什么渲染PDF會有延遲嗎? 是否有更好的方法將PDF從一台服務器流傳輸到另一台服務器?

僅需要進行一些非常細微的調整(對我而言,它們似乎微不足道且不直觀)。

在設置內容類型之前,我添加了以下內容:

Response.Clear()

Response.ClearHeaders()

我在reader.Close()之后添加了以下內容

Response.End()

就是這樣 現在,PDF文件可以很好地從Java servlet流到IIS服務器以及最終用戶的瀏覽器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM