render pdf by page, not download all file

pull/574/head
qkqpttgf 2022-03-18 21:21:30 +08:00 committed by GitHub
parent 2b5a3e89d7
commit 3e3141be80
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 48 additions and 11 deletions

View File

@ -489,7 +489,7 @@
<!--GuestUploadStart--><script type="text/javascript" src="//cdn.bootcss.com/spark-md5/3.0.0/spark-md5.min.js"></script><!--GuestUploadEnd--> <!--GuestUploadStart--><script type="text/javascript" src="//cdn.bootcss.com/spark-md5/3.0.0/spark-md5.min.js"></script><!--GuestUploadEnd-->
<!--AliyundriveUploadJsStart--><script src="https://unpkg.com/bignumber.js@9.0.2/bignumber.js"></script> <!--AliyundriveUploadJsStart--><script src="https://unpkg.com/bignumber.js@9.0.2/bignumber.js"></script>
<script src="https://www.unpkg.com/js-sha1@0.6.0/src/sha1.js"></script><!--AliyundriveUploadJsEnd--> <script src="https://www.unpkg.com/js-sha1@0.6.0/src/sha1.js"></script><!--AliyundriveUploadJsEnd-->
<!--IsFileStart--><!--IspdfFileStart--><script src="//cdn.bootcss.com/pdf.js/2.3.200/pdf.min.js"></script><!--IspdfFileEnd--><!--IsFileEnd--> <!--IsFileStart--><!--IspdfFileStart--><script src="https://unpkg.com/pdfjs-dist@2.13.216/build/pdf.min.js"></script><!--IspdfFileEnd--><!--IsFileEnd-->
<!--ListEnd--> <!--ListEnd-->
<script type="text/javascript"> <script type="text/javascript">
function changelanguage(str) function changelanguage(str)
@ -655,26 +655,63 @@
addVideos(["<!--FileEncodeUrl-->"]); addVideos(["<!--FileEncodeUrl-->"]);
<!--IsvideoFileEnd--> <!--IsvideoFileEnd-->
<!--IspdfFileStart--> <!--IspdfFileStart-->
pdfjsLib.GlobalWorkerOptions.workerSrc = '//cdn.bootcss.com/pdf.js/2.3.200/pdf.worker.min.js'; //cdn.bootcss.com/pdf.js/2.3.200/pdf.worker.min.js
pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://unpkg.com/pdfjs-dist@2.13.216/build/pdf.worker.min.js';
var loadingTask = pdfjsLib.getDocument({ var loadingTask = pdfjsLib.getDocument({
url: "<!--FileDownUrl-->", url: "<!--FileDownUrl-->",
cMapUrl: "//cdn.jsdelivr.net/npm/pdfjs-dist@2.2.228/cmaps/", cMapUrl: "https://unpkg.com/pdfjs-dist@2.13.216/cmaps/",
cMapPacked: true, cMapPacked: true,
rangeChunkSize: 65535 disableStream: true,
disableAutoFetch: true,
rangeChunkSize: 65535*16
}); });
loadingTask.promise.then(function(pdf) { loadingTask.promise.then(function(pdf) {
var pagenum = pdf.numPages; var pagenum = pdf.numPages;
var pdfContainer = document.getElementById('pdf-d'); var pdfContainer = document.getElementById('pdf-d');
pdfContainer.innerHTML = ''; pdfContainer.innerHTML = '';
if (pagenum>5) {
var pagepos = 0;
for (var i=1;i<=5;i++) {
var canvasNew = document.createElement('canvas');
canvasNew.id = 'pdf-c'+i;
pdfContainer.appendChild(canvasNew);
renderpage(pdf,i);
}
pagepos = i;
var pdfnextpagebutton = document.createElement('button');
pdfnextpagebutton.id = 'pdfnextpagebutton';
pdfnextpagebutton.innerText = 'Load page ' + pagepos + '-' + (pagepos+4<pagenum?pagepos+4:pagenum) + ' (' + pagenum + ')';
pdfnextpagebutton.setAttribute('onclick', "this.style.display = 'none';");
pdfContainer.appendChild(pdfnextpagebutton);
var pdfWaitNextPage = setInterval(function(){
//console.log(document.documentElement.scrollTop + ", " + document.body.scrollHeight);
if (pdfnextpagebutton.style.display=='none') {
for (var i=pagepos;i<(pagepos+5<pagenum?pagepos+5:pagenum);i++) {
var canvasNew = document.createElement('canvas');
canvasNew.id = 'pdf-c'+i;
pdfContainer.appendChild(canvasNew);
renderpage(pdf,i);
}
pagepos = i;
if (pagepos<pagenum) {
pdfnextpagebutton.innerText = 'Load page ' + pagepos + '-' + (pagepos+5<pagenum?pagepos+5:pagenum) + ' (' + pagenum + ')';
pdfnextpagebutton.style.display ='';
pdfContainer.appendChild(pdfnextpagebutton);
} else {
clearInterval(pdfWaitNextPage);
}
}
}, 1000);
} else {
for (var i=1;i<=pagenum;i++) { for (var i=1;i<=pagenum;i++) {
var canvasNew = document.createElement('canvas'); var canvasNew = document.createElement('canvas');
canvasNew.id = 'pdf-c'+i; canvasNew.id = 'pdf-c'+i;
pdfContainer.appendChild(canvasNew); pdfContainer.appendChild(canvasNew);
renderpage(pdf,i); renderpage(pdf,i);
} }
}
}); });
function renderpage(pdf,i) function renderpage(pdf,i) {
{
pdf.getPage(i).then(function(page) { pdf.getPage(i).then(function(page) {
var scale = 1.5; var scale = 1.5;
var viewport = page.getViewport({ scale: scale, }); var viewport = page.getViewport({ scale: scale, });