pdf_manager.js 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. /* Copyright 2017 Mozilla Foundation
  2. *
  3. * Licensed under the Apache License, Version 2.0 (the "License");
  4. * you may not use this file except in compliance with the License.
  5. * You may obtain a copy of the License at
  6. *
  7. * http://www.apache.org/licenses/LICENSE-2.0
  8. *
  9. * Unless required by applicable law or agreed to in writing, software
  10. * distributed under the License is distributed on an "AS IS" BASIS,
  11. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. * See the License for the specific language governing permissions and
  13. * limitations under the License.
  14. */
  15. 'use strict';
  16. Object.defineProperty(exports, "__esModule", {
  17. value: true
  18. });
  19. exports.NetworkPdfManager = exports.LocalPdfManager = undefined;
  20. var _util = require('../shared/util');
  21. var _chunked_stream = require('./chunked_stream');
  22. var _document = require('./document');
  23. var _stream = require('./stream');
  24. var BasePdfManager = function BasePdfManagerClosure() {
  25. function BasePdfManager() {
  26. throw new Error('Cannot initialize BaseManagerManager');
  27. }
  28. BasePdfManager.prototype = {
  29. get docId() {
  30. return this._docId;
  31. },
  32. get password() {
  33. return this._password;
  34. },
  35. get docBaseUrl() {
  36. var docBaseUrl = null;
  37. if (this._docBaseUrl) {
  38. var absoluteUrl = (0, _util.createValidAbsoluteUrl)(this._docBaseUrl);
  39. if (absoluteUrl) {
  40. docBaseUrl = absoluteUrl.href;
  41. } else {
  42. (0, _util.warn)('Invalid absolute docBaseUrl: "' + this._docBaseUrl + '".');
  43. }
  44. }
  45. return (0, _util.shadow)(this, 'docBaseUrl', docBaseUrl);
  46. },
  47. onLoadedStream: function BasePdfManager_onLoadedStream() {
  48. throw new _util.NotImplementedException();
  49. },
  50. ensureDoc: function BasePdfManager_ensureDoc(prop, args) {
  51. return this.ensure(this.pdfDocument, prop, args);
  52. },
  53. ensureXRef: function BasePdfManager_ensureXRef(prop, args) {
  54. return this.ensure(this.pdfDocument.xref, prop, args);
  55. },
  56. ensureCatalog: function BasePdfManager_ensureCatalog(prop, args) {
  57. return this.ensure(this.pdfDocument.catalog, prop, args);
  58. },
  59. getPage: function BasePdfManager_getPage(pageIndex) {
  60. return this.pdfDocument.getPage(pageIndex);
  61. },
  62. cleanup: function BasePdfManager_cleanup() {
  63. return this.pdfDocument.cleanup();
  64. },
  65. ensure: function BasePdfManager_ensure(obj, prop, args) {
  66. return new _util.NotImplementedException();
  67. },
  68. requestRange: function BasePdfManager_requestRange(begin, end) {
  69. return new _util.NotImplementedException();
  70. },
  71. requestLoadedStream: function BasePdfManager_requestLoadedStream() {
  72. return new _util.NotImplementedException();
  73. },
  74. sendProgressiveData: function BasePdfManager_sendProgressiveData(chunk) {
  75. return new _util.NotImplementedException();
  76. },
  77. updatePassword: function BasePdfManager_updatePassword(password) {
  78. this._password = password;
  79. },
  80. terminate: function BasePdfManager_terminate() {
  81. return new _util.NotImplementedException();
  82. }
  83. };
  84. return BasePdfManager;
  85. }();
  86. var LocalPdfManager = function LocalPdfManagerClosure() {
  87. function LocalPdfManager(docId, data, password, evaluatorOptions, docBaseUrl) {
  88. this._docId = docId;
  89. this._password = password;
  90. this._docBaseUrl = docBaseUrl;
  91. this.evaluatorOptions = evaluatorOptions;
  92. var stream = new _stream.Stream(data);
  93. this.pdfDocument = new _document.PDFDocument(this, stream);
  94. this._loadedStreamCapability = (0, _util.createPromiseCapability)();
  95. this._loadedStreamCapability.resolve(stream);
  96. }
  97. _util.Util.inherit(LocalPdfManager, BasePdfManager, {
  98. ensure: function LocalPdfManager_ensure(obj, prop, args) {
  99. return new Promise(function (resolve, reject) {
  100. try {
  101. var value = obj[prop];
  102. var result;
  103. if (typeof value === 'function') {
  104. result = value.apply(obj, args);
  105. } else {
  106. result = value;
  107. }
  108. resolve(result);
  109. } catch (e) {
  110. reject(e);
  111. }
  112. });
  113. },
  114. requestRange: function LocalPdfManager_requestRange(begin, end) {
  115. return Promise.resolve();
  116. },
  117. requestLoadedStream: function LocalPdfManager_requestLoadedStream() {},
  118. onLoadedStream: function LocalPdfManager_onLoadedStream() {
  119. return this._loadedStreamCapability.promise;
  120. },
  121. terminate: function LocalPdfManager_terminate() {}
  122. });
  123. return LocalPdfManager;
  124. }();
  125. var NetworkPdfManager = function NetworkPdfManagerClosure() {
  126. function NetworkPdfManager(docId, pdfNetworkStream, args, evaluatorOptions, docBaseUrl) {
  127. this._docId = docId;
  128. this._password = args.password;
  129. this._docBaseUrl = docBaseUrl;
  130. this.msgHandler = args.msgHandler;
  131. this.evaluatorOptions = evaluatorOptions;
  132. var params = {
  133. msgHandler: args.msgHandler,
  134. url: args.url,
  135. length: args.length,
  136. disableAutoFetch: args.disableAutoFetch,
  137. rangeChunkSize: args.rangeChunkSize
  138. };
  139. this.streamManager = new _chunked_stream.ChunkedStreamManager(pdfNetworkStream, params);
  140. this.pdfDocument = new _document.PDFDocument(this, this.streamManager.getStream());
  141. }
  142. _util.Util.inherit(NetworkPdfManager, BasePdfManager, {
  143. ensure: function NetworkPdfManager_ensure(obj, prop, args) {
  144. var pdfManager = this;
  145. return new Promise(function (resolve, reject) {
  146. function ensureHelper() {
  147. try {
  148. var result;
  149. var value = obj[prop];
  150. if (typeof value === 'function') {
  151. result = value.apply(obj, args);
  152. } else {
  153. result = value;
  154. }
  155. resolve(result);
  156. } catch (e) {
  157. if (!(e instanceof _util.MissingDataException)) {
  158. reject(e);
  159. return;
  160. }
  161. pdfManager.streamManager.requestRange(e.begin, e.end).then(ensureHelper, reject);
  162. }
  163. }
  164. ensureHelper();
  165. });
  166. },
  167. requestRange: function NetworkPdfManager_requestRange(begin, end) {
  168. return this.streamManager.requestRange(begin, end);
  169. },
  170. requestLoadedStream: function NetworkPdfManager_requestLoadedStream() {
  171. this.streamManager.requestAllChunks();
  172. },
  173. sendProgressiveData: function NetworkPdfManager_sendProgressiveData(chunk) {
  174. this.streamManager.onReceiveData({ chunk: chunk });
  175. },
  176. onLoadedStream: function NetworkPdfManager_onLoadedStream() {
  177. return this.streamManager.onLoadedStream();
  178. },
  179. terminate: function NetworkPdfManager_terminate() {
  180. this.streamManager.abort();
  181. }
  182. });
  183. return NetworkPdfManager;
  184. }();
  185. exports.LocalPdfManager = LocalPdfManager;
  186. exports.NetworkPdfManager = NetworkPdfManager;