使用 Stream C# 在网页上显示 PDF
Show PDF on webpage using Stream C#
我正在尝试嵌入 PDF 查看器以在网页上显示 PDF 文档。当我 运行 这段代码时,它通常会按我想要的方式显示 PDF,但是当我刷新时,一切都崩溃了(我收到一条消息“无法加载 PDF 文档”)。我实际得到的错误是“ObjectDisposedException:无法访问已关闭的流。”,所以这可能与流读取有关,我不知道。
我不知道文档的路径,所以我只是通过 API 检索文档的 Stream(这很好用),因此 Stream 是我唯一可用的。
这就是我到目前为止所做的。你对 add/change 有什么建议?
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; }
}
直接在方法 PdfViewerNewTab() 中通过 API 获取文件流解决了这个问题。
我正在尝试嵌入 PDF 查看器以在网页上显示 PDF 文档。当我 运行 这段代码时,它通常会按我想要的方式显示 PDF,但是当我刷新时,一切都崩溃了(我收到一条消息“无法加载 PDF 文档”)。我实际得到的错误是“ObjectDisposedException:无法访问已关闭的流。”,所以这可能与流读取有关,我不知道。
我不知道文档的路径,所以我只是通过 API 检索文档的 Stream(这很好用),因此 Stream 是我唯一可用的。
这就是我到目前为止所做的。你对 add/change 有什么建议?
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; }
}
直接在方法 PdfViewerNewTab() 中通过 API 获取文件流解决了这个问题。