我正在尝试使用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");
}
文档在新窗口中正确打开,但它只显示控制器名称而不是文档名称。请参阅附件。
答案 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