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