gpt4 book ai didi

asp.net - 使用 Report VIewer 将多个 PDF 渲染到浏览器 - ASP.NET

转载 作者:行者123 更新时间:2023-12-04 06:20:02 25 4
gpt4 key购买 nike

现状

我有 ASP.NET Web 应用程序,它为使用 MS Report Viewer 的用户呈现 PDF。 PDF 使用以下方法呈现:

    Byte pdfByte = Byte();
pdfByte = ReportViewer.LocalReport.Render("PDF", Nothing, mimeType, encoding, extensions, stream, warning)

并作为带有响应对象的附件发送到浏览器:
    Response.Clear()
Response.ContentType = mimeType
Response.AddHeader("content-disposition", "attachment; filename=myfile." + extension)
Response.BinaryWrite(pdfByte)
Response.Flush()
Response.End()

这项工作很棒!用户浏览器将获取 PDF 作为可下载附件。

我要达到的目标

渲染多个 PDF 并将它们分别发送到用户的浏览器。用户将获得单独的 PDF 文档。不管他们是一次性得到它们还是一个一个得到它们都没有关系。

问题

问题出在 Response.End() 之后不执行下一行代码。我试图存储 pdfByte session 中的对象,循环通过它并将它们发送到用户的浏览器 Response对象,但在发送第一个 PDF 之后,它就停止了。
我也试过删除 Response.End()认为代码将继续运行,但在发送第一个 PDF 后仍会停止。

请建议任何解决方法或提示。谢谢!

最佳答案

您不能在单个 HTTP 响应中发送多个文件(作为单独的实体)(协议(protocol)不支持它。但是,您可以做的是将所有文件存档在一起并将该单个 zip(或您想要的任何格式)发送到客户。

您可以使用 DotNetZip 等库/SharpZipLib将文件组合(和压缩)在一起。基于库 API,您可能需要在添加到 zip 文件之前将 PDF 文件保存到磁盘。在将 zip 文件发送到客户端时,不要忘记适本地更改您的内容类型。

又一个替代方案是向用户提供具有多个下载文件的链接的页面。这可能意味着您要么必须将 PDF 存储一段时间以便稍后提供它们(通过链接),要么将链接指向一个处理程序,该处理程序将再次重新运行报告以从中获取 PDF。

关于asp.net - 使用 Report VIewer 将多个 PDF 渲染到浏览器 - ASP.NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6702888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com