2
0

api.js 72 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389
  1. /**
  2. * @licstart The following is the entire license notice for the
  3. * Javascript code in this page
  4. *
  5. * Copyright 2018 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.getDocument = getDocument;
  27. exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;
  28. exports.build = exports.version = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.LoopbackPort = void 0;
  29. var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
  30. var _util = require("../shared/util");
  31. var _dom_utils = require("./dom_utils");
  32. var _font_loader = require("./font_loader");
  33. var _api_compatibility = require("./api_compatibility");
  34. var _canvas = require("./canvas");
  35. var _global_scope = _interopRequireDefault(require("../shared/global_scope"));
  36. var _worker_options = require("./worker_options");
  37. var _message_handler = require("../shared/message_handler");
  38. var _metadata = require("./metadata");
  39. var _transport_stream = require("./transport_stream");
  40. var _webgl = require("./webgl");
  41. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  42. function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
  43. function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
  44. function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
  45. function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
  46. function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
  47. function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
  48. function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
  49. function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
  50. function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
  51. function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
  52. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  53. function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
  54. function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
  55. function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
  56. var DEFAULT_RANGE_CHUNK_SIZE = 65536;
  57. var isWorkerDisabled = false;
  58. var fallbackWorkerSrc;
  59. var fakeWorkerFilesLoader = null;
  60. {
  61. var useRequireEnsure = false;
  62. if (typeof window === 'undefined') {
  63. isWorkerDisabled = true;
  64. if (typeof require.ensure === 'undefined') {
  65. require.ensure = require('node-ensure');
  66. }
  67. useRequireEnsure = true;
  68. } else if (typeof require !== 'undefined' && typeof require.ensure === 'function') {
  69. useRequireEnsure = true;
  70. }
  71. if (typeof requirejs !== 'undefined' && requirejs.toUrl) {
  72. fallbackWorkerSrc = requirejs.toUrl('pdfjs-dist/build/pdf.worker.js');
  73. }
  74. var dynamicLoaderSupported = typeof requirejs !== 'undefined' && requirejs.load;
  75. fakeWorkerFilesLoader = useRequireEnsure ? function () {
  76. return new Promise(function (resolve, reject) {
  77. require.ensure([], function () {
  78. try {
  79. var worker;
  80. worker = require('../pdf.worker.js');
  81. resolve(worker.WorkerMessageHandler);
  82. } catch (ex) {
  83. reject(ex);
  84. }
  85. }, reject, 'pdfjsWorker');
  86. });
  87. } : dynamicLoaderSupported ? function () {
  88. return new Promise(function (resolve, reject) {
  89. requirejs(['pdfjs-dist/build/pdf.worker'], function (worker) {
  90. try {
  91. resolve(worker.WorkerMessageHandler);
  92. } catch (ex) {
  93. reject(ex);
  94. }
  95. }, reject);
  96. });
  97. } : null;
  98. if (!fallbackWorkerSrc && (typeof document === "undefined" ? "undefined" : _typeof(document)) === 'object' && 'currentScript' in document) {
  99. var pdfjsFilePath = document.currentScript && document.currentScript.src;
  100. if (pdfjsFilePath) {
  101. fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, '.worker$1$2');
  102. }
  103. }
  104. }
  105. var createPDFNetworkStream;
  106. function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {
  107. createPDFNetworkStream = pdfNetworkStreamFactory;
  108. }
  109. function getDocument(src) {
  110. var task = new PDFDocumentLoadingTask();
  111. var source;
  112. if (typeof src === 'string') {
  113. source = {
  114. url: src
  115. };
  116. } else if ((0, _util.isArrayBuffer)(src)) {
  117. source = {
  118. data: src
  119. };
  120. } else if (src instanceof PDFDataRangeTransport) {
  121. source = {
  122. range: src
  123. };
  124. } else {
  125. if (_typeof(src) !== 'object') {
  126. throw new Error('Invalid parameter in getDocument, ' + 'need either Uint8Array, string or a parameter object');
  127. }
  128. if (!src.url && !src.data && !src.range) {
  129. throw new Error('Invalid parameter object: need either .data, .range or .url');
  130. }
  131. source = src;
  132. }
  133. var params = Object.create(null);
  134. var rangeTransport = null,
  135. worker = null;
  136. for (var key in source) {
  137. if (key === 'url' && typeof window !== 'undefined') {
  138. params[key] = new _util.URL(source[key], window.location).href;
  139. continue;
  140. } else if (key === 'range') {
  141. rangeTransport = source[key];
  142. continue;
  143. } else if (key === 'worker') {
  144. worker = source[key];
  145. continue;
  146. } else if (key === 'data' && !(source[key] instanceof Uint8Array)) {
  147. var pdfBytes = source[key];
  148. if (typeof pdfBytes === 'string') {
  149. params[key] = (0, _util.stringToBytes)(pdfBytes);
  150. } else if (_typeof(pdfBytes) === 'object' && pdfBytes !== null && !isNaN(pdfBytes.length)) {
  151. params[key] = new Uint8Array(pdfBytes);
  152. } else if ((0, _util.isArrayBuffer)(pdfBytes)) {
  153. params[key] = new Uint8Array(pdfBytes);
  154. } else {
  155. throw new Error('Invalid PDF binary data: either typed array, ' + 'string or array-like object is expected in the ' + 'data property.');
  156. }
  157. continue;
  158. }
  159. params[key] = source[key];
  160. }
  161. params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;
  162. params.CMapReaderFactory = params.CMapReaderFactory || _dom_utils.DOMCMapReaderFactory;
  163. params.ignoreErrors = params.stopAtErrors !== true;
  164. params.pdfBug = params.pdfBug === true;
  165. var NativeImageDecoderValues = Object.values(_util.NativeImageDecoding);
  166. if (params.nativeImageDecoderSupport === undefined || !NativeImageDecoderValues.includes(params.nativeImageDecoderSupport)) {
  167. params.nativeImageDecoderSupport = _api_compatibility.apiCompatibilityParams.nativeImageDecoderSupport || _util.NativeImageDecoding.DECODE;
  168. }
  169. if (!Number.isInteger(params.maxImageSize)) {
  170. params.maxImageSize = -1;
  171. }
  172. if (typeof params.isEvalSupported !== 'boolean') {
  173. params.isEvalSupported = true;
  174. }
  175. if (typeof params.disableFontFace !== 'boolean') {
  176. params.disableFontFace = _api_compatibility.apiCompatibilityParams.disableFontFace || false;
  177. }
  178. if (typeof params.disableRange !== 'boolean') {
  179. params.disableRange = false;
  180. }
  181. if (typeof params.disableStream !== 'boolean') {
  182. params.disableStream = false;
  183. }
  184. if (typeof params.disableAutoFetch !== 'boolean') {
  185. params.disableAutoFetch = false;
  186. }
  187. if (typeof params.disableCreateObjectURL !== 'boolean') {
  188. params.disableCreateObjectURL = _api_compatibility.apiCompatibilityParams.disableCreateObjectURL || false;
  189. }
  190. (0, _util.setVerbosityLevel)(params.verbosity);
  191. if (!worker) {
  192. var workerParams = {
  193. postMessageTransfers: params.postMessageTransfers,
  194. verbosity: params.verbosity,
  195. port: _worker_options.GlobalWorkerOptions.workerPort
  196. };
  197. worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);
  198. task._worker = worker;
  199. }
  200. var docId = task.docId;
  201. worker.promise.then(function () {
  202. if (task.destroyed) {
  203. throw new Error('Loading aborted');
  204. }
  205. return _fetchDocument(worker, params, rangeTransport, docId).then(function (workerId) {
  206. if (task.destroyed) {
  207. throw new Error('Loading aborted');
  208. }
  209. var networkStream;
  210. if (rangeTransport) {
  211. networkStream = new _transport_stream.PDFDataTransportStream({
  212. length: params.length,
  213. initialData: params.initialData,
  214. disableRange: params.disableRange,
  215. disableStream: params.disableStream
  216. }, rangeTransport);
  217. } else if (!params.data) {
  218. networkStream = createPDFNetworkStream({
  219. url: params.url,
  220. length: params.length,
  221. httpHeaders: params.httpHeaders,
  222. withCredentials: params.withCredentials,
  223. rangeChunkSize: params.rangeChunkSize,
  224. disableRange: params.disableRange,
  225. disableStream: params.disableStream
  226. });
  227. }
  228. var messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port);
  229. messageHandler.postMessageTransfers = worker.postMessageTransfers;
  230. var transport = new WorkerTransport(messageHandler, task, networkStream, params);
  231. task._transport = transport;
  232. messageHandler.send('Ready', null);
  233. });
  234. }).catch(task._capability.reject);
  235. return task;
  236. }
  237. function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
  238. if (worker.destroyed) {
  239. return Promise.reject(new Error('Worker was destroyed'));
  240. }
  241. if (pdfDataRangeTransport) {
  242. source.length = pdfDataRangeTransport.length;
  243. source.initialData = pdfDataRangeTransport.initialData;
  244. }
  245. return worker.messageHandler.sendWithPromise('GetDocRequest', {
  246. docId: docId,
  247. apiVersion: '2.1.266',
  248. source: {
  249. data: source.data,
  250. url: source.url,
  251. password: source.password,
  252. disableAutoFetch: source.disableAutoFetch,
  253. rangeChunkSize: source.rangeChunkSize,
  254. length: source.length
  255. },
  256. maxImageSize: source.maxImageSize,
  257. disableFontFace: source.disableFontFace,
  258. disableCreateObjectURL: source.disableCreateObjectURL,
  259. postMessageTransfers: worker.postMessageTransfers,
  260. docBaseUrl: source.docBaseUrl,
  261. nativeImageDecoderSupport: source.nativeImageDecoderSupport,
  262. ignoreErrors: source.ignoreErrors,
  263. isEvalSupported: source.isEvalSupported
  264. }).then(function (workerId) {
  265. if (worker.destroyed) {
  266. throw new Error('Worker was destroyed');
  267. }
  268. return workerId;
  269. });
  270. }
  271. var PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() {
  272. var nextDocumentId = 0;
  273. var PDFDocumentLoadingTask =
  274. /*#__PURE__*/
  275. function () {
  276. function PDFDocumentLoadingTask() {
  277. _classCallCheck(this, PDFDocumentLoadingTask);
  278. this._capability = (0, _util.createPromiseCapability)();
  279. this._transport = null;
  280. this._worker = null;
  281. this.docId = 'd' + nextDocumentId++;
  282. this.destroyed = false;
  283. this.onPassword = null;
  284. this.onProgress = null;
  285. this.onUnsupportedFeature = null;
  286. }
  287. _createClass(PDFDocumentLoadingTask, [{
  288. key: "destroy",
  289. value: function destroy() {
  290. var _this = this;
  291. this.destroyed = true;
  292. var transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy();
  293. return transportDestroyed.then(function () {
  294. _this._transport = null;
  295. if (_this._worker) {
  296. _this._worker.destroy();
  297. _this._worker = null;
  298. }
  299. });
  300. }
  301. }, {
  302. key: "then",
  303. value: function then(onFulfilled, onRejected) {
  304. (0, _util.deprecated)('PDFDocumentLoadingTask.then method, ' + 'use the `promise` getter instead.');
  305. return this.promise.then.apply(this.promise, arguments);
  306. }
  307. }, {
  308. key: "promise",
  309. get: function get() {
  310. return this._capability.promise;
  311. }
  312. }]);
  313. return PDFDocumentLoadingTask;
  314. }();
  315. return PDFDocumentLoadingTask;
  316. }();
  317. var PDFDataRangeTransport =
  318. /*#__PURE__*/
  319. function () {
  320. function PDFDataRangeTransport(length, initialData) {
  321. _classCallCheck(this, PDFDataRangeTransport);
  322. this.length = length;
  323. this.initialData = initialData;
  324. this._rangeListeners = [];
  325. this._progressListeners = [];
  326. this._progressiveReadListeners = [];
  327. this._readyCapability = (0, _util.createPromiseCapability)();
  328. }
  329. _createClass(PDFDataRangeTransport, [{
  330. key: "addRangeListener",
  331. value: function addRangeListener(listener) {
  332. this._rangeListeners.push(listener);
  333. }
  334. }, {
  335. key: "addProgressListener",
  336. value: function addProgressListener(listener) {
  337. this._progressListeners.push(listener);
  338. }
  339. }, {
  340. key: "addProgressiveReadListener",
  341. value: function addProgressiveReadListener(listener) {
  342. this._progressiveReadListeners.push(listener);
  343. }
  344. }, {
  345. key: "onDataRange",
  346. value: function onDataRange(begin, chunk) {
  347. var _iteratorNormalCompletion = true;
  348. var _didIteratorError = false;
  349. var _iteratorError = undefined;
  350. try {
  351. for (var _iterator = this._rangeListeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
  352. var listener = _step.value;
  353. listener(begin, chunk);
  354. }
  355. } catch (err) {
  356. _didIteratorError = true;
  357. _iteratorError = err;
  358. } finally {
  359. try {
  360. if (!_iteratorNormalCompletion && _iterator.return != null) {
  361. _iterator.return();
  362. }
  363. } finally {
  364. if (_didIteratorError) {
  365. throw _iteratorError;
  366. }
  367. }
  368. }
  369. }
  370. }, {
  371. key: "onDataProgress",
  372. value: function onDataProgress(loaded) {
  373. var _this2 = this;
  374. this._readyCapability.promise.then(function () {
  375. var _iteratorNormalCompletion2 = true;
  376. var _didIteratorError2 = false;
  377. var _iteratorError2 = undefined;
  378. try {
  379. for (var _iterator2 = _this2._progressListeners[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
  380. var listener = _step2.value;
  381. listener(loaded);
  382. }
  383. } catch (err) {
  384. _didIteratorError2 = true;
  385. _iteratorError2 = err;
  386. } finally {
  387. try {
  388. if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
  389. _iterator2.return();
  390. }
  391. } finally {
  392. if (_didIteratorError2) {
  393. throw _iteratorError2;
  394. }
  395. }
  396. }
  397. });
  398. }
  399. }, {
  400. key: "onDataProgressiveRead",
  401. value: function onDataProgressiveRead(chunk) {
  402. var _this3 = this;
  403. this._readyCapability.promise.then(function () {
  404. var _iteratorNormalCompletion3 = true;
  405. var _didIteratorError3 = false;
  406. var _iteratorError3 = undefined;
  407. try {
  408. for (var _iterator3 = _this3._progressiveReadListeners[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
  409. var listener = _step3.value;
  410. listener(chunk);
  411. }
  412. } catch (err) {
  413. _didIteratorError3 = true;
  414. _iteratorError3 = err;
  415. } finally {
  416. try {
  417. if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
  418. _iterator3.return();
  419. }
  420. } finally {
  421. if (_didIteratorError3) {
  422. throw _iteratorError3;
  423. }
  424. }
  425. }
  426. });
  427. }
  428. }, {
  429. key: "transportReady",
  430. value: function transportReady() {
  431. this._readyCapability.resolve();
  432. }
  433. }, {
  434. key: "requestDataRange",
  435. value: function requestDataRange(begin, end) {
  436. (0, _util.unreachable)('Abstract method PDFDataRangeTransport.requestDataRange');
  437. }
  438. }, {
  439. key: "abort",
  440. value: function abort() {}
  441. }]);
  442. return PDFDataRangeTransport;
  443. }();
  444. exports.PDFDataRangeTransport = PDFDataRangeTransport;
  445. var PDFDocumentProxy =
  446. /*#__PURE__*/
  447. function () {
  448. function PDFDocumentProxy(pdfInfo, transport, loadingTask) {
  449. _classCallCheck(this, PDFDocumentProxy);
  450. this.loadingTask = loadingTask;
  451. this._pdfInfo = pdfInfo;
  452. this._transport = transport;
  453. }
  454. _createClass(PDFDocumentProxy, [{
  455. key: "getPage",
  456. value: function getPage(pageNumber) {
  457. return this._transport.getPage(pageNumber);
  458. }
  459. }, {
  460. key: "getPageIndex",
  461. value: function getPageIndex(ref) {
  462. return this._transport.getPageIndex(ref);
  463. }
  464. }, {
  465. key: "getDestinations",
  466. value: function getDestinations() {
  467. return this._transport.getDestinations();
  468. }
  469. }, {
  470. key: "getDestination",
  471. value: function getDestination(id) {
  472. return this._transport.getDestination(id);
  473. }
  474. }, {
  475. key: "getPageLabels",
  476. value: function getPageLabels() {
  477. return this._transport.getPageLabels();
  478. }
  479. }, {
  480. key: "getPageMode",
  481. value: function getPageMode() {
  482. return this._transport.getPageMode();
  483. }
  484. }, {
  485. key: "getOpenActionDestination",
  486. value: function getOpenActionDestination() {
  487. return this._transport.getOpenActionDestination();
  488. }
  489. }, {
  490. key: "getAttachments",
  491. value: function getAttachments() {
  492. return this._transport.getAttachments();
  493. }
  494. }, {
  495. key: "getJavaScript",
  496. value: function getJavaScript() {
  497. return this._transport.getJavaScript();
  498. }
  499. }, {
  500. key: "getOutline",
  501. value: function getOutline() {
  502. return this._transport.getOutline();
  503. }
  504. }, {
  505. key: "getPermissions",
  506. value: function getPermissions() {
  507. return this._transport.getPermissions();
  508. }
  509. }, {
  510. key: "getMetadata",
  511. value: function getMetadata() {
  512. return this._transport.getMetadata();
  513. }
  514. }, {
  515. key: "getData",
  516. value: function getData() {
  517. return this._transport.getData();
  518. }
  519. }, {
  520. key: "getDownloadInfo",
  521. value: function getDownloadInfo() {
  522. return this._transport.downloadInfoCapability.promise;
  523. }
  524. }, {
  525. key: "getStats",
  526. value: function getStats() {
  527. return this._transport.getStats();
  528. }
  529. }, {
  530. key: "cleanup",
  531. value: function cleanup() {
  532. this._transport.startCleanup();
  533. }
  534. }, {
  535. key: "destroy",
  536. value: function destroy() {
  537. return this.loadingTask.destroy();
  538. }
  539. }, {
  540. key: "numPages",
  541. get: function get() {
  542. return this._pdfInfo.numPages;
  543. }
  544. }, {
  545. key: "fingerprint",
  546. get: function get() {
  547. return this._pdfInfo.fingerprint;
  548. }
  549. }, {
  550. key: "loadingParams",
  551. get: function get() {
  552. return this._transport.loadingParams;
  553. }
  554. }]);
  555. return PDFDocumentProxy;
  556. }();
  557. exports.PDFDocumentProxy = PDFDocumentProxy;
  558. var PDFPageProxy =
  559. /*#__PURE__*/
  560. function () {
  561. function PDFPageProxy(pageIndex, pageInfo, transport) {
  562. var pdfBug = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
  563. _classCallCheck(this, PDFPageProxy);
  564. this.pageIndex = pageIndex;
  565. this._pageInfo = pageInfo;
  566. this._transport = transport;
  567. this._stats = pdfBug ? new _dom_utils.StatTimer() : _dom_utils.DummyStatTimer;
  568. this._pdfBug = pdfBug;
  569. this.commonObjs = transport.commonObjs;
  570. this.objs = new PDFObjects();
  571. this.cleanupAfterRender = false;
  572. this.pendingCleanup = false;
  573. this.intentStates = Object.create(null);
  574. this.destroyed = false;
  575. }
  576. _createClass(PDFPageProxy, [{
  577. key: "getViewport",
  578. value: function getViewport() {
  579. var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  580. scale = _ref.scale,
  581. _ref$rotation = _ref.rotation,
  582. rotation = _ref$rotation === void 0 ? this.rotate : _ref$rotation,
  583. _ref$dontFlip = _ref.dontFlip,
  584. dontFlip = _ref$dontFlip === void 0 ? false : _ref$dontFlip;
  585. if (arguments.length > 1 || typeof arguments[0] === 'number') {
  586. (0, _util.deprecated)('getViewport is called with obsolete arguments.');
  587. scale = arguments[0];
  588. rotation = typeof arguments[1] === 'number' ? arguments[1] : this.rotate;
  589. dontFlip = typeof arguments[2] === 'boolean' ? arguments[2] : false;
  590. }
  591. return new _dom_utils.PageViewport({
  592. viewBox: this.view,
  593. scale: scale,
  594. rotation: rotation,
  595. dontFlip: dontFlip
  596. });
  597. }
  598. }, {
  599. key: "getAnnotations",
  600. value: function getAnnotations() {
  601. var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  602. _ref2$intent = _ref2.intent,
  603. intent = _ref2$intent === void 0 ? null : _ref2$intent;
  604. if (!this.annotationsPromise || this.annotationsIntent !== intent) {
  605. this.annotationsPromise = this._transport.getAnnotations(this.pageIndex, intent);
  606. this.annotationsIntent = intent;
  607. }
  608. return this.annotationsPromise;
  609. }
  610. }, {
  611. key: "render",
  612. value: function render(_ref3) {
  613. var _this4 = this;
  614. var canvasContext = _ref3.canvasContext,
  615. viewport = _ref3.viewport,
  616. _ref3$intent = _ref3.intent,
  617. intent = _ref3$intent === void 0 ? 'display' : _ref3$intent,
  618. _ref3$enableWebGL = _ref3.enableWebGL,
  619. enableWebGL = _ref3$enableWebGL === void 0 ? false : _ref3$enableWebGL,
  620. _ref3$renderInteracti = _ref3.renderInteractiveForms,
  621. renderInteractiveForms = _ref3$renderInteracti === void 0 ? false : _ref3$renderInteracti,
  622. _ref3$transform = _ref3.transform,
  623. transform = _ref3$transform === void 0 ? null : _ref3$transform,
  624. _ref3$imageLayer = _ref3.imageLayer,
  625. imageLayer = _ref3$imageLayer === void 0 ? null : _ref3$imageLayer,
  626. _ref3$canvasFactory = _ref3.canvasFactory,
  627. canvasFactory = _ref3$canvasFactory === void 0 ? null : _ref3$canvasFactory,
  628. _ref3$background = _ref3.background,
  629. background = _ref3$background === void 0 ? null : _ref3$background;
  630. var stats = this._stats;
  631. stats.time('Overall');
  632. this.pendingCleanup = false;
  633. var renderingIntent = intent === 'print' ? 'print' : 'display';
  634. var canvasFactoryInstance = canvasFactory || new _dom_utils.DOMCanvasFactory();
  635. var webGLContext = new _webgl.WebGLContext({
  636. enable: enableWebGL
  637. });
  638. if (!this.intentStates[renderingIntent]) {
  639. this.intentStates[renderingIntent] = Object.create(null);
  640. }
  641. var intentState = this.intentStates[renderingIntent];
  642. if (!intentState.displayReadyCapability) {
  643. intentState.receivingOperatorList = true;
  644. intentState.displayReadyCapability = (0, _util.createPromiseCapability)();
  645. intentState.operatorList = {
  646. fnArray: [],
  647. argsArray: [],
  648. lastChunk: false
  649. };
  650. stats.time('Page Request');
  651. this._transport.messageHandler.send('RenderPageRequest', {
  652. pageIndex: this.pageNumber - 1,
  653. intent: renderingIntent,
  654. renderInteractiveForms: renderInteractiveForms === true
  655. });
  656. }
  657. var complete = function complete(error) {
  658. var i = intentState.renderTasks.indexOf(internalRenderTask);
  659. if (i >= 0) {
  660. intentState.renderTasks.splice(i, 1);
  661. }
  662. if (_this4.cleanupAfterRender) {
  663. _this4.pendingCleanup = true;
  664. }
  665. _this4._tryCleanup();
  666. if (error) {
  667. internalRenderTask.capability.reject(error);
  668. } else {
  669. internalRenderTask.capability.resolve();
  670. }
  671. stats.timeEnd('Rendering');
  672. stats.timeEnd('Overall');
  673. };
  674. var internalRenderTask = new InternalRenderTask({
  675. callback: complete,
  676. params: {
  677. canvasContext: canvasContext,
  678. viewport: viewport,
  679. transform: transform,
  680. imageLayer: imageLayer,
  681. background: background
  682. },
  683. objs: this.objs,
  684. commonObjs: this.commonObjs,
  685. operatorList: intentState.operatorList,
  686. pageNumber: this.pageNumber,
  687. canvasFactory: canvasFactoryInstance,
  688. webGLContext: webGLContext,
  689. useRequestAnimationFrame: renderingIntent !== 'print',
  690. pdfBug: this._pdfBug
  691. });
  692. if (!intentState.renderTasks) {
  693. intentState.renderTasks = [];
  694. }
  695. intentState.renderTasks.push(internalRenderTask);
  696. var renderTask = internalRenderTask.task;
  697. intentState.displayReadyCapability.promise.then(function (transparency) {
  698. if (_this4.pendingCleanup) {
  699. complete();
  700. return;
  701. }
  702. stats.time('Rendering');
  703. internalRenderTask.initializeGraphics(transparency);
  704. internalRenderTask.operatorListChanged();
  705. }).catch(complete);
  706. return renderTask;
  707. }
  708. }, {
  709. key: "getOperatorList",
  710. value: function getOperatorList() {
  711. function operatorListChanged() {
  712. if (intentState.operatorList.lastChunk) {
  713. intentState.opListReadCapability.resolve(intentState.operatorList);
  714. var i = intentState.renderTasks.indexOf(opListTask);
  715. if (i >= 0) {
  716. intentState.renderTasks.splice(i, 1);
  717. }
  718. }
  719. }
  720. var renderingIntent = 'oplist';
  721. if (!this.intentStates[renderingIntent]) {
  722. this.intentStates[renderingIntent] = Object.create(null);
  723. }
  724. var intentState = this.intentStates[renderingIntent];
  725. var opListTask;
  726. if (!intentState.opListReadCapability) {
  727. opListTask = {};
  728. opListTask.operatorListChanged = operatorListChanged;
  729. intentState.receivingOperatorList = true;
  730. intentState.opListReadCapability = (0, _util.createPromiseCapability)();
  731. intentState.renderTasks = [];
  732. intentState.renderTasks.push(opListTask);
  733. intentState.operatorList = {
  734. fnArray: [],
  735. argsArray: [],
  736. lastChunk: false
  737. };
  738. this._stats.time('Page Request');
  739. this._transport.messageHandler.send('RenderPageRequest', {
  740. pageIndex: this.pageIndex,
  741. intent: renderingIntent
  742. });
  743. }
  744. return intentState.opListReadCapability.promise;
  745. }
  746. }, {
  747. key: "streamTextContent",
  748. value: function streamTextContent() {
  749. var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  750. _ref4$normalizeWhites = _ref4.normalizeWhitespace,
  751. normalizeWhitespace = _ref4$normalizeWhites === void 0 ? false : _ref4$normalizeWhites,
  752. _ref4$disableCombineT = _ref4.disableCombineTextItems,
  753. disableCombineTextItems = _ref4$disableCombineT === void 0 ? false : _ref4$disableCombineT;
  754. var TEXT_CONTENT_CHUNK_SIZE = 100;
  755. return this._transport.messageHandler.sendWithStream('GetTextContent', {
  756. pageIndex: this.pageNumber - 1,
  757. normalizeWhitespace: normalizeWhitespace === true,
  758. combineTextItems: disableCombineTextItems !== true
  759. }, {
  760. highWaterMark: TEXT_CONTENT_CHUNK_SIZE,
  761. size: function size(textContent) {
  762. return textContent.items.length;
  763. }
  764. });
  765. }
  766. }, {
  767. key: "getTextContent",
  768. value: function getTextContent() {
  769. var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  770. var readableStream = this.streamTextContent(params);
  771. return new Promise(function (resolve, reject) {
  772. function pump() {
  773. reader.read().then(function (_ref5) {
  774. var _textContent$items;
  775. var value = _ref5.value,
  776. done = _ref5.done;
  777. if (done) {
  778. resolve(textContent);
  779. return;
  780. }
  781. Object.assign(textContent.styles, value.styles);
  782. (_textContent$items = textContent.items).push.apply(_textContent$items, _toConsumableArray(value.items));
  783. pump();
  784. }, reject);
  785. }
  786. var reader = readableStream.getReader();
  787. var textContent = {
  788. items: [],
  789. styles: Object.create(null)
  790. };
  791. pump();
  792. });
  793. }
  794. }, {
  795. key: "_destroy",
  796. value: function _destroy() {
  797. this.destroyed = true;
  798. this._transport.pageCache[this.pageIndex] = null;
  799. var waitOn = [];
  800. Object.keys(this.intentStates).forEach(function (intent) {
  801. if (intent === 'oplist') {
  802. return;
  803. }
  804. var intentState = this.intentStates[intent];
  805. intentState.renderTasks.forEach(function (renderTask) {
  806. var renderCompleted = renderTask.capability.promise.catch(function () {});
  807. waitOn.push(renderCompleted);
  808. renderTask.cancel();
  809. });
  810. }, this);
  811. this.objs.clear();
  812. this.annotationsPromise = null;
  813. this.pendingCleanup = false;
  814. return Promise.all(waitOn);
  815. }
  816. }, {
  817. key: "cleanup",
  818. value: function cleanup() {
  819. var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
  820. this.pendingCleanup = true;
  821. this._tryCleanup(resetStats);
  822. }
  823. }, {
  824. key: "_tryCleanup",
  825. value: function _tryCleanup() {
  826. var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
  827. if (!this.pendingCleanup || Object.keys(this.intentStates).some(function (intent) {
  828. var intentState = this.intentStates[intent];
  829. return intentState.renderTasks.length !== 0 || intentState.receivingOperatorList;
  830. }, this)) {
  831. return;
  832. }
  833. Object.keys(this.intentStates).forEach(function (intent) {
  834. delete this.intentStates[intent];
  835. }, this);
  836. this.objs.clear();
  837. this.annotationsPromise = null;
  838. if (resetStats && this._stats instanceof _dom_utils.StatTimer) {
  839. this._stats = new _dom_utils.StatTimer();
  840. }
  841. this.pendingCleanup = false;
  842. }
  843. }, {
  844. key: "_startRenderPage",
  845. value: function _startRenderPage(transparency, intent) {
  846. var intentState = this.intentStates[intent];
  847. if (intentState.displayReadyCapability) {
  848. intentState.displayReadyCapability.resolve(transparency);
  849. }
  850. }
  851. }, {
  852. key: "_renderPageChunk",
  853. value: function _renderPageChunk(operatorListChunk, intent) {
  854. var intentState = this.intentStates[intent];
  855. for (var i = 0, ii = operatorListChunk.length; i < ii; i++) {
  856. intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);
  857. intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);
  858. }
  859. intentState.operatorList.lastChunk = operatorListChunk.lastChunk;
  860. for (var _i = 0; _i < intentState.renderTasks.length; _i++) {
  861. intentState.renderTasks[_i].operatorListChanged();
  862. }
  863. if (operatorListChunk.lastChunk) {
  864. intentState.receivingOperatorList = false;
  865. this._tryCleanup();
  866. }
  867. }
  868. }, {
  869. key: "pageNumber",
  870. get: function get() {
  871. return this.pageIndex + 1;
  872. }
  873. }, {
  874. key: "rotate",
  875. get: function get() {
  876. return this._pageInfo.rotate;
  877. }
  878. }, {
  879. key: "ref",
  880. get: function get() {
  881. return this._pageInfo.ref;
  882. }
  883. }, {
  884. key: "userUnit",
  885. get: function get() {
  886. return this._pageInfo.userUnit;
  887. }
  888. }, {
  889. key: "view",
  890. get: function get() {
  891. return this._pageInfo.view;
  892. }
  893. }, {
  894. key: "stats",
  895. get: function get() {
  896. return this._stats instanceof _dom_utils.StatTimer ? this._stats : null;
  897. }
  898. }]);
  899. return PDFPageProxy;
  900. }();
  901. exports.PDFPageProxy = PDFPageProxy;
  902. var LoopbackPort =
  903. /*#__PURE__*/
  904. function () {
  905. function LoopbackPort() {
  906. var defer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
  907. _classCallCheck(this, LoopbackPort);
  908. this._listeners = [];
  909. this._defer = defer;
  910. this._deferred = Promise.resolve(undefined);
  911. }
  912. _createClass(LoopbackPort, [{
  913. key: "postMessage",
  914. value: function postMessage(obj, transfers) {
  915. var _this5 = this;
  916. function cloneValue(value) {
  917. if (_typeof(value) !== 'object' || value === null) {
  918. return value;
  919. }
  920. if (cloned.has(value)) {
  921. return cloned.get(value);
  922. }
  923. var buffer, result;
  924. if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) {
  925. var transferable = transfers && transfers.includes(buffer);
  926. if (value === buffer) {
  927. result = value;
  928. } else if (transferable) {
  929. result = new value.constructor(buffer, value.byteOffset, value.byteLength);
  930. } else {
  931. result = new value.constructor(value);
  932. }
  933. cloned.set(value, result);
  934. return result;
  935. }
  936. result = Array.isArray(value) ? [] : {};
  937. cloned.set(value, result);
  938. for (var i in value) {
  939. var desc = void 0,
  940. p = value;
  941. while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {
  942. p = Object.getPrototypeOf(p);
  943. }
  944. if (typeof desc.value === 'undefined' || typeof desc.value === 'function') {
  945. continue;
  946. }
  947. result[i] = cloneValue(desc.value);
  948. }
  949. return result;
  950. }
  951. if (!this._defer) {
  952. this._listeners.forEach(function (listener) {
  953. listener.call(this, {
  954. data: obj
  955. });
  956. }, this);
  957. return;
  958. }
  959. var cloned = new WeakMap();
  960. var e = {
  961. data: cloneValue(obj)
  962. };
  963. this._deferred.then(function () {
  964. _this5._listeners.forEach(function (listener) {
  965. listener.call(this, e);
  966. }, _this5);
  967. });
  968. }
  969. }, {
  970. key: "addEventListener",
  971. value: function addEventListener(name, listener) {
  972. this._listeners.push(listener);
  973. }
  974. }, {
  975. key: "removeEventListener",
  976. value: function removeEventListener(name, listener) {
  977. var i = this._listeners.indexOf(listener);
  978. this._listeners.splice(i, 1);
  979. }
  980. }, {
  981. key: "terminate",
  982. value: function terminate() {
  983. this._listeners = [];
  984. }
  985. }]);
  986. return LoopbackPort;
  987. }();
  988. exports.LoopbackPort = LoopbackPort;
  989. var PDFWorker = function PDFWorkerClosure() {
  990. var pdfWorkerPorts = new WeakMap();
  991. var nextFakeWorkerId = 0;
  992. var fakeWorkerFilesLoadedCapability;
  993. function _getWorkerSrc() {
  994. if (_worker_options.GlobalWorkerOptions.workerSrc) {
  995. return _worker_options.GlobalWorkerOptions.workerSrc;
  996. }
  997. if (typeof fallbackWorkerSrc !== 'undefined') {
  998. return fallbackWorkerSrc;
  999. }
  1000. throw new Error('No "GlobalWorkerOptions.workerSrc" specified.');
  1001. }
  1002. function getMainThreadWorkerMessageHandler() {
  1003. try {
  1004. if (typeof window !== 'undefined') {
  1005. return window.pdfjsWorker && window.pdfjsWorker.WorkerMessageHandler;
  1006. }
  1007. } catch (ex) {}
  1008. return null;
  1009. }
  1010. function setupFakeWorkerGlobal() {
  1011. if (fakeWorkerFilesLoadedCapability) {
  1012. return fakeWorkerFilesLoadedCapability.promise;
  1013. }
  1014. fakeWorkerFilesLoadedCapability = (0, _util.createPromiseCapability)();
  1015. var mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();
  1016. if (mainWorkerMessageHandler) {
  1017. fakeWorkerFilesLoadedCapability.resolve(mainWorkerMessageHandler);
  1018. return fakeWorkerFilesLoadedCapability.promise;
  1019. }
  1020. var loader = fakeWorkerFilesLoader || function () {
  1021. return (0, _dom_utils.loadScript)(_getWorkerSrc()).then(function () {
  1022. return window.pdfjsWorker.WorkerMessageHandler;
  1023. });
  1024. };
  1025. loader().then(fakeWorkerFilesLoadedCapability.resolve, fakeWorkerFilesLoadedCapability.reject);
  1026. return fakeWorkerFilesLoadedCapability.promise;
  1027. }
  1028. function createCDNWrapper(url) {
  1029. var wrapper = 'importScripts(\'' + url + '\');';
  1030. return _util.URL.createObjectURL(new Blob([wrapper]));
  1031. }
  1032. var PDFWorker =
  1033. /*#__PURE__*/
  1034. function () {
  1035. function PDFWorker() {
  1036. var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  1037. _ref6$name = _ref6.name,
  1038. name = _ref6$name === void 0 ? null : _ref6$name,
  1039. _ref6$port = _ref6.port,
  1040. port = _ref6$port === void 0 ? null : _ref6$port,
  1041. _ref6$postMessageTran = _ref6.postMessageTransfers,
  1042. postMessageTransfers = _ref6$postMessageTran === void 0 ? true : _ref6$postMessageTran,
  1043. _ref6$verbosity = _ref6.verbosity,
  1044. verbosity = _ref6$verbosity === void 0 ? (0, _util.getVerbosityLevel)() : _ref6$verbosity;
  1045. _classCallCheck(this, PDFWorker);
  1046. if (port && pdfWorkerPorts.has(port)) {
  1047. throw new Error('Cannot use more than one PDFWorker per port');
  1048. }
  1049. this.name = name;
  1050. this.destroyed = false;
  1051. this.postMessageTransfers = postMessageTransfers !== false;
  1052. this.verbosity = verbosity;
  1053. this._readyCapability = (0, _util.createPromiseCapability)();
  1054. this._port = null;
  1055. this._webWorker = null;
  1056. this._messageHandler = null;
  1057. if (port) {
  1058. pdfWorkerPorts.set(port, this);
  1059. this._initializeFromPort(port);
  1060. return;
  1061. }
  1062. this._initialize();
  1063. }
  1064. _createClass(PDFWorker, [{
  1065. key: "_initializeFromPort",
  1066. value: function _initializeFromPort(port) {
  1067. this._port = port;
  1068. this._messageHandler = new _message_handler.MessageHandler('main', 'worker', port);
  1069. this._messageHandler.on('ready', function () {});
  1070. this._readyCapability.resolve();
  1071. }
  1072. }, {
  1073. key: "_initialize",
  1074. value: function _initialize() {
  1075. var _this6 = this;
  1076. if (typeof Worker !== 'undefined' && !isWorkerDisabled && !getMainThreadWorkerMessageHandler()) {
  1077. var workerSrc = _getWorkerSrc();
  1078. try {
  1079. if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) {
  1080. workerSrc = createCDNWrapper(new _util.URL(workerSrc, window.location).href);
  1081. }
  1082. var worker = new Worker(workerSrc);
  1083. var messageHandler = new _message_handler.MessageHandler('main', 'worker', worker);
  1084. var terminateEarly = function terminateEarly() {
  1085. worker.removeEventListener('error', onWorkerError);
  1086. messageHandler.destroy();
  1087. worker.terminate();
  1088. if (_this6.destroyed) {
  1089. _this6._readyCapability.reject(new Error('Worker was destroyed'));
  1090. } else {
  1091. _this6._setupFakeWorker();
  1092. }
  1093. };
  1094. var onWorkerError = function onWorkerError() {
  1095. if (!_this6._webWorker) {
  1096. terminateEarly();
  1097. }
  1098. };
  1099. worker.addEventListener('error', onWorkerError);
  1100. messageHandler.on('test', function (data) {
  1101. worker.removeEventListener('error', onWorkerError);
  1102. if (_this6.destroyed) {
  1103. terminateEarly();
  1104. return;
  1105. }
  1106. if (data && data.supportTypedArray) {
  1107. _this6._messageHandler = messageHandler;
  1108. _this6._port = worker;
  1109. _this6._webWorker = worker;
  1110. if (!data.supportTransfers) {
  1111. _this6.postMessageTransfers = false;
  1112. }
  1113. _this6._readyCapability.resolve();
  1114. messageHandler.send('configure', {
  1115. verbosity: _this6.verbosity
  1116. });
  1117. } else {
  1118. _this6._setupFakeWorker();
  1119. messageHandler.destroy();
  1120. worker.terminate();
  1121. }
  1122. });
  1123. messageHandler.on('ready', function (data) {
  1124. worker.removeEventListener('error', onWorkerError);
  1125. if (_this6.destroyed) {
  1126. terminateEarly();
  1127. return;
  1128. }
  1129. try {
  1130. sendTest();
  1131. } catch (e) {
  1132. _this6._setupFakeWorker();
  1133. }
  1134. });
  1135. var sendTest = function sendTest() {
  1136. var testObj = new Uint8Array([_this6.postMessageTransfers ? 255 : 0]);
  1137. try {
  1138. messageHandler.send('test', testObj, [testObj.buffer]);
  1139. } catch (ex) {
  1140. (0, _util.info)('Cannot use postMessage transfers');
  1141. testObj[0] = 0;
  1142. messageHandler.send('test', testObj);
  1143. }
  1144. };
  1145. sendTest();
  1146. return;
  1147. } catch (e) {
  1148. (0, _util.info)('The worker has been disabled.');
  1149. }
  1150. }
  1151. this._setupFakeWorker();
  1152. }
  1153. }, {
  1154. key: "_setupFakeWorker",
  1155. value: function _setupFakeWorker() {
  1156. var _this7 = this;
  1157. if (!isWorkerDisabled) {
  1158. (0, _util.warn)('Setting up fake worker.');
  1159. isWorkerDisabled = true;
  1160. }
  1161. setupFakeWorkerGlobal().then(function (WorkerMessageHandler) {
  1162. if (_this7.destroyed) {
  1163. _this7._readyCapability.reject(new Error('Worker was destroyed'));
  1164. return;
  1165. }
  1166. var port = new LoopbackPort();
  1167. _this7._port = port;
  1168. var id = 'fake' + nextFakeWorkerId++;
  1169. var workerHandler = new _message_handler.MessageHandler(id + '_worker', id, port);
  1170. WorkerMessageHandler.setup(workerHandler, port);
  1171. var messageHandler = new _message_handler.MessageHandler(id, id + '_worker', port);
  1172. _this7._messageHandler = messageHandler;
  1173. _this7._readyCapability.resolve();
  1174. }).catch(function (reason) {
  1175. _this7._readyCapability.reject(new Error("Setting up fake worker failed: \"".concat(reason.message, "\".")));
  1176. });
  1177. }
  1178. }, {
  1179. key: "destroy",
  1180. value: function destroy() {
  1181. this.destroyed = true;
  1182. if (this._webWorker) {
  1183. this._webWorker.terminate();
  1184. this._webWorker = null;
  1185. }
  1186. pdfWorkerPorts.delete(this._port);
  1187. this._port = null;
  1188. if (this._messageHandler) {
  1189. this._messageHandler.destroy();
  1190. this._messageHandler = null;
  1191. }
  1192. }
  1193. }, {
  1194. key: "promise",
  1195. get: function get() {
  1196. return this._readyCapability.promise;
  1197. }
  1198. }, {
  1199. key: "port",
  1200. get: function get() {
  1201. return this._port;
  1202. }
  1203. }, {
  1204. key: "messageHandler",
  1205. get: function get() {
  1206. return this._messageHandler;
  1207. }
  1208. }], [{
  1209. key: "fromPort",
  1210. value: function fromPort(params) {
  1211. if (!params || !params.port) {
  1212. throw new Error('PDFWorker.fromPort - invalid method signature.');
  1213. }
  1214. if (pdfWorkerPorts.has(params.port)) {
  1215. return pdfWorkerPorts.get(params.port);
  1216. }
  1217. return new PDFWorker(params);
  1218. }
  1219. }, {
  1220. key: "getWorkerSrc",
  1221. value: function getWorkerSrc() {
  1222. return _getWorkerSrc();
  1223. }
  1224. }]);
  1225. return PDFWorker;
  1226. }();
  1227. return PDFWorker;
  1228. }();
  1229. exports.PDFWorker = PDFWorker;
  1230. var WorkerTransport =
  1231. /*#__PURE__*/
  1232. function () {
  1233. function WorkerTransport(messageHandler, loadingTask, networkStream, params) {
  1234. _classCallCheck(this, WorkerTransport);
  1235. this.messageHandler = messageHandler;
  1236. this.loadingTask = loadingTask;
  1237. this.commonObjs = new PDFObjects();
  1238. this.fontLoader = new _font_loader.FontLoader({
  1239. docId: loadingTask.docId,
  1240. onUnsupportedFeature: this._onUnsupportedFeature.bind(this)
  1241. });
  1242. this._params = params;
  1243. this.CMapReaderFactory = new params.CMapReaderFactory({
  1244. baseUrl: params.cMapUrl,
  1245. isCompressed: params.cMapPacked
  1246. });
  1247. this.destroyed = false;
  1248. this.destroyCapability = null;
  1249. this._passwordCapability = null;
  1250. this._networkStream = networkStream;
  1251. this._fullReader = null;
  1252. this._lastProgress = null;
  1253. this.pageCache = [];
  1254. this.pagePromises = [];
  1255. this.downloadInfoCapability = (0, _util.createPromiseCapability)();
  1256. this.setupMessageHandler();
  1257. }
  1258. _createClass(WorkerTransport, [{
  1259. key: "destroy",
  1260. value: function destroy() {
  1261. var _this8 = this;
  1262. if (this.destroyCapability) {
  1263. return this.destroyCapability.promise;
  1264. }
  1265. this.destroyed = true;
  1266. this.destroyCapability = (0, _util.createPromiseCapability)();
  1267. if (this._passwordCapability) {
  1268. this._passwordCapability.reject(new Error('Worker was destroyed during onPassword callback'));
  1269. }
  1270. var waitOn = [];
  1271. this.pageCache.forEach(function (page) {
  1272. if (page) {
  1273. waitOn.push(page._destroy());
  1274. }
  1275. });
  1276. this.pageCache = [];
  1277. this.pagePromises = [];
  1278. var terminated = this.messageHandler.sendWithPromise('Terminate', null);
  1279. waitOn.push(terminated);
  1280. Promise.all(waitOn).then(function () {
  1281. _this8.fontLoader.clear();
  1282. if (_this8._networkStream) {
  1283. _this8._networkStream.cancelAllRequests();
  1284. }
  1285. if (_this8.messageHandler) {
  1286. _this8.messageHandler.destroy();
  1287. _this8.messageHandler = null;
  1288. }
  1289. _this8.destroyCapability.resolve();
  1290. }, this.destroyCapability.reject);
  1291. return this.destroyCapability.promise;
  1292. }
  1293. }, {
  1294. key: "setupMessageHandler",
  1295. value: function setupMessageHandler() {
  1296. var messageHandler = this.messageHandler,
  1297. loadingTask = this.loadingTask;
  1298. messageHandler.on('GetReader', function (data, sink) {
  1299. var _this9 = this;
  1300. (0, _util.assert)(this._networkStream);
  1301. this._fullReader = this._networkStream.getFullReader();
  1302. this._fullReader.onProgress = function (evt) {
  1303. _this9._lastProgress = {
  1304. loaded: evt.loaded,
  1305. total: evt.total
  1306. };
  1307. };
  1308. sink.onPull = function () {
  1309. _this9._fullReader.read().then(function (_ref7) {
  1310. var value = _ref7.value,
  1311. done = _ref7.done;
  1312. if (done) {
  1313. sink.close();
  1314. return;
  1315. }
  1316. (0, _util.assert)((0, _util.isArrayBuffer)(value));
  1317. sink.enqueue(new Uint8Array(value), 1, [value]);
  1318. }).catch(function (reason) {
  1319. sink.error(reason);
  1320. });
  1321. };
  1322. sink.onCancel = function (reason) {
  1323. _this9._fullReader.cancel(reason);
  1324. };
  1325. }, this);
  1326. messageHandler.on('ReaderHeadersReady', function (data) {
  1327. var _this10 = this;
  1328. var headersCapability = (0, _util.createPromiseCapability)();
  1329. var fullReader = this._fullReader;
  1330. fullReader.headersReady.then(function () {
  1331. if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {
  1332. if (_this10._lastProgress && loadingTask.onProgress) {
  1333. loadingTask.onProgress(_this10._lastProgress);
  1334. }
  1335. fullReader.onProgress = function (evt) {
  1336. if (loadingTask.onProgress) {
  1337. loadingTask.onProgress({
  1338. loaded: evt.loaded,
  1339. total: evt.total
  1340. });
  1341. }
  1342. };
  1343. }
  1344. headersCapability.resolve({
  1345. isStreamingSupported: fullReader.isStreamingSupported,
  1346. isRangeSupported: fullReader.isRangeSupported,
  1347. contentLength: fullReader.contentLength
  1348. });
  1349. }, headersCapability.reject);
  1350. return headersCapability.promise;
  1351. }, this);
  1352. messageHandler.on('GetRangeReader', function (data, sink) {
  1353. (0, _util.assert)(this._networkStream);
  1354. var rangeReader = this._networkStream.getRangeReader(data.begin, data.end);
  1355. sink.onPull = function () {
  1356. rangeReader.read().then(function (_ref8) {
  1357. var value = _ref8.value,
  1358. done = _ref8.done;
  1359. if (done) {
  1360. sink.close();
  1361. return;
  1362. }
  1363. (0, _util.assert)((0, _util.isArrayBuffer)(value));
  1364. sink.enqueue(new Uint8Array(value), 1, [value]);
  1365. }).catch(function (reason) {
  1366. sink.error(reason);
  1367. });
  1368. };
  1369. sink.onCancel = function (reason) {
  1370. rangeReader.cancel(reason);
  1371. };
  1372. }, this);
  1373. messageHandler.on('GetDoc', function (_ref9) {
  1374. var pdfInfo = _ref9.pdfInfo;
  1375. this.numPages = pdfInfo.numPages;
  1376. this.pdfDocument = new PDFDocumentProxy(pdfInfo, this, loadingTask);
  1377. loadingTask._capability.resolve(this.pdfDocument);
  1378. }, this);
  1379. messageHandler.on('PasswordRequest', function (exception) {
  1380. var _this11 = this;
  1381. this._passwordCapability = (0, _util.createPromiseCapability)();
  1382. if (loadingTask.onPassword) {
  1383. var updatePassword = function updatePassword(password) {
  1384. _this11._passwordCapability.resolve({
  1385. password: password
  1386. });
  1387. };
  1388. try {
  1389. loadingTask.onPassword(updatePassword, exception.code);
  1390. } catch (ex) {
  1391. this._passwordCapability.reject(ex);
  1392. }
  1393. } else {
  1394. this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code));
  1395. }
  1396. return this._passwordCapability.promise;
  1397. }, this);
  1398. messageHandler.on('PasswordException', function (exception) {
  1399. loadingTask._capability.reject(new _util.PasswordException(exception.message, exception.code));
  1400. }, this);
  1401. messageHandler.on('InvalidPDF', function (exception) {
  1402. loadingTask._capability.reject(new _util.InvalidPDFException(exception.message));
  1403. }, this);
  1404. messageHandler.on('MissingPDF', function (exception) {
  1405. loadingTask._capability.reject(new _util.MissingPDFException(exception.message));
  1406. }, this);
  1407. messageHandler.on('UnexpectedResponse', function (exception) {
  1408. loadingTask._capability.reject(new _util.UnexpectedResponseException(exception.message, exception.status));
  1409. }, this);
  1410. messageHandler.on('UnknownError', function (exception) {
  1411. loadingTask._capability.reject(new _util.UnknownErrorException(exception.message, exception.details));
  1412. }, this);
  1413. messageHandler.on('DataLoaded', function (data) {
  1414. if (loadingTask.onProgress) {
  1415. loadingTask.onProgress({
  1416. loaded: data.length,
  1417. total: data.length
  1418. });
  1419. }
  1420. this.downloadInfoCapability.resolve(data);
  1421. }, this);
  1422. messageHandler.on('StartRenderPage', function (data) {
  1423. if (this.destroyed) {
  1424. return;
  1425. }
  1426. var page = this.pageCache[data.pageIndex];
  1427. page._stats.timeEnd('Page Request');
  1428. page._startRenderPage(data.transparency, data.intent);
  1429. }, this);
  1430. messageHandler.on('RenderPageChunk', function (data) {
  1431. if (this.destroyed) {
  1432. return;
  1433. }
  1434. var page = this.pageCache[data.pageIndex];
  1435. page._renderPageChunk(data.operatorList, data.intent);
  1436. }, this);
  1437. messageHandler.on('commonobj', function (data) {
  1438. var _this12 = this;
  1439. if (this.destroyed) {
  1440. return;
  1441. }
  1442. var _data = _slicedToArray(data, 3),
  1443. id = _data[0],
  1444. type = _data[1],
  1445. exportedData = _data[2];
  1446. if (this.commonObjs.has(id)) {
  1447. return;
  1448. }
  1449. switch (type) {
  1450. case 'Font':
  1451. var params = this._params;
  1452. if ('error' in exportedData) {
  1453. var exportedError = exportedData.error;
  1454. (0, _util.warn)("Error during font loading: ".concat(exportedError));
  1455. this.commonObjs.resolve(id, exportedError);
  1456. break;
  1457. }
  1458. var fontRegistry = null;
  1459. if (params.pdfBug && _global_scope.default.FontInspector && _global_scope.default.FontInspector.enabled) {
  1460. fontRegistry = {
  1461. registerFont: function registerFont(font, url) {
  1462. _global_scope.default['FontInspector'].fontAdded(font, url);
  1463. }
  1464. };
  1465. }
  1466. var font = new _font_loader.FontFaceObject(exportedData, {
  1467. isEvalSupported: params.isEvalSupported,
  1468. disableFontFace: params.disableFontFace,
  1469. ignoreErrors: params.ignoreErrors,
  1470. onUnsupportedFeature: this._onUnsupportedFeature.bind(this),
  1471. fontRegistry: fontRegistry
  1472. });
  1473. this.fontLoader.bind(font).then(function () {
  1474. _this12.commonObjs.resolve(id, font);
  1475. }, function (reason) {
  1476. messageHandler.sendWithPromise('FontFallback', {
  1477. id: id
  1478. }).finally(function () {
  1479. _this12.commonObjs.resolve(id, font);
  1480. });
  1481. });
  1482. break;
  1483. case 'FontPath':
  1484. this.commonObjs.resolve(id, exportedData);
  1485. break;
  1486. default:
  1487. throw new Error("Got unknown common object type ".concat(type));
  1488. }
  1489. }, this);
  1490. messageHandler.on('obj', function (data) {
  1491. if (this.destroyed) {
  1492. return;
  1493. }
  1494. var _data2 = _slicedToArray(data, 4),
  1495. id = _data2[0],
  1496. pageIndex = _data2[1],
  1497. type = _data2[2],
  1498. imageData = _data2[3];
  1499. var pageProxy = this.pageCache[pageIndex];
  1500. if (pageProxy.objs.has(id)) {
  1501. return;
  1502. }
  1503. switch (type) {
  1504. case 'JpegStream':
  1505. return new Promise(function (resolve, reject) {
  1506. var img = new Image();
  1507. img.onload = function () {
  1508. resolve(img);
  1509. };
  1510. img.onerror = function () {
  1511. reject(new Error('Error during JPEG image loading'));
  1512. };
  1513. img.src = imageData;
  1514. }).then(function (img) {
  1515. pageProxy.objs.resolve(id, img);
  1516. });
  1517. case 'Image':
  1518. pageProxy.objs.resolve(id, imageData);
  1519. var MAX_IMAGE_SIZE_TO_STORE = 8000000;
  1520. if (imageData && 'data' in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {
  1521. pageProxy.cleanupAfterRender = true;
  1522. }
  1523. break;
  1524. default:
  1525. throw new Error("Got unknown object type ".concat(type));
  1526. }
  1527. }, this);
  1528. messageHandler.on('DocProgress', function (data) {
  1529. if (this.destroyed) {
  1530. return;
  1531. }
  1532. if (loadingTask.onProgress) {
  1533. loadingTask.onProgress({
  1534. loaded: data.loaded,
  1535. total: data.total
  1536. });
  1537. }
  1538. }, this);
  1539. messageHandler.on('PageError', function (data) {
  1540. if (this.destroyed) {
  1541. return;
  1542. }
  1543. var page = this.pageCache[data.pageNum - 1];
  1544. var intentState = page.intentStates[data.intent];
  1545. if (intentState.displayReadyCapability) {
  1546. intentState.displayReadyCapability.reject(data.error);
  1547. } else {
  1548. throw new Error(data.error);
  1549. }
  1550. if (intentState.operatorList) {
  1551. intentState.operatorList.lastChunk = true;
  1552. for (var i = 0; i < intentState.renderTasks.length; i++) {
  1553. intentState.renderTasks[i].operatorListChanged();
  1554. }
  1555. }
  1556. }, this);
  1557. messageHandler.on('UnsupportedFeature', this._onUnsupportedFeature, this);
  1558. messageHandler.on('JpegDecode', function (data) {
  1559. if (this.destroyed) {
  1560. return Promise.reject(new Error('Worker was destroyed'));
  1561. }
  1562. if (typeof document === 'undefined') {
  1563. return Promise.reject(new Error('"document" is not defined.'));
  1564. }
  1565. var _data3 = _slicedToArray(data, 2),
  1566. imageUrl = _data3[0],
  1567. components = _data3[1];
  1568. if (components !== 3 && components !== 1) {
  1569. return Promise.reject(new Error('Only 3 components or 1 component can be returned'));
  1570. }
  1571. return new Promise(function (resolve, reject) {
  1572. var img = new Image();
  1573. img.onload = function () {
  1574. var width = img.width;
  1575. var height = img.height;
  1576. var size = width * height;
  1577. var rgbaLength = size * 4;
  1578. var buf = new Uint8ClampedArray(size * components);
  1579. var tmpCanvas = document.createElement('canvas');
  1580. tmpCanvas.width = width;
  1581. tmpCanvas.height = height;
  1582. var tmpCtx = tmpCanvas.getContext('2d');
  1583. tmpCtx.drawImage(img, 0, 0);
  1584. var data = tmpCtx.getImageData(0, 0, width, height).data;
  1585. if (components === 3) {
  1586. for (var i = 0, j = 0; i < rgbaLength; i += 4, j += 3) {
  1587. buf[j] = data[i];
  1588. buf[j + 1] = data[i + 1];
  1589. buf[j + 2] = data[i + 2];
  1590. }
  1591. } else if (components === 1) {
  1592. for (var _i2 = 0, _j = 0; _i2 < rgbaLength; _i2 += 4, _j++) {
  1593. buf[_j] = data[_i2];
  1594. }
  1595. }
  1596. resolve({
  1597. data: buf,
  1598. width: width,
  1599. height: height
  1600. });
  1601. };
  1602. img.onerror = function () {
  1603. reject(new Error('JpegDecode failed to load image'));
  1604. };
  1605. img.src = imageUrl;
  1606. });
  1607. }, this);
  1608. messageHandler.on('FetchBuiltInCMap', function (data) {
  1609. if (this.destroyed) {
  1610. return Promise.reject(new Error('Worker was destroyed'));
  1611. }
  1612. return this.CMapReaderFactory.fetch({
  1613. name: data.name
  1614. });
  1615. }, this);
  1616. }
  1617. }, {
  1618. key: "_onUnsupportedFeature",
  1619. value: function _onUnsupportedFeature(_ref10) {
  1620. var featureId = _ref10.featureId;
  1621. if (this.destroyed) {
  1622. return;
  1623. }
  1624. if (this.loadingTask.onUnsupportedFeature) {
  1625. this.loadingTask.onUnsupportedFeature(featureId);
  1626. }
  1627. }
  1628. }, {
  1629. key: "getData",
  1630. value: function getData() {
  1631. return this.messageHandler.sendWithPromise('GetData', null);
  1632. }
  1633. }, {
  1634. key: "getPage",
  1635. value: function getPage(pageNumber) {
  1636. var _this13 = this;
  1637. if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this.numPages) {
  1638. return Promise.reject(new Error('Invalid page request'));
  1639. }
  1640. var pageIndex = pageNumber - 1;
  1641. if (pageIndex in this.pagePromises) {
  1642. return this.pagePromises[pageIndex];
  1643. }
  1644. var promise = this.messageHandler.sendWithPromise('GetPage', {
  1645. pageIndex: pageIndex
  1646. }).then(function (pageInfo) {
  1647. if (_this13.destroyed) {
  1648. throw new Error('Transport destroyed');
  1649. }
  1650. var page = new PDFPageProxy(pageIndex, pageInfo, _this13, _this13._params.pdfBug);
  1651. _this13.pageCache[pageIndex] = page;
  1652. return page;
  1653. });
  1654. this.pagePromises[pageIndex] = promise;
  1655. return promise;
  1656. }
  1657. }, {
  1658. key: "getPageIndex",
  1659. value: function getPageIndex(ref) {
  1660. return this.messageHandler.sendWithPromise('GetPageIndex', {
  1661. ref: ref
  1662. }).catch(function (reason) {
  1663. return Promise.reject(new Error(reason));
  1664. });
  1665. }
  1666. }, {
  1667. key: "getAnnotations",
  1668. value: function getAnnotations(pageIndex, intent) {
  1669. return this.messageHandler.sendWithPromise('GetAnnotations', {
  1670. pageIndex: pageIndex,
  1671. intent: intent
  1672. });
  1673. }
  1674. }, {
  1675. key: "getDestinations",
  1676. value: function getDestinations() {
  1677. return this.messageHandler.sendWithPromise('GetDestinations', null);
  1678. }
  1679. }, {
  1680. key: "getDestination",
  1681. value: function getDestination(id) {
  1682. if (typeof id !== 'string') {
  1683. return Promise.reject(new Error('Invalid destination request.'));
  1684. }
  1685. return this.messageHandler.sendWithPromise('GetDestination', {
  1686. id: id
  1687. });
  1688. }
  1689. }, {
  1690. key: "getPageLabels",
  1691. value: function getPageLabels() {
  1692. return this.messageHandler.sendWithPromise('GetPageLabels', null);
  1693. }
  1694. }, {
  1695. key: "getPageMode",
  1696. value: function getPageMode() {
  1697. return this.messageHandler.sendWithPromise('GetPageMode', null);
  1698. }
  1699. }, {
  1700. key: "getOpenActionDestination",
  1701. value: function getOpenActionDestination() {
  1702. return this.messageHandler.sendWithPromise('getOpenActionDestination', null);
  1703. }
  1704. }, {
  1705. key: "getAttachments",
  1706. value: function getAttachments() {
  1707. return this.messageHandler.sendWithPromise('GetAttachments', null);
  1708. }
  1709. }, {
  1710. key: "getJavaScript",
  1711. value: function getJavaScript() {
  1712. return this.messageHandler.sendWithPromise('GetJavaScript', null);
  1713. }
  1714. }, {
  1715. key: "getOutline",
  1716. value: function getOutline() {
  1717. return this.messageHandler.sendWithPromise('GetOutline', null);
  1718. }
  1719. }, {
  1720. key: "getPermissions",
  1721. value: function getPermissions() {
  1722. return this.messageHandler.sendWithPromise('GetPermissions', null);
  1723. }
  1724. }, {
  1725. key: "getMetadata",
  1726. value: function getMetadata() {
  1727. var _this14 = this;
  1728. return this.messageHandler.sendWithPromise('GetMetadata', null).then(function (results) {
  1729. return {
  1730. info: results[0],
  1731. metadata: results[1] ? new _metadata.Metadata(results[1]) : null,
  1732. contentDispositionFilename: _this14._fullReader ? _this14._fullReader.filename : null
  1733. };
  1734. });
  1735. }
  1736. }, {
  1737. key: "getStats",
  1738. value: function getStats() {
  1739. return this.messageHandler.sendWithPromise('GetStats', null);
  1740. }
  1741. }, {
  1742. key: "startCleanup",
  1743. value: function startCleanup() {
  1744. var _this15 = this;
  1745. this.messageHandler.sendWithPromise('Cleanup', null).then(function () {
  1746. for (var i = 0, ii = _this15.pageCache.length; i < ii; i++) {
  1747. var page = _this15.pageCache[i];
  1748. if (page) {
  1749. page.cleanup();
  1750. }
  1751. }
  1752. _this15.commonObjs.clear();
  1753. _this15.fontLoader.clear();
  1754. });
  1755. }
  1756. }, {
  1757. key: "loadingParams",
  1758. get: function get() {
  1759. var params = this._params;
  1760. return (0, _util.shadow)(this, 'loadingParams', {
  1761. disableAutoFetch: params.disableAutoFetch,
  1762. disableCreateObjectURL: params.disableCreateObjectURL,
  1763. disableFontFace: params.disableFontFace,
  1764. nativeImageDecoderSupport: params.nativeImageDecoderSupport
  1765. });
  1766. }
  1767. }]);
  1768. return WorkerTransport;
  1769. }();
  1770. var PDFObjects =
  1771. /*#__PURE__*/
  1772. function () {
  1773. function PDFObjects() {
  1774. _classCallCheck(this, PDFObjects);
  1775. this._objs = Object.create(null);
  1776. }
  1777. _createClass(PDFObjects, [{
  1778. key: "_ensureObj",
  1779. value: function _ensureObj(objId) {
  1780. if (this._objs[objId]) {
  1781. return this._objs[objId];
  1782. }
  1783. return this._objs[objId] = {
  1784. capability: (0, _util.createPromiseCapability)(),
  1785. data: null,
  1786. resolved: false
  1787. };
  1788. }
  1789. }, {
  1790. key: "get",
  1791. value: function get(objId) {
  1792. var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
  1793. if (callback) {
  1794. this._ensureObj(objId).capability.promise.then(callback);
  1795. return null;
  1796. }
  1797. var obj = this._objs[objId];
  1798. if (!obj || !obj.resolved) {
  1799. throw new Error("Requesting object that isn't resolved yet ".concat(objId, "."));
  1800. }
  1801. return obj.data;
  1802. }
  1803. }, {
  1804. key: "has",
  1805. value: function has(objId) {
  1806. var obj = this._objs[objId];
  1807. return obj ? obj.resolved : false;
  1808. }
  1809. }, {
  1810. key: "resolve",
  1811. value: function resolve(objId, data) {
  1812. var obj = this._ensureObj(objId);
  1813. obj.resolved = true;
  1814. obj.data = data;
  1815. obj.capability.resolve(data);
  1816. }
  1817. }, {
  1818. key: "clear",
  1819. value: function clear() {
  1820. this._objs = Object.create(null);
  1821. }
  1822. }]);
  1823. return PDFObjects;
  1824. }();
  1825. var RenderTask =
  1826. /*#__PURE__*/
  1827. function () {
  1828. function RenderTask(internalRenderTask) {
  1829. _classCallCheck(this, RenderTask);
  1830. this._internalRenderTask = internalRenderTask;
  1831. this.onContinue = null;
  1832. }
  1833. _createClass(RenderTask, [{
  1834. key: "cancel",
  1835. value: function cancel() {
  1836. this._internalRenderTask.cancel();
  1837. }
  1838. }, {
  1839. key: "then",
  1840. value: function then(onFulfilled, onRejected) {
  1841. (0, _util.deprecated)('RenderTask.then method, use the `promise` getter instead.');
  1842. return this.promise.then.apply(this.promise, arguments);
  1843. }
  1844. }, {
  1845. key: "promise",
  1846. get: function get() {
  1847. return this._internalRenderTask.capability.promise;
  1848. }
  1849. }]);
  1850. return RenderTask;
  1851. }();
  1852. var InternalRenderTask = function InternalRenderTaskClosure() {
  1853. var canvasInRendering = new WeakSet();
  1854. var InternalRenderTask =
  1855. /*#__PURE__*/
  1856. function () {
  1857. function InternalRenderTask(_ref11) {
  1858. var callback = _ref11.callback,
  1859. params = _ref11.params,
  1860. objs = _ref11.objs,
  1861. commonObjs = _ref11.commonObjs,
  1862. operatorList = _ref11.operatorList,
  1863. pageNumber = _ref11.pageNumber,
  1864. canvasFactory = _ref11.canvasFactory,
  1865. webGLContext = _ref11.webGLContext,
  1866. _ref11$useRequestAnim = _ref11.useRequestAnimationFrame,
  1867. useRequestAnimationFrame = _ref11$useRequestAnim === void 0 ? false : _ref11$useRequestAnim,
  1868. _ref11$pdfBug = _ref11.pdfBug,
  1869. pdfBug = _ref11$pdfBug === void 0 ? false : _ref11$pdfBug;
  1870. _classCallCheck(this, InternalRenderTask);
  1871. this.callback = callback;
  1872. this.params = params;
  1873. this.objs = objs;
  1874. this.commonObjs = commonObjs;
  1875. this.operatorListIdx = null;
  1876. this.operatorList = operatorList;
  1877. this.pageNumber = pageNumber;
  1878. this.canvasFactory = canvasFactory;
  1879. this.webGLContext = webGLContext;
  1880. this._pdfBug = pdfBug;
  1881. this.running = false;
  1882. this.graphicsReadyCallback = null;
  1883. this.graphicsReady = false;
  1884. this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== 'undefined';
  1885. this.cancelled = false;
  1886. this.capability = (0, _util.createPromiseCapability)();
  1887. this.task = new RenderTask(this);
  1888. this._continueBound = this._continue.bind(this);
  1889. this._scheduleNextBound = this._scheduleNext.bind(this);
  1890. this._nextBound = this._next.bind(this);
  1891. this._canvas = params.canvasContext.canvas;
  1892. }
  1893. _createClass(InternalRenderTask, [{
  1894. key: "initializeGraphics",
  1895. value: function initializeGraphics() {
  1896. var transparency = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
  1897. if (this.cancelled) {
  1898. return;
  1899. }
  1900. if (this._canvas) {
  1901. if (canvasInRendering.has(this._canvas)) {
  1902. throw new Error('Cannot use the same canvas during multiple render() operations. ' + 'Use different canvas or ensure previous operations were ' + 'cancelled or completed.');
  1903. }
  1904. canvasInRendering.add(this._canvas);
  1905. }
  1906. if (this._pdfBug && _global_scope.default.StepperManager && _global_scope.default.StepperManager.enabled) {
  1907. this.stepper = _global_scope.default.StepperManager.create(this.pageNumber - 1);
  1908. this.stepper.init(this.operatorList);
  1909. this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();
  1910. }
  1911. var _this$params = this.params,
  1912. canvasContext = _this$params.canvasContext,
  1913. viewport = _this$params.viewport,
  1914. transform = _this$params.transform,
  1915. imageLayer = _this$params.imageLayer,
  1916. background = _this$params.background;
  1917. this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.webGLContext, imageLayer);
  1918. this.gfx.beginDrawing({
  1919. transform: transform,
  1920. viewport: viewport,
  1921. transparency: transparency,
  1922. background: background
  1923. });
  1924. this.operatorListIdx = 0;
  1925. this.graphicsReady = true;
  1926. if (this.graphicsReadyCallback) {
  1927. this.graphicsReadyCallback();
  1928. }
  1929. }
  1930. }, {
  1931. key: "cancel",
  1932. value: function cancel() {
  1933. var error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
  1934. this.running = false;
  1935. this.cancelled = true;
  1936. if (this.gfx) {
  1937. this.gfx.endDrawing();
  1938. }
  1939. if (this._canvas) {
  1940. canvasInRendering.delete(this._canvas);
  1941. }
  1942. this.callback(error || new _dom_utils.RenderingCancelledException("Rendering cancelled, page ".concat(this.pageNumber), 'canvas'));
  1943. }
  1944. }, {
  1945. key: "operatorListChanged",
  1946. value: function operatorListChanged() {
  1947. if (!this.graphicsReady) {
  1948. if (!this.graphicsReadyCallback) {
  1949. this.graphicsReadyCallback = this._continueBound;
  1950. }
  1951. return;
  1952. }
  1953. if (this.stepper) {
  1954. this.stepper.updateOperatorList(this.operatorList);
  1955. }
  1956. if (this.running) {
  1957. return;
  1958. }
  1959. this._continue();
  1960. }
  1961. }, {
  1962. key: "_continue",
  1963. value: function _continue() {
  1964. this.running = true;
  1965. if (this.cancelled) {
  1966. return;
  1967. }
  1968. if (this.task.onContinue) {
  1969. this.task.onContinue(this._scheduleNextBound);
  1970. } else {
  1971. this._scheduleNext();
  1972. }
  1973. }
  1974. }, {
  1975. key: "_scheduleNext",
  1976. value: function _scheduleNext() {
  1977. var _this16 = this;
  1978. if (this._useRequestAnimationFrame) {
  1979. window.requestAnimationFrame(function () {
  1980. _this16._nextBound().catch(_this16.cancel.bind(_this16));
  1981. });
  1982. } else {
  1983. Promise.resolve().then(this._nextBound).catch(this.cancel.bind(this));
  1984. }
  1985. }
  1986. }, {
  1987. key: "_next",
  1988. value: function () {
  1989. var _next2 = _asyncToGenerator(
  1990. /*#__PURE__*/
  1991. _regenerator.default.mark(function _callee() {
  1992. return _regenerator.default.wrap(function _callee$(_context) {
  1993. while (1) {
  1994. switch (_context.prev = _context.next) {
  1995. case 0:
  1996. if (!this.cancelled) {
  1997. _context.next = 2;
  1998. break;
  1999. }
  2000. return _context.abrupt("return");
  2001. case 2:
  2002. this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);
  2003. if (this.operatorListIdx === this.operatorList.argsArray.length) {
  2004. this.running = false;
  2005. if (this.operatorList.lastChunk) {
  2006. this.gfx.endDrawing();
  2007. if (this._canvas) {
  2008. canvasInRendering.delete(this._canvas);
  2009. }
  2010. this.callback();
  2011. }
  2012. }
  2013. case 4:
  2014. case "end":
  2015. return _context.stop();
  2016. }
  2017. }
  2018. }, _callee, this);
  2019. }));
  2020. function _next() {
  2021. return _next2.apply(this, arguments);
  2022. }
  2023. return _next;
  2024. }()
  2025. }]);
  2026. return InternalRenderTask;
  2027. }();
  2028. return InternalRenderTask;
  2029. }();
  2030. var version = '2.1.266';
  2031. exports.version = version;
  2032. var build = '81f5835c';
  2033. exports.build = build;