diff --git a/web/interfaces.js b/web/interfaces.js index 5f0ad04c6..91ac65d9b 100644 --- a/web/interfaces.js +++ b/web/interfaces.js @@ -83,3 +83,17 @@ ILastScrollSource.prototype = { */ get lastScroll() {}, }; + +/** + * @interface + */ +function IPDFTextLayerFactory() {} +IPDFTextLayerFactory.prototype = { + /** + * @param {HTMLDivElement} textLayerDiv + * @param {number} pageIndex + * @param {PageViewport} viewport + * @returns {TextLayerBuilder} + */ + createTextLayerBuilder: function (textLayerDiv, pageIndex, viewport) {} +}; diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js index 7e6aa17b3..d0a081827 100644 --- a/web/pdf_page_view.js +++ b/web/pdf_page_view.js @@ -29,7 +29,7 @@ * @property {PDFRenderingQueue} renderingQueue - The rendering queue object. * @property {Cache} cache - The page cache. * @property {PDFPageSource} pageSource - * @property {PDFViewer} viewer + * @property {IPDFTextLayerFactory} textLayerFactory */ /** @@ -50,7 +50,7 @@ var PDFPageView = (function PDFPageViewClosure() { var renderingQueue = options.renderingQueue; var cache = options.cache; var pageSource = options.pageSource; - var viewer = options.viewer; + var textLayerFactory = options.textLayerFactory; this.id = id; this.renderingId = 'page' + id; @@ -65,7 +65,7 @@ var PDFPageView = (function PDFPageViewClosure() { this.renderingQueue = renderingQueue; this.cache = cache; this.pageSource = pageSource; - this.viewer = viewer; + this.textLayerFactory = textLayerFactory; this.renderingState = RenderingStates.INITIAL; this.resume = null; @@ -454,7 +454,7 @@ var PDFPageView = (function PDFPageViewClosure() { var textLayerDiv = null; var textLayer = null; - if (!PDFJS.disableTextLayer) { + if (this.textLayerFactory) { textLayerDiv = document.createElement('div'); textLayerDiv.className = 'textLayer'; textLayerDiv.style.width = canvas.style.width; @@ -466,9 +466,9 @@ var PDFPageView = (function PDFPageViewClosure() { div.appendChild(textLayerDiv); } - textLayer = this.viewer.createTextLayerBuilder(textLayerDiv, - this.id - 1, - this.viewport); + textLayer = this.textLayerFactory.createTextLayerBuilder(textLayerDiv, + this.id - 1, + this.viewport); } this.textLayer = textLayer; diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js index bd87a941a..292d765cd 100644 --- a/web/pdf_viewer.js +++ b/web/pdf_viewer.js @@ -236,6 +236,10 @@ var PDFViewer = (function pdfViewer() { var viewport = pdfPage.getViewport(scale * CSS_UNITS); for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) { var pageSource = new PDFPageSource(pdfDocument, pageNum); + var textLayerFactory = null; + if (!PDFJS.disableTextLayer) { + textLayerFactory = this; + } var pageView = new PDFPageView({ container: this.viewer, id: pageNum, @@ -245,7 +249,7 @@ var PDFViewer = (function pdfViewer() { renderingQueue: this.renderingQueue, cache: this.cache, pageSource: pageSource, - viewer: this + textLayerFactory: textLayerFactory }); bindOnAfterDraw(pageView); this.pages.push(pageView); @@ -629,9 +633,9 @@ var PDFViewer = (function pdfViewer() { }, /** - * @param textLayerDiv {HTMLDivElement} - * @param pageIndex {number} - * @param viewport {PageViewport} + * @param {HTMLDivElement} textLayerDiv + * @param {number} pageIndex + * @param {PageViewport} viewport * @returns {TextLayerBuilder} */ createTextLayerBuilder: function (textLayerDiv, pageIndex, viewport) {