diff --git a/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.js b/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.js index 81f6a463..4bb1ff33 100644 --- a/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.js +++ b/src/components/BootstrapBlazor.PdfReader/PdfReader.razor.js @@ -155,6 +155,9 @@ const loadPdf = async pdf => { pdfViewer.setDocument(pdfDocument); pdfDocument.getMetadata().then(metadata => { + if (metadata.contentLength === null) { + metadata.contentLength = options.data.length; + } loadMetadata(el, pdfViewer, metadata); }); @@ -208,7 +211,7 @@ const loadMetadata = (el, pdfViewer, metadata) => { } const filesize = el.querySelector('.bb-view-pdf-dialog-file-size'); - filesize.textContent = getFilesize(metadata); + filesize.textContent = getFileSize(metadata); const title = el.querySelector('.bb-view-pdf-dialog-title'); const author = el.querySelector('.bb-view-pdf-dialog-author'); @@ -291,20 +294,26 @@ function parsePdfDate(pdfDateString) { return date; } -const getFilesize = metadata => { +const getFileSize = metadata => { const length = metadata.contentLength; + let val = 0; + let unit = 'B'; if (length < 1024) { - return `${Math.round(length)}B`; + val = length; } else if (length < 1024 * 1024) { - return `${Math.round(length / 1024)}KB`; + unit = 'KB'; + val = length / 1024; } else if (length < 1024 * 1024 * 1024) { - return `${length / 1024 / 1024}MB`; + unit = 'MB'; + val = length / 1024 / 1024; } else if (length < 1024 * 1024 * 1024 * 1024) { - return `${length / 1024 / 1024 / 1024}GB`; + unit = 'GB'; + val = length / 1024 / 1024 / 1024; } + return `${Math.round(val * 100) / 100}${unit}`; } const setObserver = el => {