如何在MVC中查看PDF文档而不直接下载?

Noo*_*lan 2 c# asp.net-mvc html-to-pdf fileresult

我有一个点击它的链接,一个 HTML 页面将被转换为 PDF 文档,然后将此 PDF 文件返回给用户。

HTML代码:

<li><a href='@Url.Action("GetHTMLPageAsPDF", "Transaction", new { empID = employee.emplID })'>ViewReceipt</a></li>
Run Code Online (Sandbox Code Playgroud)

后面的代码:

<li><a href='@Url.Action("GetHTMLPageAsPDF", "Transaction", new { empID = employee.emplID })'>ViewReceipt</a></li>
Run Code Online (Sandbox Code Playgroud)

问题是当这个文件直接返回下载到用户计算机时,我想向用户显示这个PDF文件,然后如果他愿意他可以下载它。

我怎样才能做到这一点?

Nko*_*osi 5

您必须Content-Disposition将响应的标头设置为inline

public FileResult GetHTMLPageAsPDF(long empID) {
    string htmlPagePath = "anypath...";
    // convert html page to pdf
    PageToPDF obj_PageToPDF = new PageToPDF();
    byte[] databytes = obj_PageToPDF.ConvertURLToPDF(htmlPagePath);

    //return resulted pdf document        
    var contentLength = databytes.Length;      
    Response.AppendHeader("Content-Length", contentLength.ToString());
    //Content-Disposition header set to inline along with file name for download
    Response.AppendHeader("Content-Disposition", "inline; filename=" + empID + ".pdf");
       
    return File(databytes, "application/pdf;");
}
Run Code Online (Sandbox Code Playgroud)

浏览器将解释标头并直接在浏览器中显示文件,前提是它有能力这样做,无论是内置的还是通过插件。