使用 Stream C# 在网页上显示 PDF

Posted

技术标签:

【中文标题】使用 Stream C# 在网页上显示 PDF【英文标题】:Show PDF on webpage using Stream C# 【发布时间】:2022-01-05 17:56:37 【问题描述】:

我正在尝试嵌入 PDF 查看器以在网页上显示 PDF 文档。当我运行此代码时,它通常会像我想要的那样显示 PDF,但是当我刷新时,一切都崩溃了(我收到一条消息“加载 PDF 文档失败”)。我实际得到的错误是“ObjectDisposedException:无法访问关闭的流。”,所以它可能与流读取有关,我不知道。

我不知道文档的路径,所以我只是通过 API 检索文档的 Stream(这很好),因此 Stream 是我唯一可用的东西。

这是我到目前为止所做的。您建议添加/更改什么?

Files1Controller.cs:

    public class Files1Controller : Controller
    
        private IWebHostEnvironment hostingEnvironment;

        // Data is in here (I retrieve data from API in another class)
        private readonly DocumentData documentData;

        public Files1Controller(IWebHostEnvironment hostingEnvironment, DocumentData documentData)
        
            this.hostingEnvironment = hostingEnvironment;

            this.documentData = documentData;
        

        [HttpGet]
        public IActionResult Index()
        
            return View(documentData);
        

        public IActionResult PdfViewerNewTab()
        
            return File(documentData.PdfFileStream, "application/pdf");
        
    

Index.cshtml:

@model DocumentData
@
    Layout = null;


<embed id="embPDF" src="../Files1/PdfViewerNewTab?fileName=@Model.Filename" style="width: 100%; height: 100%;" />

文档数据:

public class DocumentData

        public string Filename  get; set;  = "long_line_file_ORIGINAl.pdf";

        public Stream PdfFileStream  get; set; 

【问题讨论】:

我可以正常看到整个PDF文档(第一次加载,刷新前),而不仅仅是第一页。 【参考方案1】:

直接在方法 PdfViewerNewTab() 中通过 API 获取文件流解决了这个问题。

【讨论】:

以上是关于使用 Stream C# 在网页上显示 PDF的主要内容,如果未能解决你的问题,请参考以下文章

如何在网页中显示PDF文件

网页显示PDF文件,拒绝访问

如何在网页中显示PDF文件

c# 从数据库中读取图片数据流,然后转换成图片显示到网页上?

我的网页上显示,载入PDF时信息错误。该怎么解决

如何下载网页上的PDF类型的文件