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

时间:2018-04-30 17:08:25

标签: c# asp.net-mvc html-to-pdf fileresult

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

HTML code:

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

代码背后:

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
    FileResult fileResult = new FileContentResult(databytes, "application/pdf");
    fileResult.FileDownloadName = empID + ".pdf";
    return fileResult;
}

问题是当这个文件直接将其下载到用户计算机时,我想将这个PDF文件显示给用户,然后如果他想要他可以下载它。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

您必须在对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());
    Response.AppendHeader("Content-Disposition", "inline; filename=" + empID + ".pdf");

    return File(databytes, "application/pdf;");
}

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