From b157323eb7cc1ecf56c3b61ecdc9ad2714aba52d Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Tue, 9 Dec 2014 13:43:25 +0000 Subject: [PATCH] defer loading of pdf destinations until required --- .../coffee/ide/pdfng/directives/pdfRenderer.coffee | 13 +++++++++++++ .../coffee/ide/pdfng/directives/pdfViewer.coffee | 10 +++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/services/web/public/coffee/ide/pdfng/directives/pdfRenderer.coffee b/services/web/public/coffee/ide/pdfng/directives/pdfRenderer.coffee index 77fb1d650c..3c324c86dc 100644 --- a/services/web/public/coffee/ide/pdfng/directives/pdfRenderer.coffee +++ b/services/web/public/coffee/ide/pdfng/directives/pdfRenderer.coffee @@ -47,6 +47,19 @@ define [ @document.then (pdfDocument) -> pdfDocument.getDestinations() +# Not available in pdf.js-1.0.712, in later versions there is a direct +# call for this - we should use it as soon as it is available in a +# stable version + getDestination: (dest) -> + @destinations = @document.then (pdfDocument) -> + pdfDocument.getDestinations() + return @destinations.then (all) -> + all[dest] + + @document.then (pdfDocument) -> + pdfDocument.getDestination(dest) + + getPageIndex: (ref) -> @document.then (pdfDocument) -> pdfDocument.getPageIndex(ref).then (idx) -> diff --git a/services/web/public/coffee/ide/pdfng/directives/pdfViewer.coffee b/services/web/public/coffee/ide/pdfng/directives/pdfViewer.coffee index d64cc25264..ba0056cbb9 100644 --- a/services/web/public/coffee/ide/pdfng/directives/pdfViewer.coffee +++ b/services/web/public/coffee/ide/pdfng/directives/pdfViewer.coffee @@ -38,7 +38,6 @@ define [ # after the following promise is resolved $scope.loaded = $q.all({ numPages: $scope.document.getNumPages() - destinations: $scope.document.getDestinations() # get size of first page as default @ scale 1 pdfViewport: $scope.document.getPdfViewport 1, 1 }).then (result) -> @@ -47,7 +46,6 @@ define [ result.pdfViewport.height, result.pdfViewport.width ] - $scope.destinations = result.destinations # console.log 'resolved q.all, page size is', result $scope.numPages = result.numPages $scope.$emit "loaded" @@ -365,11 +363,9 @@ define [ scope.navigateTo = undefined # console.log 'navigate to', newVal # console.log 'look up page num' - scope.loaded.then () -> - # console.log 'destinations are', scope.destinations - r = scope.destinations[newVal.dest] - # console.log 'need to go to', r - # console.log 'page ref is', r[0] + scope.document.getDestination(newVal.dest).then (r) -> + console.log 'need to go to', r + console.log 'page ref is', r[0] scope.document.getPageIndex(r[0]).then (pidx) -> # console.log 'page num is', pidx page = scope.pages[pidx]