pdfjs-dist 2.0.487 → 2.1.266

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pdfjs-dist might be problematic. Click here for more details.

Files changed (161) hide show
  1. package/bower.json +1 -1
  2. package/build/pdf.js +15564 -9476
  3. package/build/pdf.js.map +1 -1
  4. package/build/pdf.min.js +1 -1
  5. package/build/pdf.worker.js +46644 -36309
  6. package/build/pdf.worker.js.map +1 -1
  7. package/build/pdf.worker.min.js +1 -1
  8. package/external/url/url-lib.js +627 -0
  9. package/image_decoders/pdf.image_decoders.js +11430 -0
  10. package/image_decoders/pdf.image_decoders.js.map +1 -0
  11. package/image_decoders/pdf.image_decoders.min.js +1 -0
  12. package/lib/core/annotation.js +406 -131
  13. package/lib/core/arithmetic_decoder.js +275 -245
  14. package/lib/core/bidi.js +65 -6
  15. package/lib/core/ccitt.js +173 -18
  16. package/lib/core/ccitt_stream.js +15 -6
  17. package/lib/core/cff_parser.js +376 -53
  18. package/lib/core/charsets.js +5 -4
  19. package/lib/core/chunked_stream.js +387 -149
  20. package/lib/core/cmap.js +310 -75
  21. package/lib/core/colorspace.js +874 -594
  22. package/lib/core/crypto.js +290 -45
  23. package/lib/core/document.js +545 -260
  24. package/lib/core/encodings.js +19 -10
  25. package/lib/core/evaluator.js +725 -147
  26. package/lib/core/font_renderer.js +360 -91
  27. package/lib/core/fonts.js +791 -186
  28. package/lib/core/function.js +284 -71
  29. package/lib/core/glyphlist.js +3 -2
  30. package/lib/core/image.js +168 -61
  31. package/lib/core/jbig2.js +479 -66
  32. package/lib/core/jbig2_stream.js +19 -8
  33. package/lib/core/jpeg_stream.js +38 -13
  34. package/lib/core/jpg.js +252 -29
  35. package/lib/core/jpx.js +396 -6
  36. package/lib/core/jpx_stream.js +18 -6
  37. package/lib/core/metrics.js +4 -4
  38. package/lib/core/murmurhash3.js +24 -6
  39. package/lib/core/obj.js +1137 -475
  40. package/lib/core/operator_list.js +108 -6
  41. package/lib/core/parser.js +321 -68
  42. package/lib/core/pattern.js +145 -13
  43. package/lib/core/pdf_manager.js +321 -133
  44. package/lib/core/primitives.js +75 -22
  45. package/lib/core/ps_parser.js +134 -45
  46. package/lib/core/standard_fonts.js +10 -10
  47. package/lib/core/stream.js +313 -34
  48. package/lib/core/type1_parser.js +143 -13
  49. package/lib/core/unicode.js +31 -4
  50. package/lib/core/worker.js +210 -66
  51. package/lib/display/annotation_layer.js +361 -123
  52. package/lib/display/api.js +1454 -729
  53. package/lib/display/api_compatibility.js +11 -13
  54. package/lib/display/canvas.js +324 -29
  55. package/lib/display/content_disposition.js +83 -32
  56. package/lib/display/dom_utils.js +226 -41
  57. package/lib/display/fetch_stream.js +208 -84
  58. package/lib/display/font_loader.js +465 -236
  59. package/lib/display/metadata.js +38 -16
  60. package/lib/display/network.js +216 -51
  61. package/lib/display/network_utils.js +32 -19
  62. package/lib/display/node_stream.js +352 -169
  63. package/lib/display/pattern_helper.js +58 -7
  64. package/lib/display/svg.js +242 -29
  65. package/lib/display/text_layer.js +132 -18
  66. package/lib/display/transport_stream.js +171 -42
  67. package/lib/display/webgl.js +64 -18
  68. package/lib/display/worker_options.js +5 -4
  69. package/lib/display/xml_parser.js +166 -53
  70. package/lib/examples/node/domstubs.js +57 -4
  71. package/lib/pdf.js +21 -4
  72. package/lib/pdf.worker.js +5 -3
  73. package/lib/shared/compatibility.js +158 -564
  74. package/lib/shared/global_scope.js +2 -2
  75. package/lib/shared/is_node.js +4 -4
  76. package/lib/shared/message_handler.js +521 -0
  77. package/lib/shared/streams_polyfill.js +21 -17
  78. package/lib/shared/url_polyfill.js +56 -0
  79. package/lib/shared/util.js +295 -650
  80. package/lib/test/unit/annotation_spec.js +629 -345
  81. package/lib/test/unit/api_spec.js +555 -253
  82. package/lib/test/unit/bidi_spec.js +7 -7
  83. package/lib/test/unit/cff_parser_spec.js +40 -11
  84. package/lib/test/unit/clitests_helper.js +9 -7
  85. package/lib/test/unit/cmap_spec.js +80 -26
  86. package/lib/test/unit/colorspace_spec.js +99 -52
  87. package/lib/test/unit/crypto_spec.js +17 -5
  88. package/lib/test/unit/custom_spec.js +41 -53
  89. package/lib/test/unit/display_svg_spec.js +33 -17
  90. package/lib/test/unit/document_spec.js +3 -3
  91. package/lib/test/unit/dom_utils_spec.js +9 -9
  92. package/lib/test/unit/encodings_spec.js +25 -45
  93. package/lib/test/unit/evaluator_spec.js +34 -9
  94. package/lib/test/unit/function_spec.js +17 -5
  95. package/lib/test/unit/jasmine-boot.js +31 -18
  96. package/lib/test/unit/{util_stream_spec.js → message_handler_spec.js} +41 -69
  97. package/lib/test/unit/metadata_spec.js +71 -11
  98. package/lib/test/unit/murmurhash3_spec.js +3 -3
  99. package/lib/test/unit/network_spec.js +20 -5
  100. package/lib/test/unit/network_utils_spec.js +41 -14
  101. package/lib/test/unit/node_stream_spec.js +51 -27
  102. package/lib/test/unit/parser_spec.js +35 -8
  103. package/lib/test/unit/pdf_find_controller_spec.js +230 -0
  104. package/lib/test/unit/pdf_find_utils_spec.js +63 -0
  105. package/lib/test/unit/pdf_history_spec.js +21 -9
  106. package/lib/test/unit/primitives_spec.js +24 -4
  107. package/lib/test/unit/stream_spec.js +12 -4
  108. package/lib/test/unit/test_utils.js +90 -27
  109. package/lib/test/unit/testreporter.js +21 -3
  110. package/lib/test/unit/type1_parser_spec.js +8 -6
  111. package/lib/test/unit/ui_utils_spec.js +452 -14
  112. package/lib/test/unit/unicode_spec.js +14 -11
  113. package/lib/test/unit/util_spec.js +131 -9
  114. package/lib/web/annotation_layer_builder.js +39 -22
  115. package/lib/web/app.js +1240 -582
  116. package/lib/web/app_options.js +71 -41
  117. package/lib/web/base_viewer.js +508 -179
  118. package/lib/web/chromecom.js +261 -117
  119. package/lib/web/debugger.js +166 -22
  120. package/lib/web/download_manager.js +31 -13
  121. package/lib/web/firefox_print_service.js +17 -9
  122. package/lib/web/firefoxcom.js +283 -79
  123. package/lib/web/genericcom.js +89 -30
  124. package/lib/web/genericl10n.js +142 -30
  125. package/lib/web/grab_to_pan.js +26 -4
  126. package/lib/web/interfaces.js +170 -47
  127. package/lib/web/overlay_manager.js +235 -85
  128. package/lib/web/password_prompt.js +21 -13
  129. package/lib/web/pdf_attachment_viewer.js +38 -18
  130. package/lib/web/pdf_cursor_tools.js +39 -16
  131. package/lib/web/pdf_document_properties.js +80 -30
  132. package/lib/web/pdf_find_bar.js +84 -40
  133. package/lib/web/pdf_find_controller.js +495 -184
  134. package/lib/web/pdf_find_utils.js +111 -0
  135. package/lib/web/pdf_history.js +190 -53
  136. package/lib/web/pdf_link_service.js +137 -76
  137. package/lib/web/pdf_outline_viewer.js +73 -22
  138. package/lib/web/pdf_page_view.js +196 -63
  139. package/lib/web/pdf_presentation_mode.js +99 -34
  140. package/lib/web/pdf_print_service.js +57 -11
  141. package/lib/web/pdf_rendering_queue.js +27 -5
  142. package/lib/web/pdf_sidebar.js +120 -67
  143. package/lib/web/pdf_sidebar_resizer.js +42 -16
  144. package/lib/web/pdf_single_page_viewer.js +74 -66
  145. package/lib/web/pdf_thumbnail_view.js +103 -32
  146. package/lib/web/pdf_thumbnail_viewer.js +64 -24
  147. package/lib/web/pdf_viewer.component.js +112 -32
  148. package/lib/web/pdf_viewer.js +91 -52
  149. package/lib/web/preferences.js +275 -80
  150. package/lib/web/secondary_toolbar.js +165 -40
  151. package/lib/web/text_layer_builder.js +162 -65
  152. package/lib/web/toolbar.js +78 -43
  153. package/lib/web/ui_utils.js +462 -136
  154. package/lib/web/view_history.js +215 -67
  155. package/lib/web/viewer_compatibility.js +4 -13
  156. package/package.json +5 -4
  157. package/web/pdf_viewer.css +58 -1
  158. package/web/pdf_viewer.js +6346 -3919
  159. package/web/pdf_viewer.js.map +1 -1
  160. package/lib/test/unit/fonts_spec.js +0 -81
  161. package/lib/web/dom_events.js +0 -137
