Unplanned
Last Updated: 26 Mar 2024 13:33 by Raymond
Raymond
Created on: 26 Mar 2024 13:33
Category: PDFViewer
Type: Bug Report
0
PDFViewer throws js exceptions and becomes unusable after a failed attempt to load a file

Bug report

Reproduction of the problem

  1. Initialize a PDFViewer and add a button that calls a controller action on click.
<div id="pdfViewer">
</div>

<script type="text/javascript">
    $("#pdfViewer").kendoPDFViewer({
        pdfjsProcessing: {
            file: ""
        }
    });

    function loadFile() {
        $("#pdfViewer").data("kendoPDFViewer").fromFile("@Url.Action("GetPDF", "Home")");
    }
</script>
  1. Implement an action that returns a .pdf file or occasionally returns HttpNotFoundResult:
public ActionResult GetPDF()
{

    var name = "sample.pdf";
    string path = Server.MapPath("/Content/pdf/sample.pdf");

    //generate a random boolean:
    Random rng = new Random();
    bool randomBool = rng.Next(0, 2) > 0;
            
    if (randomBool)
    {
        byte[] fileBytes = System.IO.File.ReadAllBytes(path);
        return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, name);
    }
    else
    {
        return new HttpNotFoundResult("File not found.");
    }
}

Current behavior

In the case where the request returns HttpNotFoundResult, a number of js errors are thrown:

util.js:417 Uncaught (in promise)

The user loses the ability to load a file, because subsequent attempts to load a file by clicking the button result in another js exception:

api.js:1114 Uncaught TypeError: Cannot read properties of null (reading 'sendWithStream')

Expected/desired behavior

The component should show a message that a file is not found, without throwing js exceptions and should not become unusable after a failed attempt to load a file.

Environment

  • Kendo UI version: 2024.1.319
  • jQuery version: x.y
  • Browser: [all]
0 comments