@page "/controls/pmpdfviewer"
@page "/controls/pmpdfviewer/{transID:int}"

@layout Shared.BlankLayout

@using Syncfusion.Blazor.PdfViewerServer
@using Syncfusion.Blazor.PdfViewer

<SfPdfViewerServer @ref="PdfViewer" DocumentPath="" Height="800px" Width="100%">
</SfPdfViewerServer>


@code {

    [Parameter]
    public int TransID { get; set; }
    SfPdfViewerServer PdfViewer { get; set; }
    bool mbIsDocLoaded = false;
    string DocData = "";

    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        await Task.Delay(2500);

        if (TransID != 0)
            LoadDocument();
    }

    private async void LoadDocument()
    {
        if (mbIsDocLoaded == false)
        {
            mbIsDocLoaded = true;

            string newPdf = GetPDFDocTest(TransID);
            DocData = newPdf;
            await PdfViewer.Load(newPdf, null);
        }
    }

    private string GetPDFDocTest(int transmittalID)
    {
        string target = @"ReportServerAddress" + transmittalID.ToString();
        byte[] ret;
        byte[] fileVal;
        int iCnt = 1;
        int size = 4096;
        string pdfFile = "";

        ret = new byte[size];

        try
        {
            System.Net.WebRequest wr;
            System.Net.NetworkCredential cred = new System.Net.NetworkCredential("Username", "Password");
            wr = System.Net.HttpWebRequest.Create(target);
            wr.Credentials = cred;

            System.IO.Stream s = wr.GetResponse().GetResponseStream();

            using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
            {
                int read;
                while ((read = s.Read(ret, 0, ret.Length)) > 0)
                {
                    ms.Write(ret, 0, read);
                }

                fileVal = ms.ToArray();
            }

            pdfFile = "data:application/pdf;base64," + Convert.ToBase64String(fileVal);
        }
        catch (Exception ex)
        {
            string err = ex.Message;
        }

        return pdfFile;
    }
}


