Unplanned
Last Updated: 11 Feb 2025 13:05 by Joel
Joel
Created on: 11 Feb 2025 13:05
Category: PDFViewer
Type: Bug Report
2
PDF Viewer doesn't display the loaded PDF document when calling StateHasChanged()

The PDF Viewer fails to display the loaded document if StateHasChanged() is called when the Data parameter is set.

A possible workaround is to call await Task.Delay(...) after StateHasChanged()

Test Page (run this in a server app):

<h1>PDF Viewer Tests</h1>

<h2>Load Initially</h2>

<TelerikPdfViewer Data="@FileData1"
                  EnableLoaderContainer="true"
                  Height="30vh"
                  Zoom="0.75m">
</TelerikPdfViewer>

<h2>Load On Demand</h2>

<TelerikButton ThemeColor="@ThemeConstants.Button.ThemeColor.Primary"
               OnClick="@( async () => await LoadPdf(2) )">Load PDF</TelerikButton>

<TelerikPdfViewer Data="@FileData2"
                  EnableLoaderContainer="true"
                  Height="30vh"
                  Zoom="0.75m">
</TelerikPdfViewer>

@code {
    private byte[]? FileData1 { get; set; }
    private byte[]? FileData2 { get; set; }

    protected async override Task OnInitializedAsync()
    {
        await LoadPdf(1);
    }

    public async Task LoadPdf(int id)
    {
        await Task.Delay(1000);

        if (id == 2)
        {
            FileData2 = Convert.FromBase64String(PdfBase64);
        }
        else
        {
            FileData1 = Convert.FromBase64String(PdfBase64);
        }

        StateHasChanged();

        await Task.Delay(300);
    }

    private const string PdfBase64 = "JVBERi0xLjEKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDEvTWVkaWFCb3ggWy00MCAtNjQgMjYwIDgwXSA+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9SZXNvdXJjZXM8PC9Gb250PDwvRjE8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9BcmlhbD4+ID4+ID4+L0NvbnRlbnRzIDQgMCBSPj5lbmRvYmoKNCAwIG9iajw8L0xlbmd0aCA1OT4+CnN0cmVhbQpCVAovRjEgMTggVGYKMCAwIFRkCihUZWxlcmlrIFBkZlZpZXdlciBmb3IgQmxhem9yKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA1CjAwMDAwMDAwMDAgNjU1MzUgZgowMDAwMDAwMDIxIDAwMDAwIG4KMDAwMDAwMDA4NiAwMDAwMCBuCjAwMDAwMDAxOTUgMDAwMDAgbgowMDAwMDAwNDkwIDAwMDAwIG4KdHJhaWxlciA8PCAgL1Jvb3QgMSAwIFIgL1NpemUgNSA+PgpzdGFydHhyZWYKNjA5CiUlRU9G";
}

0 comments