@@ -2,7 +2,7 @@
2
2
  * @licstart The following is the entire license notice for the
3
3
  * Javascript code in this page
4
4
  *
5
- * Copyright 2017 Mozilla Foundation
5
+ * Copyright 2018 Mozilla Foundation
6
6
  *
7
7
  * Licensed under the Apache License, Version 2.0 (the "License");
8
8
  * you may not use this file except in compliance with the License.
@@ -19,33 +19,38 @@
19
19
  * @licend The above is the entire license notice for the
20
20
  * Javascript code in this page
21
21
  */
22
- 'use strict';
22
+ "use strict";
23
23
 
24
24
  Object.defineProperty(exports, "__esModule", {
25
25
  value: true
26
26
  });
27
- exports.PDFCursorTools = exports.CursorTool = undefined;
27
+ exports.PDFCursorTools = exports.CursorTool = void 0;
28
28
 
29
- var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
30
-
31
- var _grab_to_pan = require('./grab_to_pan');
29
+ var _grab_to_pan = require("./grab_to_pan");
32
30
 
33
31
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
34
32
 
33
+ 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); } }
34
+
35
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
36
+
35
37
  var CursorTool = {
36
38
  SELECT: 0,
37
39
  HAND: 1,
38
40
  ZOOM: 2
39
41
  };
