在新浏览器选项卡中查看PDF文档

时间:2017-01-13 05:42:32

标签: c# jquery asp.net-mvc pdf

我正在尝试使用Asp.net mvc控制器在新标签页中打开pdf。 它正确地在新选项卡中打开但文档名称未显示 这是我的代码

 public ActionResult ViewDocument()
{
 byte[] docFileArr=......
 var cntdn = new System.Net.Mime.ContentDisposition
                {
                    FileName = DocumentName,
                    Inline = true,
                };
                Response.AppendHeader("Content-Disposition", cntdn .ToString());
                return File(docFileArr, "application/pdf");

}

文档在新窗口中正确打开,但它只显示控制器名称而不是文档名称。请参阅附件。

提前感谢您的帮助 enter image description here

2 个答案:

答案 0 :(得分:1)

实现此目的的一种方法是在PDF的元数据中设置标题(在创建PDF期间或在下载开始之前对其进行操作)。已经提出的SO问题已经涵盖了这一点。

另一种方法是打开一个新选项卡,加载由ASP.NET MVC View生成的自己的HTML页面,它自己嵌入由ViewDocument操作提供的PDF文件(更合适的名称是DownloadDocument)。 / p>

HTML页面的HTML标题中将包含一个标题,该标题将由浏览器显示。例如。视图看起来像(只是为了提出想法):

@{
    Layout = null;        
}
<!DOCTYPE html>
<html height="100%">
<head>
    <meta charset="utf-8" />
    <title>@Model.Caption</title>
    <script src="/js/pdfobject.js"></script>
    <style>
        .pdfobject-container {
            height: 96vh;
            width: 99vw;
        }                   
    </style>
</head>
   <body height="100%">

    <div id="pdf" height="100%"></div>
    <script>PDFObject.embed("@Model.DownloadUrl", "#pdf");</script>
  </body>
</html>

它使用PDObject.js库使PDF嵌入更容易,更不容易出错。

答案 1 :(得分:0)

Web浏览器实际上使用PDF文件中包含的元数据来显示标题。这样,您的文件将具有相同的标题,而不考虑它的加载方式(从您的.NET应用程序,下载后的桌面等)。

请参阅此文章,了解如何使用Acrobat查看和编辑Adobe中的元数据:https://helpx.adobe.com/acrobat/using/pdf-properties-metadata.html