preloadStart: function (callback) {
let $this = this;
this.init(function () {
- if ($this.fluidbook.sound.enabled) {
- $this.fluidbook.sound.preloadSounds();
- }
- if ($this.fluidbook.shortLoading) {
- $this.toPreload = [1];
- } else {
- $this.toPreload = [1, 2, 3];
- }
- $this.preloaded = $this.toPreload.slice(0);
- $this.preloadPages(callback);
+ $this.loadPDFForTexts(function () {
+ if ($this.fluidbook.sound.enabled) {
+ $this.fluidbook.sound.preloadSounds();
+ }
+ if ($this.fluidbook.shortLoading) {
+ $this.toPreload = [1];
+ } else {
+ $this.toPreload = [1, 2, 3];
+ }
+ $this.preloaded = $this.toPreload.slice(0);
+ $this.preloadPages(callback);
+ });
});
},
} else {
// Else, we ensure the images are on stage in order to prevent white flash avec page turn.
this.setOnStage(this.backgrounds[i]);
- if (!this.fluidbook.support.svgtocanvas) {
+ if (!this.fluidbook.support.svgtocanvas && !this.fluidbook.support.pdftocanvas) {
this.setOnStage(this.texts[i]);
}
}
};
$('.texture_clinks[data-page="' + page + '"] .contentLink[data-image]').each(function () {
+ if ($(this).is('[data-rollover-hide]')) {
+ return;
+ }
if ((enter && $(this).is('[data-animation-hide]')) || (!enter && $(this).is('[data-animation-hide-on-leave]'))) {
return;
}
// Draw content links
if (clinks !== '') {
$('.texture_clinks[data-page="' + page + '"] .contentLink').each(function () {
+ if ($(this).is('[data-rollover-hide]')) {
+ return;
+ }
if ((enter && $(this).is('[data-animation-hide]')) || (!enter && $(this).is('[data-animation-hide-on-leave]'))) {
return;
}
+
let texture;
let scale = 1;
addTextContents: function (pageNr, callback) {
var t = $("#page_" + pageNr + ' .texts');
- if (this.fluidbook.support.svgtocanvas) {
+ if (this.fluidbook.support.svgtocanvas || this.fluidbook.support.pdftocanvas) {
var html = '<canvas data-page="' + pageNr + '" class="p"></canvas>';
if (!this.fluidbook.mobilefirst.enabled) {
html += '<canvas data-page="' + pageNr + '" class="z"></canvas>';
}
$(t).html(html);
- this.renderTextsCanvas();
+ if (this.fluidbook.support.svgtocanvas) {
+ this.renderTextsCanvas();
+ } else {
+ this.renderPDFTextsCanvas()
+ }
} else {
$(t).append(this.texts[pageNr]);
}
callback();
},
+ loadPDFForTexts: function (callback) {
+ if (this.fluidbook.settings.svgToCanvas != 2) {
+ callback();
+ return;
+ }
+ let $this = this;
+ //PDFJS.disableWorker = true;
+ pdfjsLib.GlobalWorkerOptions.workerSrc = 'pdfjs/build/pdf.worker.js';
+ let loadingTask = pdfjsLib.getDocument('data/' + this.fluidbook.settings.pdfName);
+
+ loadingTask.promise.then(function (pdfDoc) {
+ $this.pdfDoc = pdfDoc;
+ callback();
+ }, function (reason) {
+ console.warn(reason);
+ });
+ },
+
+ renderPDFTextsCanvas: function () {
+ if (!this.fluidbook.support.pdftocanvas) {
+ return;
+ }
+
+ let $this = this;
+ let upscale = 1;
+ var z = window.devicePixelRatio * upscale;
+ var mz = this.fluidbook.zoom.max * window.devicePixelRatio * upscale * 1.1;
+
+ $('canvas[data-page]:not(.thick)').each(function () {
+ if ($this.fluidbook.zoom.zoom === 1 && $(this).hasClass('z')) {
+ return;
+ }
+
+ var page = $(this).data('page');
+
+ var c = $(this).closest('.texts');
+ var tw = $(c).width();
+ var th = $(c).height();
+
+ var w = tw * z;
+ var h = th * z;
+ var wz = tw * mz;
+ var hz = th * mz;
+
+ var canvas = $(this).get(0);
+
+ var cz = $(this).hasClass('z') ? mz : z;
+ var cw = $(this).hasClass('z') ? wz : w;
+ var ch = $(this).hasClass('z') ? hz : h;
+
+ if ($(this).data('w') === cw && $(this).data('h') === ch) {
+ return;
+ }
+
+ canvas.width = cw + 30;
+ canvas.height = ch + 30;
+
+ if (cz === 1) {
+ $(canvas).css('transform', null);
+ } else {
+ $(canvas).css('transform', 'scale(' + (1 / cz) + ')');
+ }
+
+ var ctx = canvas.getContext("2d");
+
+
+ $this.pdfDoc.getPage(page).then(function (pdfPage) {
+ var unscaledViewport = pdfPage.getViewport({scale: 1});
+ var scale = Math.min((ch / unscaledViewport.height), (cw / unscaledViewport.width));
+
+ let renderTask = pdfPage.render({
+ canvasContext: ctx,
+ viewport: pdfPage.getViewport({scale: scale}),
+ annotationMode: 0
+ });
+ renderTask.promise.then(function () {
+ console.log('page ' + page + ' rendered at scale ' + scale, cw, ch, cz, unscaledViewport.width, unscaledViewport.height);
+ });
+ })
+
+ $(this).data('w', cw).data('h', ch);
+
+ // let textThickness = parseFloat($this.fluidbook.settings.textsThickness);
+ //
+ // if (!$(this).hasClass('z') && $this.fluidbook.settings.textsThickness > 1 && $this.fluidbook.settings.textsThicknessPages.indexOf(page) >= 0) {
+ // $('canvas:not(.z)[data-page=' + page + '].thick').remove();
+ // var clone;
+ // for (var i = 1; i <= textThickness; i++) {
+ // clone = $this._cloneCanvas($(this).get(0));
+ // $(clone).insertBefore($(this));
+ // }
+ // var lastOpacity = $this.fluidbook.settings.textsThickness - Math.floor($this.fluidbook.settings.textsThickness);
+ // if (lastOpacity > 0) {
+ // $(clone).css('opacity', lastOpacity);
+ // }
+ // }
+
+ });
+ },
+
renderTextsCanvas: function () {
+
if (!this.fluidbook.support.svgtocanvas) {
return;
}