Просмотр исходного кода

defer loading of pdf destinations until required

Brian Gough 12 лет назад
Родитель
Сommit
b157323eb7

+ 13 - 0
services/web/public/coffee/ide/pdfng/directives/pdfRenderer.coffee

@@ -47,6 +47,19 @@ define [
 				@document.then (pdfDocument) ->
 				@document.then (pdfDocument) ->
 					pdfDocument.getDestinations()
 					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) ->
 			getPageIndex: (ref) ->
 				@document.then (pdfDocument) ->
 				@document.then (pdfDocument) ->
 					pdfDocument.getPageIndex(ref).then (idx) ->
 					pdfDocument.getPageIndex(ref).then (idx) ->

+ 3 - 7
services/web/public/coffee/ide/pdfng/directives/pdfViewer.coffee

@@ -38,7 +38,6 @@ define [
 			# after the following promise is resolved
 			# after the following promise is resolved
 			$scope.loaded = $q.all({
 			$scope.loaded = $q.all({
 				numPages: $scope.document.getNumPages()
 				numPages: $scope.document.getNumPages()
-				destinations: $scope.document.getDestinations()
 				# get size of first page as default @ scale 1
 				# get size of first page as default @ scale 1
 				pdfViewport: $scope.document.getPdfViewport 1, 1
 				pdfViewport: $scope.document.getPdfViewport 1, 1
 				}).then (result) ->
 				}).then (result) ->
@@ -47,7 +46,6 @@ define [
 						result.pdfViewport.height,
 						result.pdfViewport.height,
 						result.pdfViewport.width
 						result.pdfViewport.width
 					]
 					]
-					$scope.destinations = result.destinations
 					# console.log 'resolved q.all, page size is', result
 					# console.log 'resolved q.all, page size is', result
 					$scope.numPages = result.numPages
 					$scope.numPages = result.numPages
 					$scope.$emit "loaded"
 					$scope.$emit "loaded"
@@ -365,11 +363,9 @@ define [
 					scope.navigateTo = undefined
 					scope.navigateTo = undefined
 					# console.log 'navigate to', newVal
 					# console.log 'navigate to', newVal
 					# console.log 'look up page num'
 					# 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) ->
 						scope.document.getPageIndex(r[0]).then (pidx) ->
 							# console.log 'page num is', pidx
 							# console.log 'page num is', pidx
 							page = scope.pages[pidx]
 							page = scope.pages[pidx]