Как просмотреть PDF-документ в MVC, а не загружать его напрямую?

У меня есть ссылка, если щелкнуть по ней, HTML-страница будет преобразована в документ PDF, а затем вернуть этот файл PDF пользователю.

HTML-код:

<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-файл пользователю, а затем, если он захочет, он сможет его загрузить.

Как я могу это сделать?


person Noor Allan    schedule 30.04.2018    source источник


Ответы (1)


Вы должны установить заголовок 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;");
}

Браузер будет интерпретировать заголовки и отображать файл непосредственно в браузере, если у него есть возможность сделать это либо встроенно, либо через плагин.

person Nkosi    schedule 30.04.2018