c# - 如何从字节数组 c# MVC .NET Core 在 iframe 中显示 pdf

标签 c# pdf razor iframe asp.net-core

我在网上搜索了答案,但没有找到答案。我想知道如何以及是否能够使用 Razor 将 pdf 文件渲染到位于我 View 中的 iFrame 中。 pdf 是一个字节数组并加载到我的模型中。

到目前为止,这是我的代码:

public ActionResult ByteConverter(byte[] pdfData)
{
    MemoryStream Stream = new MemoryStream(pdfData);
    Stream.Write(pdfData, 0 , pdfData.Length);
    Stream.Position = 0;
    return new FileStreamResult(Stream,"application/pdf");
}

我的模型:

 public async Task<ActionResult> Index()
 {
     ApiClient api = new ApiClient("http://localhost:43674/ApiCore");
     var result = await api.GetAsync();

       RegulationViewModel viewModel = new RegulationViewModel
       {
         ConnectedToRoadMap = result.ConnectedToRoadMap,
         Decided = result.Decided,
         Enforced = result.Enforced,
         Id = result.Id,
         Paragraph = result.Paragraph,
         Pdf = result.Pdf,
         Published = result.Published,
         Region = result.Region,
         StructuredInfo = result.StructuredInfo,
         Title = result.Title,
         ValidThru = result.ValidThru  
        };

        ByteConverter(viewModel.Pdf);

        return View(viewModel);
}

我的观点:

<div class="tab-pane active" id="dokument">
    <iframe src="@Url.Action("ByteConverter", "RegulationController")"></iframe>
</div>

最佳答案

好吧,几天后我设法通过将模型中的 Pdf 值更改为 Convert.ToBase64String(result.Pdf) 来使其工作,如下所示:

 public async Task<ActionResult> Index()
        {
            ApiClient api = new ApiClient("http://localhost:43674/ApiCore");
            var result = await api.GetAsync();

            RegulationViewModel viewModel = new RegulationViewModel
            {
                ConnectedToRoadMap = result.ConnectedToRoadMap,
                Decided = result.Decided,
                Enforced = result.Enforced,
                Id = result.Id,
                Paragraph = result.Paragraph,
                Pdf = Convert.ToBase64String(result.Pdf),
                Published = result.Published,
                Region = result.Region,
                StructuredInfo = result.StructuredInfo,
                Title = result.Title,
                ValidThru = result.ValidThru
            };

            return View(viewModel);
        }

在我看来,我完全跳过了 @Url.Action("ByteConverter", "RegulationController") 并将其替换为:

<iframe src="data:application/pdf;base64,@Model.Pdf" type="application/pdf"></iframe>

在除 IE 之外的所有网络浏览器中都能正常工作,这是因为 Internet Explorer 不支持使用 DATA URI 作为 iframe 的来源。

关于c# - 如何从字节数组 c# MVC .NET Core 在 iframe 中显示 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53648736/

相关文章:

javascript - 为什么 Javascript $(document.body) 不能加载到源文件之外?

c# - Azure 事件日志 - TargetInitationException 和奇怪的消息

c# - 用 linq 分组;但有条件

java - 如何将可滚动的 JPanel 导出为 pdf 文件

php - Tcpdf 自动设置每张

html - 如何在 MVC3 View (Razor)中将动态字符串呈现为 html

asp.net - 创建密码字段@html.TextBoxFor

c# - 从 MembershipUser 继承 - Asp.net/C#

c# - 在 C# 中将所有列表内容连接到一个字符串中

python - 使用 ScraperWiki 抓取 PDF 并收到未定义错误