यदि मैं आपकी समस्या को अच्छी तरह से समझता हूं, तो मेरे पास समाधान हो सकता है। जब मैंने पिछले या अगले बटन पर बहुत तेजी से क्लिक किया था, तो कैनवास में रीफ्रेश करने का समय नहीं था, और दो (या अधिक) पृष्ठों को खींचा गया था, यह अपठनीय था। मेरी pdf.js फ़ाइल में
render: function PDFPageProxy_render(params) {
this.renderInProgress = true;
var promise = new Promise();
var stats = this.stats;
stats.time('Overall');
// If there is no displayReadyPromise yet, then the operatorList was never
// requested before. Make the request and create the promise.
if (!this.displayReadyPromise) {
this.displayReadyPromise = new Promise();
this.destroyed = false;
this.stats.time('Page Request');
this.transport.messageHandler.send('RenderPageRequest', {
pageIndex: this.pageNumber - 1
});
}
var self = this;
function complete(error) {
self.renderInProgress = false;
stop = false;
if (self.destroyed || self.cleanupAfterRender) {
delete self.displayReadyPromise;
delete self.operatorList;
self.objs.clear();
}
if (error)
promise.reject(error);
else
promise.resolve();
}
var continueCallback = params.continueCallback;
//etc.
(:
var stop = false;
function goPrevious() {
if (pageNum > 1 && !stop)
{
stop = true;
pageNum--;
renderPage(pageNum);
}
}
function goNext() {
if (pageNum < pdfDoc.numPages && !stop)
{
stop = true;
pageNum++;
renderPage(pageNum);
}
}
मैं भी pdf.js फ़ाइल में समारोह प्रस्तुत करना संशोधित किया है:
समस्या को हल करने के लिए, मैं निम्नलिखित कोड का उपयोग , यह लाइन 2563 और 25 9 6 के बीच है)।
नतीजतन, पिछला पृष्ठ पूरी तरह से खींचा जाने तक कोई नया पृष्ठ तैयार नहीं किया जाएगा, भले ही आप पिछले/अगले बटन पर बहुत तेज़ी से क्लिक करें!
एक अन्य समाधान पिछले ड्राइंग रद्द करने के लिए हो सकता है:
function renderPage(num) {
pdfDoc.getPage(num).then(function(page) {
// canvas resize
viewport = page.getViewport(ratio);
canvas.height = viewport.height;
canvas.width = viewport.width;
// draw the page into the canvas
var pageTimestamp = new Date().getTime();
timestamp = pageTimestamp;
var renderContext = {
canvasContext: ctx,
viewport: viewport,
continueCallback: function(cont) {
if(timestamp != pageTimestamp) {
return;
}
cont();
}
};
page.render(renderContext);
// update page numbers
document.getElementById('page_num').textContent = pageNum;
document.getElementById('page_count').textContent = pdfDoc.numPages;
});
}
मुझे आशा है कि यह आप में मदद मिलेगी, और मेरे अंग्रेजी के लिए खेद;) एक अच्छा दिन
मैं इस की कोशिश की है और यह पहले से बेहतर काम करने के लिए लग रहा था, लेकिन मैं अभी भी इस मुद्दे का सामना करना पड़ता है, जबकि भी fast.I पर क्लिक करता है, तो आप का सामना कर रहे पता नहीं है यह भी। काश मैं बटन को अक्षम कर सकता हूं जब तक कैनवास पूरी तरह से लोड नहीं हो जाता, मैंने window.onload() का उपयोग करने की कोशिश की, कैनवास लोड करने में लंबा समय नहीं ले रहा है। Pdf.js द्वारा पूर्ण viewer.html में रोकथाम की कार्यक्षमता है, यह पता नहीं लगा सकता कि उन्होंने यह कैसे किया। – sss
मैंने केवल आपके पहले समाधान की कोशिश की है, मुझे दूसरे को देखने दें। आपके प्रयास के लिए बहुत बहुत धन्यवाद और आपका अंग्रेजी बहुत अच्छा है। :) – sss
मैंने पिछली ड्राइंग को रद्द करने का प्रयास किया, हालांकि टाइमस्टैम्प = पेज टिमस्टैम्प; एक त्रुटि टाइमस्टैम्प को अपरिभाषित किया जा रहा था, इसलिए मैंने कोड को var timestamp = pageTimestamp में बदल दिया; और अब यह कभी भी (timestamp! = pageTimestamp) स्थिति के अंदर नहीं आता है क्योंकि वे हमेशा बराबर होते हैं। मैं क्या गलत कर रहा हूं ? अग्रिम में फिर से धन्यवाद। :) – sss