gpt4 book ai didi

pdf - 从字节数组在 Blazor 页面中显示 PDF 的问题

转载 作者:行者123 更新时间:2023-12-05 02:46:14 25 4
gpt4 key购买 nike

我已经阅读了关于如何将存储在 SQL Server 数据库中的字节数组作为 varbinary 并在 Blazor 网站上将其显示为 PDF 的所有建议。我在 ASP.Net 中使用 aspx 页面和代码在后面取得了成功,但我似乎找不到 Blazor 的正确组合(ShowPDF.razor 和代码在 ShowPDF.razor.cs )

这是我在后面的代码中的变体:

  1. 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);

当这两个进程返回数据时,我无法找到如何设置 Razor 页面来显示结果。我试过:

<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" />

关于pdf - 从字节数组在 Blazor 页面中显示 PDF 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65589645/

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