2
0

pdf_manager.js 6.8 KB

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