42
+ exports.CursorTool = CursorTool;
40
43
 
41
- var PDFCursorTools = function () {
44
+ var PDFCursorTools =
45
+ /*#__PURE__*/
46
+ function () {
42
47
  function PDFCursorTools(_ref) {
43
48
  var _this = this;
44
49
 
45
50
  var container = _ref.container,
46
51
  eventBus = _ref.eventBus,
47
52
  _ref$cursorToolOnLoad = _ref.cursorToolOnLoad,
48
- cursorToolOnLoad = _ref$cursorToolOnLoad === undefined ? CursorTool.SELECT : _ref$cursorToolOnLoad;
53
+ cursorToolOnLoad = _ref$cursorToolOnLoad === void 0 ? CursorTool.SELECT : _ref$cursorToolOnLoad;
49
54
 
50
55
  _classCallCheck(this, PDFCursorTools);
51
56
 
@@ -53,52 +58,66 @@ var PDFCursorTools = function () {
53
58
  this.eventBus = eventBus;
54
59
  this.active = CursorTool.SELECT;
55
60
  this.activeBeforePresentationMode = null;
56
- this.handTool = new _grab_to_pan.GrabToPan({ element: this.container });
61
+ this.handTool = new _grab_to_pan.GrabToPan({
62
+ element: this.container
63
+ });
64
+
57
65
  this._addEventListeners();
66
+
58
67
  Promise.resolve().then(function () {
59
68
  _this.switchTool(cursorToolOnLoad);
60
69
  });
61
70
  }
62
71
 
63
72
  _createClass(PDFCursorTools, [{
64
- key: 'switchTool',
73
+ key: "switchTool",
65
74
  value: function switchTool(tool) {
66
75
  var _this2 = this;
67
76
 
68
77
  if (this.activeBeforePresentationMode !== null) {
69
78
  return;
70
79
  }
80
+
71
81
  if (tool === this.active) {
72
82
  return;
73
83
  }
84
+
74
85
  var disableActiveTool = function disableActiveTool() {
75
86
  switch (_this2.active) {
76
87
  case CursorTool.SELECT:
77
88
  break;
89
+
78
90
  case CursorTool.HAND:
79
91
  _this2.handTool.deactivate();
92
+
80
93
  break;
94
+
81
95
  case CursorTool.ZOOM:
82
96
  }
83
97
  };
98
+
84
99
  switch (tool) {
85
100
  case CursorTool.SELECT:
86
101
  disableActiveTool();
87
102
  break;
103
+
88
104
  case CursorTool.HAND:
89
105
  disableActiveTool();
90
106
  this.handTool.activate();
91
107
  break;
108
+
92
109
  case CursorTool.ZOOM:
93
110
  default:
94
- console.error('switchTool: "' + tool + '" is an unsupported value.');
111
+ console.error("switchTool: \"".concat(tool, "\" is an unsupported value."));
95
112
  return;
96
113
  }
114
+
97
115
  this.active = tool;
116
+
98
117
  this._dispatchEvent();
99
118
  }
100
119
  }, {
101
- key: '_dispatchEvent',
120
+ key: "_dispatchEvent",
102
121
  value: function _dispatchEvent() {
103
122
  this.eventBus.dispatch('cursortoolchanged', {
104
123
  source: this,
@@ -106,7 +125,7 @@ var PDFCursorTools = function () {
106
125
  });
107
126
  }
108
127
  }, {
109
- key: '_addEventListeners',
128
+ key: "_addEventListeners",
110
129
  value: function _addEventListeners() {
111
130
  var _this3 = this;
112
131
 
@@ -117,20 +136,25 @@ var PDFCursorTools = function () {
117
136
  if (evt.switchInProgress) {
118
137
  return;
119
138
  }
120
- var previouslyActive = void 0;
139
+
140
+ var previouslyActive;
141
+
121
142
  if (evt.active) {
122
143
  previouslyActive = _this3.active;
144
+
123
145
  _this3.switchTool(CursorTool.SELECT);
146
+
124
147
  _this3.activeBeforePresentationMode = previouslyActive;
125
148
  } else {
126
149
  previouslyActive = _this3.activeBeforePresentationMode;
127
150
  _this3.activeBeforePresentationMode = null;
151
+
128
152
  _this3.switchTool(previouslyActive);
129
153
  }
130
154
  });
131
155
  }
132
156
  }, {
133
- key: 'activeTool',
157
+ key: "activeTool",
134
158
  get: function get() {
135
159
  return this.active;
136
160
  }
@@ -139,5 +163,4 @@ var PDFCursorTools = function () {
139
163
  return PDFCursorTools;
140
164
  }();
141
165
 
142
- exports.CursorTool = CursorTool;
143
166
  exports.PDFCursorTools = PDFCursorTools;
@@ -2,7 +2,7 @@
2
2
  * @licstart The following is the entire license notice for the
3
3
  * Javascript code in this page
4
4
  *
5
- * Copyright 2017 Mozilla Foundation
5
+ * Copyright 2018 Mozilla Foundation
6
6
  *
7
7
  * Licensed under the Apache License, Version 2.0 (the "License");
8
8
  * you may not use this file except in compliance with the License.
@@ -19,23 +19,31 @@
19
19
  * @licend The above is the entire license notice for the
20
20
  * Javascript code in this page
21
21
  */
22
- 'use strict';
22
+ "use strict";
23
23
 
24
24
  Object.defineProperty(exports, "__esModule", {
25
25
  value: true
26
26
  });
27
- exports.PDFDocumentProperties = undefined;
27
+ exports.PDFDocumentProperties = void 0;
28
28
 
29
- var _slicedToArray = function () { function sliceIterator(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"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
29
+ var _ui_utils = require("./ui_utils");
30
30
 
31
- var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
31
+ var _pdf = require("../pdf");
32
32
 
33
- var _ui_utils = require('./ui_utils');
33
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
34
34
 
35
- var _pdf = require('../pdf');
35
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
36
+
37
+ 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; }
38
+
39
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
36
40
 
37
41
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
38
42
 
43
+ 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); } }
44
+
45
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
46
+
39
47
  var DEFAULT_FIELD_CONTENT = '-';
40
48
  var NON_METRIC_LOCALES = ['en-us', 'en-lr', 'my'];
41
49
  var US_PAGE_NAMES = {
@@ -46,21 +54,23 @@ var METRIC_PAGE_NAMES = {
46
54
  '297x420': 'A3',
47
55
  '210x297': 'A4'
48
56
  };
57
+
49
58
  function getPageName(size, isPortrait, pageNames) {
50
59
  var width = isPortrait ? size.width : size.height;
51
60
  var height = isPortrait ? size.height : size.width;
52
- return pageNames[width + 'x' + height];
61
+ return pageNames["".concat(width, "x").concat(height)];
53
62
  }
54
63
 
55
- var PDFDocumentProperties = function () {
64
+ var PDFDocumentProperties =
65
+ /*#__PURE__*/
66
+ function () {
56
67
  function PDFDocumentProperties(_ref, overlayManager, eventBus) {
68
+ var _this = this;
69
+
57
70
  var overlayName = _ref.overlayName,
58
71
  fields = _ref.fields,
59
72
  container = _ref.container,
60
73
  closeButton = _ref.closeButton;
61
-
62
- var _this = this;
63
-
64
74
  var l10n = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _ui_utils.NullL10n;
65
75
 
66
76
  _classCallCheck(this, PDFDocumentProperties);
@@ -70,11 +80,15 @@ var PDFDocumentProperties = function () {
70
80
  this.container = container;
71
81
  this.overlayManager = overlayManager;
72
82
  this.l10n = l10n;
83
+
73
84
  this._reset();
85
+
74
86
  if (closeButton) {
75
87
  closeButton.addEventListener('click', this.close.bind(this));
76
88
  }
89
+
77
90
  this.overlayManager.register(this.overlayName, this.container, this.close.bind(this));
91
+
78
92
  if (eventBus) {
79
93
  eventBus.on('pagechanging', function (evt) {
80
94
  _this._currentPageNumber = evt.pageNumber;
@@ -83,6 +97,7 @@ var PDFDocumentProperties = function () {
83
97
  _this._pagesRotation = evt.pagesRotation;
84
98
  });
85
99
  }
100
+
86
101
  this._isNonMetricLocale = true;
87
102
  l10n.getLanguage().then(function (locale) {
88
103
  _this._isNonMetricLocale = NON_METRIC_LOCALES.includes(locale);
@@ -90,7 +105,7 @@ var PDFDocumentProperties = function () {
90
105
  }
91
106
 
92
107
  _createClass(PDFDocumentProperties, [{
93
- key: 'open',
108
+ key: "open",
94
109
  value: function open() {
95
110
  var _this2 = this;
96
111
 
@@ -102,30 +117,34 @@ var PDFDocumentProperties = function () {
102
117
  configurable: true
103
118
  });
104
119
  };
120
+
105
121
  Promise.all([this.overlayManager.open(this.overlayName), this._dataAvailableCapability.promise]).then(function () {
106
122
  var currentPageNumber = _this2._currentPageNumber;
107
123
  var pagesRotation = _this2._pagesRotation;
124
+
108
125
  if (_this2.fieldData && currentPageNumber === _this2.fieldData['_currentPageNumber'] && pagesRotation === _this2.fieldData['_pagesRotation']) {
109
126
  _this2._updateUI();
127
+
110
128
  return;
111
129
  }
130
+
112
131
  _this2.pdfDocument.getMetadata().then(function (_ref2) {
113
132
  var info = _ref2.info,
114
133
  metadata = _ref2.metadata,
115
134
  contentDispositionFilename = _ref2.contentDispositionFilename;
116
-
117
- return Promise.all([info, metadata, contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(_this2.url), _this2._parseFileSize(_this2.maybeFileSize), _this2._parseDate(info.CreationDate), _this2._parseDate(info.ModDate), _this2.pdfDocument.getPage(currentPageNumber).then(function (pdfPage) {
135
+ return Promise.all([info, metadata, contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(_this2.url || ''), _this2._parseFileSize(_this2.maybeFileSize), _this2._parseDate(info.CreationDate), _this2._parseDate(info.ModDate), _this2.pdfDocument.getPage(currentPageNumber).then(function (pdfPage) {
118
136
  return _this2._parsePageSize((0, _ui_utils.getPageSizeInches)(pdfPage), pagesRotation);
119
- })]);
137
+ }), _this2._parseLinearization(info.IsLinearized)]);
120
138
  }).then(function (_ref3) {
121
- var _ref4 = _slicedToArray(_ref3, 7),
139
+ var _ref4 = _slicedToArray(_ref3, 8),
122
140
  info = _ref4[0],
123
141
  metadata = _ref4[1],
124
142
  fileName = _ref4[2],
125
143
  fileSize = _ref4[3],
126
144
  creationDate = _ref4[4],
127
145
  modDate = _ref4[5],
128
- pageSize = _ref4[6];
146
+ pageSize = _ref4[6],
147
+ isLinearized = _ref4[7];
129
148
 
130
149
  freezeFieldData({
131
150
  'fileName': fileName,
@@ -141,55 +160,65 @@ var PDFDocumentProperties = function () {
141
160
  'version': info.PDFFormatVersion,
142
161
  'pageCount': _this2.pdfDocument.numPages,
143
162
  'pageSize': pageSize,
163
+ 'linearized': isLinearized,
144
164
  '_currentPageNumber': currentPageNumber,
145
165
  '_pagesRotation': pagesRotation
146
166
  });
167
+
147
168
  _this2._updateUI();
169
+
148
170
  return _this2.pdfDocument.getDownloadInfo();
149
171
  }).then(function (_ref5) {
150
172
  var length = _ref5.length;
151
-
152
173
  _this2.maybeFileSize = length;
153
174
  return _this2._parseFileSize(length);
154
175
  }).then(function (fileSize) {
155
176
  if (fileSize === _this2.fieldData['fileSize']) {
156
177
  return;
157
178
  }
158
- var data = (0, _ui_utils.cloneObj)(_this2.fieldData);
179
+
180
+ var data = Object.assign(Object.create(null), _this2.fieldData);
159
181
  data['fileSize'] = fileSize;
160
182
  freezeFieldData(data);
183
+
161
184
  _this2._updateUI();
162
185
  });
163
186
  });
164
187
  }
165
188
  }, {
166
- key: 'close',
189
+ key: "close",
167
190
  value: function close() {
168
191
  this.overlayManager.close(this.overlayName);
169
192
  }
170
193
  }, {
171
- key: 'setDocument',
172
- value: function setDocument(pdfDocument, url) {
194
+ key: "setDocument",
195
+ value: function setDocument(pdfDocument) {
196
+ var url = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
197
+
173
198
  if (this.pdfDocument) {
174
199
  this._reset();
200
+
175
201
  this._updateUI(true);
176
202
  }
203
+
177
204
  if (!pdfDocument) {
178
205
  return;
179
206
  }
207
+
180
208
  this.pdfDocument = pdfDocument;
181
209
  this.url = url;
210
+
182
211
  this._dataAvailableCapability.resolve();
183
212
  }
184
213
  }, {
185
- key: 'setFileSize',
214
+ key: "setFileSize",
186
215
  value: function setFileSize(fileSize) {
187
216
  if (Number.isInteger(fileSize) && fileSize > 0) {
188
217
  this.maybeFileSize = fileSize;
189
218
  }
190
219
  }
191
220
  }, {
192
- key: '_reset',
221
+ key: "_reset",
193
222
  value: function _reset() {
194
223
  this.pdfDocument = null;
195
224
  this.url = null;
@@ -200,7 +229,7 @@ var PDFDocumentProperties = function () {
200
229
  this._pagesRotation = 0;
201
230
  }
202
231
  }, {
203
- key: '_updateUI',
232
+ key: "_updateUI",
204
233
  value: function _updateUI() {
205
234
  var reset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
206
235
 
@@ -208,22 +237,25 @@ var PDFDocumentProperties = function () {
208
237
  for (var id in this.fields) {
209
238
  this.fields[id].textContent = DEFAULT_FIELD_CONTENT;
210
239
  }
240
+
211
241
  return;
212
242
  }
243
+
213
244
  if (this.overlayManager.active !== this.overlayName) {
214
245
  return;
215
246
  }
247
+
216
248
  for (var _id in this.fields) {
217
249
  var content = this.fieldData[_id];
218
250
  this.fields[_id].textContent = content || content === 0 ? content : DEFAULT_FIELD_CONTENT;
219
251
  }
220
252
  }
221
253
  }, {
222
- key: '_parseFileSize',
254
+ key: "_parseFileSize",
223
255
  value: function _parseFileSize() {
224
256
  var fileSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
225
-
226
257
  var kb = fileSize / 1024;
258
+
227
259
  if (!kb) {
228
260
  return Promise.resolve(undefined);
229
261
  } else if (kb < 1024) {
@@ -232,25 +264,28 @@ var PDFDocumentProperties = function () {
232
264
  size_b: fileSize.toLocaleString()
233
265
  }, '{{size_kb}} KB ({{size_b}} bytes)');
234
266
  }
267
+
235
268
  return this.l10n.get('document_properties_mb', {
236
269
  size_mb: (+(kb / 1024).toPrecision(3)).toLocaleString(),
237
270
  size_b: fileSize.toLocaleString()
238
271
  }, '{{size_mb}} MB ({{size_b}} bytes)');
239
272
  }
240
273
  }, {
241
- key: '_parsePageSize',
274
+ key: "_parsePageSize",
242
275
  value: function _parsePageSize(pageSizeInches, pagesRotation) {
243
276
  var _this3 = this;
244
277
 
245
278
  if (!pageSizeInches) {
246
279
  return Promise.resolve(undefined);
247
280
  }
281
+
248
282
  if (pagesRotation % 180 !== 0) {
249
283
  pageSizeInches = {
250
284
  width: pageSizeInches.height,
251
285
  height: pageSizeInches.width
252
286
  };
253
287
  }
288
+
254
289
  var isPortrait = (0, _ui_utils.isPortraitOrientation)(pageSizeInches);
255
290
  var sizeInches = {
256
291
  width: Math.round(pageSizeInches.width * 100) / 100,
@@ -262,6 +297,7 @@ var PDFDocumentProperties = function () {
262
297
  };
263
298
  var pageName = null;
264
299
  var name = getPageName(sizeInches, isPortrait, US_PAGE_NAMES) || getPageName(sizeMillimeters, isPortrait, METRIC_PAGE_NAMES);
300
+
265
301
  if (!name && !(Number.isInteger(sizeMillimeters.width) && Number.isInteger(sizeMillimeters.height))) {
266
302
  var exactMillimeters = {
267
303
  width: pageSizeInches.width * 25.4,
@@ -271,8 +307,10 @@ var PDFDocumentProperties = function () {
271
307
  width: Math.round(sizeMillimeters.width),
272
308
  height: Math.round(sizeMillimeters.height)
273
309
  };
310
+
274
311
  if (Math.abs(exactMillimeters.width - intMillimeters.width) < 0.1 && Math.abs(exactMillimeters.height - intMillimeters.height) < 0.1) {
275
312
  name = getPageName(intMillimeters, isPortrait, METRIC_PAGE_NAMES);
313
+
276
314
  if (name) {
277
315
  sizeInches = {
278
316
  width: Math.round(intMillimeters.width / 25.4 * 100) / 100,
@@ -282,9 +320,11 @@ var PDFDocumentProperties = function () {
282
320
  }
283
321
  }
284
322
  }
323
+
285
324
  if (name) {
286
325
  pageName = this.l10n.get('document_properties_page_size_name_' + name.toLowerCase(), null, name);
287
326
  }
327
+
288
328
  return Promise.all([this._isNonMetricLocale ? sizeInches : sizeMillimeters, this.l10n.get('document_properties_page_size_unit_' + (this._isNonMetricLocale ? 'inches' : 'millimeters'), null, this._isNonMetricLocale ? 'in' : 'mm'), pageName, this.l10n.get('document_properties_page_size_orientation_' + (isPortrait ? 'portrait' : 'landscape'), null, isPortrait ? 'portrait' : 'landscape')]).then(function (_ref6) {
289
329
  var _ref7 = _slicedToArray(_ref6, 4),
290
330
  _ref7$ = _ref7[0],
@@ -304,15 +344,18 @@ var PDFDocumentProperties = function () {
304
344
  });
305
345
  }
306
346
  }, {
307
- key: '_parseDate',
347
+ key: "_parseDate",
308
348
  value: function _parseDate(inputDate) {
309
349
  if (!inputDate) {
310
350
  return;
311
351
  }
352
+
312
353
  var dateToParse = inputDate;
354
+
313
355
  if (dateToParse.substring(0, 2) === 'D:') {
314
356
  dateToParse = dateToParse.substring(2);
315
357
  }
358
+
316
359
  var year = parseInt(dateToParse.substring(0, 4), 10);
317
360
  var month = parseInt(dateToParse.substring(4, 6), 10) - 1;
318
361
  var day = parseInt(dateToParse.substring(6, 8), 10);
@@ -322,6 +365,7 @@ var PDFDocumentProperties = function () {
322
365
  var utRel = dateToParse.substring(14, 15);
323
366
  var offsetHours = parseInt(dateToParse.substring(15, 17), 10);
324
367
  var offsetMinutes = parseInt(dateToParse.substring(18, 20), 10);
368
+
325
369
  if (utRel === '-') {
326
370
  hours += offsetHours;
327
371
  minutes += offsetMinutes;
@@ -329,6 +373,7 @@ var PDFDocumentProperties = function () {
329
373
  hours -= offsetHours;
330
374
  minutes -= offsetMinutes;
331
375
  }
376
+
332
377
  var date = new Date(Date.UTC(year, month, day, hours, minutes, seconds));
333
378
  var dateString = date.toLocaleDateString();
334
379
  var timeString = date.toLocaleTimeString();
@@ -337,6 +382,11 @@ var PDFDocumentProperties = function () {
337
382
  time: timeString
338
383
  }, '{{date}}, {{time}}');
339
384
  }
385
+ }, {
386
+ key: "_parseLinearization",
387
+ value: function _parseLinearization(isLinearized) {
388
+ return this.l10n.get('document_properties_linearized_' + (isLinearized ? 'yes' : 'no'), null, isLinearized ? 'Yes' : 'No');
389
+ }
340
390
  }]);
341
391
 
342
392
  return PDFDocumentProperties;