pdf - 在 Blazor 页面中从字节数组显示 PDF 的问题
问题描述
我已经阅读了有关如何将存储在 SQL Server db 中的字节数组varbinary
作为 PDF 并在 Blazor 网站中显示为 PDF 的所有建议。我在 ASP.Net 中取得了成功,背后有 aspx 页面和代码,但我似乎找不到 Blazor 的正确组合(ShowPDF.razor
和背后的代码ShowPDF.razor.cs
)
这是我在后面代码中的变体:
aReport.ReportDocument 正在从数据库返回 aReport.DocumentSize 的字节数组
FileStreamResult GetPDF() { var pdfStream = new System.IO.MemoryStream(); this.rdb = new ReportData(); aReport = rdb.GetWithReport(1); pdfStream.Write(aReport.ReportDocument, 0, aReport.DocumentSize); pdfStream.Position = 0; return new FileStreamResult(pdfStream, new Microsoft.Net.Http.Headers.MediaTypeHeaderValue("application/pdf")); }
或 2. 将二进制数组直接转为 base 64 编码:
return Convert.ToBase64String(aReport.ReportDocument);
虽然这两个进程返回数据,但我无法找到如何设置剃刀页面来显示结果。我努力了:
<object src="@Url.Action("GetPDF")"/>
和其他变体没有成功。
谢谢!
解决方案
好的,我终于找到了解决方案。ShowPDF.razor.cs 页面后面的代码是:
public partial class ShowPDF: ComponentBase
{
private IReportData rdb; // the database
private ReportModel aReport; // report model
/*
aReport.ReportDocument holds the byte[]
*/
string GetPDF(int ReportId)
{
this.rdb = new ReportData();
aReport = rdb.GetWithReport(ReportId);
return "data:application/pdf;base64," + Convert.ToBase64String(aReport.ReportDocument);
}
}
ShowPDF.razor 页面是:
@page "/ShowPDF"
@page "/ShowPDF/{Report:int}"
@code {
[Parameter]
public int Report { get; set; }
}
<embed src="@GetPDF(Report)" visible="false" width="1500" height="2000" />
推荐阅读
- jquery - 如何用jQuery中的数组项替换部分字符串?
- python - SelectField WTForms 未在提交表单时返回所选值
- javascript - 如何在单击表格时获取特定行的单元格的位置
- excel - 如何从两个数组中找到缺失值
- c# - 使用 xpath 从使用节点前缀的 xml 中提取对象
- python - 如何在python中的小波阈值中设置要处理的信号的阈值
- javascript - 如何以数据表形式显示我的 (childData) 数组数据?
- javascript - 如何慢慢淡出彩色框?
- c# - 如何减少构造函数中的参数数量,其中一半是为基类提供的
- c# - 如何向用户提供完成任务所需的进度或估计时间