diff --git a/src/components/BootstrapBlazor.PdfReader/BootstrapBlazor.PdfReader.csproj b/src/components/BootstrapBlazor.PdfReader/BootstrapBlazor.PdfReader.csproj index c0f89e1e..d06ffdaa 100644 --- a/src/components/BootstrapBlazor.PdfReader/BootstrapBlazor.PdfReader.csproj +++ b/src/components/BootstrapBlazor.PdfReader/BootstrapBlazor.PdfReader.csproj @@ -1,7 +1,7 @@  - 10.0.14 + 10.0.15 diff --git a/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.cs b/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.cs index 82520689..d9323302 100644 --- a/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.cs +++ b/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.cs @@ -200,6 +200,7 @@ protected override async Task OnAfterRenderAsync(bool firstRender) { _url = Url; _lastStreamHash = string.Empty; + _lastStreamLength = 0; await InvokeVoidAsync("setUrl", Id, _url); } if (_currentPage != CurrentPage) diff --git a/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.js b/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.js index acc5d0a2..c0c34db0 100644 --- a/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.js +++ b/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.js @@ -36,6 +36,7 @@ export async function setUrl(id, url) { const { options } = pdf; options.url = url; + options.data = null; await loadPdf(pdf); } @@ -47,31 +48,12 @@ export async function setData(id, data) { return; } - const objectUrl = createObjectURLFromByte(data); - pdf.objectUrl = objectUrl; - const { options } = pdf; - options.url = objectUrl; - options.data = null; + options.url = null; + options.data = data;; await loadPdf(pdf); } -const createObjectURLFromBase64 = base64Data => { - const binaryString = atob(base64Data); - const bytes = new Uint8Array(binaryString.length); - for (let i = 0; i < binaryString.length; i++) { - bytes[i] = binaryString.charCodeAt(i); - } - - const blob = new Blob([bytes], { type: 'application/pdf' }); - return URL.createObjectURL(blob); -} - -const createObjectURLFromByte = bytes => { - const blob = new Blob([bytes], { type: 'application/pdf' }); - return URL.createObjectURL(blob); -} - export function setScaleValue(id, value) { const { pdfViewer } = Data.get(id); if (pdfViewer) { @@ -139,10 +121,7 @@ const loadPdf = async pdf => { if (bar) { const val = loaded / total * 100; - if (val > 100) { - val = 100; - } - bar.style.setProperty('--bb-view-progress-val', `${val}%`); + bar.style.setProperty('--bb-view-progress-val', `${Math.min(val, 100)}%`); if (progressHandler === null) { progressHandler = setTimeout(() => { @@ -185,10 +164,7 @@ const loadPdf = async pdf => { } const disposePdf = pdf => { - const { el, observer, loadingTask, objectUrl } = pdf; - if (objectUrl) { - URL.revokeObjectURL(objectUrl); - } + const { el, observer, loadingTask } = pdf; if (observer) { observer.disconnect(); @@ -203,7 +179,10 @@ const disposePdf = pdf => { const viewContainer = el.querySelector(".bb-view-container"); if (viewContainer) { [...viewContainer.children].forEach(i => { - if (!i.classList.contains("pdfViewer")) { + if (i.classList.contains("pdfViewer")) { + i.innerHTML = ""; + } + else { i.remove(); } })