Как просмотреть PDF документ в MVC, а не скачать его напрямую? - PullRequest
0 голосов
/ 30 апреля 2018

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

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

1 Ответ

0 голосов
/ 30 апреля 2018

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

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

...