【问题标题】:Stream PDF from a server to a web client vb.net将 PDF 从服务器流式传输到 Web 客户端 vb.net
【发布时间】:2013-08-14 12:56:50
【问题描述】:

我们有一个 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 从一台服务器流式传输到另一台服务器?

【问题讨论】:

  • 让我补充一下(在那次投反对票之后),除非我在发帖前彻底研究过,否则我不会发帖。这是两天反复试验的结果,以使某些东西正常工作。如果你想要我所有的研究和代码的每一次迭代都是浪费的混乱,那么你有比我更多的时间来阅读......顺便说一句,如果你投反对票,你会礼貌地询问更多信息,所以我可以回应...

标签: vb.net servlets webrequest


【解决方案1】:

只需要进行一些非常细微的调整(对我来说它们似乎微不足道且不直观)。

我在设置内容类型之前添加了以下内容:

Response.Clear()

Response.ClearHeaders()

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

Response.End()

就是这样。现在 PDF 文件可以很好地从 Java servlet 传输到 IIS 服务器和最终用户的浏览器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 2018-01-30
    • 2020-11-16
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多