Sto provando a leggere un intero documento .pdf utilizzando PDF.js e quindi il rendering di tutte le pagine su una singola tela.Rendering .pdf su singola tela utilizzando pdf.js e ImageData
La mia idea: rendere ogni pagina su una tela e ottenere ImageData (context.getImageData()), deselezionare la tela fare la pagina successiva. Conservo tutti i ImageDatas in un array e una volta che tutte le pagine sono lì, voglio mettere tutti gli ImageDatas dall'array su una singola tela.
var pdf = null;
PDFJS.disableWorker = true;
var pages = new Array();
//Prepare some things
var canvas = document.getElementById('cv');
var context = canvas.getContext('2d');
var scale = 1.5;
PDFJS.getDocument(url).then(function getPdfHelloWorld(_pdf) {
pdf = _pdf;
//Render all the pages on a single canvas
for(var i = 1; i <= pdf.numPages; i ++){
pdf.getPage(i).then(function getPage(page){
var viewport = page.getViewport(scale);
canvas.width = viewport.width;
canvas.height = viewport.height;
page.render({canvasContext: context, viewport: viewport});
pages[i-1] = context.getImageData(0, 0, canvas.width, canvas.height);
context.clearRect(0, 0, canvas.width, canvas.height);
p.Out("pre-rendered page " + i);
});
}
//Now we have all 'dem Pages in "pages" and need to render 'em out
canvas.height = 0;
var start = 0;
for(var i = 0; i < pages.length; i++){
if(canvas.width < pages[i].width) canvas.width = pages[i].width;
canvas.height = canvas.height + pages[i].height;
context.putImageData(pages[i], 0, start);
start += pages[i].height;
}
});
Quindi dal modo in cui capisco cosa dovrebbe funzionare, giusto? Quando lo eseguo, finisco con la tela che è grande abbastanza per contenere tutte le pagine del pdf ma non mostra il pdf ...
Grazie per l'aiuto.
La compensazione di contenuti davvero si è rivelato essere un problema grazie ^^ –
@markE, Ho provato a soluzione, ma non ha funzionato. Tutto ciò di cui ho bisogno è usare l'esempio di Helloworld per visualizzare tutte le pagine pdf (il progetto pdf.js è troppo complicato e non si adatta alle mie esigenze). Consiglieresti alcune correzioni? –
Molti/tutti i browser impongono un [limite di dimensioni massime] (http://stackoverflow.com/questions/6081483/maximum-size-of-a-canvas-element) su elementi canvas, quindi per PDF sufficientemente grandi, ha vinto ' t lavorare comunque. Ultimamente ho lottato con tutto questo, e la soluzione migliore IMO era, come suggerivi, di mostrare una pagina alla volta. – Marxama