pdfjs-dist 2.2.228 → 2.6.347
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.
- package/README.md +4 -0
- package/bower.json +1 -1
- package/build/pdf.js +8816 -19300
- package/build/pdf.js.map +1 -1
- package/build/pdf.min.js +22 -1
- package/build/pdf.worker.entry.js +5 -3
- package/build/pdf.worker.js +27185 -35746
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +22 -1
- package/es5/build/pdf.js +26665 -0
- package/es5/build/pdf.js.map +1 -0
- package/es5/build/pdf.min.js +22 -0
- package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
- package/es5/build/pdf.worker.js +61231 -0
- package/es5/build/pdf.worker.js.map +1 -0
- package/es5/build/pdf.worker.min.js +22 -0
- package/es5/image_decoders/pdf.image_decoders.js +12529 -0
- package/es5/image_decoders/pdf.image_decoders.js.map +1 -0
- package/es5/image_decoders/pdf.image_decoders.min.js +22 -0
- package/es5/web/images/annotation-check.svg +11 -0
- package/es5/web/images/annotation-comment.svg +16 -0
- package/es5/web/images/annotation-help.svg +26 -0
- package/es5/web/images/annotation-insert.svg +10 -0
- package/es5/web/images/annotation-key.svg +11 -0
- package/es5/web/images/annotation-newparagraph.svg +11 -0
- package/es5/web/images/annotation-noicon.svg +7 -0
- package/es5/web/images/annotation-note.svg +42 -0
- package/es5/web/images/annotation-paragraph.svg +16 -0
- package/es5/web/images/loading-icon.gif +0 -0
- package/es5/web/images/shadow.png +0 -0
- package/es5/web/pdf_viewer.css +406 -0
- package/es5/web/pdf_viewer.js +7886 -0
- package/es5/web/pdf_viewer.js.map +1 -0
- package/image_decoders/pdf.image_decoders.js +1498 -4832
- package/image_decoders/pdf.image_decoders.js.map +1 -1
- package/image_decoders/pdf.image_decoders.min.js +22 -1
- package/lib/README.md +7 -0
- package/lib/core/annotation.js +1144 -927
- package/lib/core/arithmetic_decoder.js +81 -97
- package/lib/core/bidi.js +54 -46
- package/lib/core/ccitt.js +88 -81
- package/lib/core/ccitt_stream.js +15 -14
- package/lib/core/cff_parser.js +747 -716
- package/lib/core/charsets.js +4 -4
- package/lib/core/chunked_stream.js +462 -553
- package/lib/core/cmap.js +231 -277
- package/lib/core/colorspace.js +715 -857
- package/lib/core/core_utils.js +57 -52
- package/lib/core/crypto.js +416 -437
- package/lib/core/document.js +629 -670
- package/lib/core/encodings.js +15 -15
- package/lib/core/evaluator.js +3229 -2800
- package/lib/core/font_renderer.js +135 -178
- package/lib/core/fonts.js +602 -534
- package/lib/core/function.js +355 -279
- package/lib/core/glyphlist.js +4527 -4526
- package/lib/core/image.js +442 -439
- package/lib/core/image_utils.js +221 -61
- package/lib/core/jbig2.js +325 -316
- package/lib/core/jbig2_stream.js +18 -17
- package/lib/core/jpeg_stream.js +21 -26
- package/lib/core/jpg.js +289 -233
- package/lib/core/jpx.js +161 -143
- package/lib/core/jpx_stream.js +28 -28
- package/lib/core/metrics.js +2928 -2928
- package/lib/core/murmurhash3.js +87 -102
- package/lib/core/obj.js +1343 -1300
- package/lib/core/operator_list.js +90 -67
- package/lib/core/parser.js +990 -987
- package/lib/core/pattern.js +105 -77
- package/lib/core/pdf_manager.js +149 -316
- package/lib/core/primitives.js +156 -104
- package/lib/core/ps_parser.js +175 -214
- package/lib/core/standard_fonts.js +237 -236
- package/lib/core/stream.js +94 -74
- package/lib/core/type1_parser.js +89 -69
- package/lib/core/unicode.js +1654 -1654
- package/lib/core/worker.js +275 -290
- package/lib/core/worker_stream.js +101 -210
- package/lib/core/writer.js +242 -0
- package/lib/display/annotation_layer.js +772 -1041
- package/lib/display/annotation_storage.js +89 -0
- package/lib/display/api.js +1575 -1868
- package/lib/display/api_compatibility.js +12 -17
- package/lib/display/canvas.js +370 -222
- package/lib/display/content_disposition.js +40 -59
- package/lib/display/display_utils.js +341 -536
- package/lib/display/fetch_stream.js +188 -304
- package/lib/display/font_loader.js +282 -414
- package/lib/display/metadata.js +81 -99
- package/lib/display/network.js +362 -511
- package/lib/display/network_utils.js +25 -18
- package/lib/display/node_stream.js +283 -465
- package/lib/display/node_utils.js +87 -0
- package/lib/display/optional_content_config.js +184 -0
- package/lib/display/pattern_helper.js +93 -44
- package/lib/display/svg.js +1163 -1401
- package/lib/display/text_layer.js +154 -137
- package/lib/display/transport_stream.js +237 -375
- package/lib/display/webgl.js +70 -83
- package/lib/display/worker_options.js +3 -3
- package/lib/display/xml_parser.js +303 -392
- package/lib/examples/node/domstubs.js +37 -37
- package/lib/pdf.js +220 -58
- package/lib/pdf.worker.js +14 -6
- package/lib/shared/compatibility.js +3 -246
- package/lib/shared/is_node.js +7 -6
- package/lib/shared/message_handler.js +327 -332
- package/lib/shared/util.js +271 -306
- package/lib/test/unit/annotation_spec.js +1902 -763
- package/lib/test/unit/annotation_storage_spec.js +83 -0
- package/lib/test/unit/api_spec.js +790 -592
- package/lib/test/unit/bidi_spec.js +7 -7
- package/lib/test/unit/cff_parser_spec.js +73 -72
- package/lib/test/unit/clitests_helper.js +7 -9
- package/lib/test/unit/cmap_spec.js +86 -88
- package/lib/test/unit/colorspace_spec.js +346 -154
- package/lib/test/unit/core_utils_spec.js +125 -105
- package/lib/test/unit/crypto_spec.js +232 -185
- package/lib/test/unit/custom_spec.js +150 -24
- package/lib/test/unit/display_svg_spec.js +34 -39
- package/lib/test/unit/display_utils_spec.js +139 -149
- package/lib/test/unit/document_spec.js +128 -17
- package/lib/test/unit/encodings_spec.js +12 -34
- package/lib/test/unit/evaluator_spec.js +112 -91
- package/lib/test/unit/fetch_stream_spec.js +31 -29
- package/lib/test/unit/function_spec.js +206 -204
- package/lib/test/unit/jasmine-boot.js +48 -32
- package/lib/test/unit/message_handler_spec.js +173 -159
- package/lib/test/unit/metadata_spec.js +71 -71
- package/lib/test/unit/murmurhash3_spec.js +12 -12
- package/lib/test/unit/network_spec.js +13 -11
- package/lib/test/unit/network_utils_spec.js +158 -144
- package/lib/test/unit/node_stream_spec.js +76 -90
- package/lib/test/unit/parser_spec.js +108 -114
- package/lib/test/unit/pdf_find_controller_spec.js +55 -86
- package/lib/test/unit/pdf_find_utils_spec.js +32 -32
- package/lib/test/unit/pdf_history_spec.js +32 -32
- package/lib/test/unit/primitives_spec.js +337 -156
- package/lib/test/unit/stream_spec.js +16 -14
- package/lib/test/unit/test_utils.js +91 -304
- package/lib/test/unit/testreporter.js +33 -22
- package/lib/test/unit/type1_parser_spec.js +42 -42
- package/lib/test/unit/ui_utils_spec.js +299 -461
- package/lib/test/unit/unicode_spec.js +42 -42
- package/lib/test/unit/util_spec.js +129 -149
- package/lib/test/unit/writer_spec.js +84 -0
- package/lib/web/annotation_layer_builder.js +78 -111
- package/lib/web/app.js +1542 -1267
- package/lib/web/app_options.js +76 -91
- package/lib/web/base_tree_viewer.js +100 -0
- package/lib/web/base_viewer.js +869 -834
- package/lib/web/chromecom.js +165 -252
- package/lib/web/debugger.js +149 -205
- package/lib/web/download_manager.js +34 -58
- package/lib/web/firefox_print_service.js +62 -34
- package/lib/web/firefoxcom.js +206 -374
- package/lib/web/genericcom.js +26 -108
- package/lib/web/genericl10n.js +24 -153
- package/lib/web/grab_to_pan.js +30 -30
- package/lib/web/interfaces.js +80 -254
- package/lib/web/overlay_manager.js +70 -246
- package/lib/web/password_prompt.js +38 -64
- package/lib/web/pdf_attachment_viewer.js +150 -126
- package/lib/web/pdf_cursor_tools.js +75 -102
- package/lib/web/pdf_document_properties.js +229 -383
- package/lib/web/pdf_find_bar.js +136 -170
- package/lib/web/pdf_find_controller.js +492 -548
- package/lib/web/pdf_find_utils.js +13 -13
- package/lib/web/pdf_history.js +397 -406
- package/lib/web/pdf_layer_viewer.js +208 -0
- package/lib/web/pdf_link_service.js +304 -348
- package/lib/web/pdf_outline_viewer.js +119 -212
- package/lib/web/pdf_page_view.js +474 -513
- package/lib/web/pdf_presentation_mode.js +308 -357
- package/lib/web/pdf_print_service.js +96 -110
- package/lib/web/pdf_rendering_queue.js +87 -108
- package/lib/web/pdf_sidebar.js +286 -302
- package/lib/web/pdf_sidebar_resizer.js +92 -119
- package/lib/web/pdf_single_page_viewer.js +77 -126
- package/lib/web/pdf_thumbnail_view.js +289 -297
- package/lib/web/pdf_thumbnail_viewer.js +202 -206
- package/lib/web/pdf_viewer.component.js +20 -21
- package/lib/web/pdf_viewer.js +55 -115
- package/lib/web/preferences.js +69 -273
- package/lib/web/secondary_toolbar.js +164 -196
- package/lib/web/text_layer_builder.js +284 -319
- package/lib/web/toolbar.js +217 -210
- package/lib/web/ui_utils.js +274 -421
- package/lib/web/view_history.js +52 -226
- package/lib/web/viewer_compatibility.js +21 -6
- package/package.json +4 -9
- package/types/display/annotation_layer.d.ts +61 -0
- package/types/display/annotation_storage.d.ts +36 -0
- package/types/display/api.d.ts +1107 -0
- package/types/display/api_compatibility.d.ts +1 -0
- package/types/display/canvas.d.ts +4 -0
- package/types/display/content_disposition.d.ts +7 -0
- package/types/display/display_utils.d.ts +243 -0
- package/types/display/fetch_stream.d.ts +67 -0
- package/types/display/font_loader.d.ts +19 -0
- package/types/display/metadata.d.ts +9 -0
- package/types/display/network.d.ts +80 -0
- package/types/display/network_utils.d.ts +14 -0
- package/types/display/node_stream.d.ts +72 -0
- package/types/display/node_utils.d.ts +6 -0
- package/types/display/optional_content_config.d.ts +12 -0
- package/types/display/pattern_helper.d.ts +5 -0
- package/types/display/svg.d.ts +2 -0
- package/types/display/text_layer.d.ts +83 -0
- package/types/display/transport_stream.d.ts +57 -0
- package/types/display/webgl.d.ts +20 -0
- package/types/display/worker_options.d.ts +27 -0
- package/types/display/xml_parser.d.ts +35 -0
- package/types/pdf.d.ts +33 -0
- package/types/shared/compatibility.d.ts +1 -0
- package/types/shared/is_node.d.ts +1 -0
- package/types/shared/message_handler.d.ts +62 -0
- package/types/shared/util.d.ts +421 -0
- package/web/images/shadow.png +0 -0
- package/web/pdf_viewer.css +29 -27
- package/web/pdf_viewer.js +3524 -4746
- package/web/pdf_viewer.js.map +1 -1
- package/webpack.js +6 -5
- package/external/streams/streams-lib.js +0 -3962
- package/external/url/url-lib.js +0 -627
- package/lib/shared/streams_polyfill.js +0 -43
- package/lib/shared/url_polyfill.js +0 -56
- package/web/images/texture.png +0 -0
@@ -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
|
5
|
+
* Copyright 2020 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.
|
@@ -21,98 +21,98 @@
|
|
21
21
|
*/
|
22
22
|
"use strict";
|
23
23
|
|
24
|
-
var
|
24
|
+
var _test_utils = require("./test_utils.js");
|
25
25
|
|
26
|
-
var _metadata = require("../../display/metadata");
|
26
|
+
var _metadata = require("../../display/metadata.js");
|
27
27
|
|
28
|
-
describe(
|
29
|
-
it(
|
30
|
-
|
31
|
-
|
32
|
-
expect(metadata.has(
|
33
|
-
expect(metadata.has(
|
34
|
-
expect(metadata.get(
|
35
|
-
expect(metadata.get(
|
28
|
+
describe("metadata", function () {
|
29
|
+
it("should handle valid metadata", function () {
|
30
|
+
const data = "<x:xmpmeta xmlns:x='adobe:ns:meta/'>" + "<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>" + "<rdf:Description xmlns:dc='http://purl.org/dc/elements/1.1/'>" + '<dc:title><rdf:Alt><rdf:li xml:lang="x-default">Foo bar baz</rdf:li>' + "</rdf:Alt></dc:title></rdf:Description></rdf:RDF></x:xmpmeta>";
|
31
|
+
const metadata = new _metadata.Metadata(data);
|
32
|
+
expect(metadata.has("dc:title")).toBeTruthy();
|
33
|
+
expect(metadata.has("dc:qux")).toBeFalsy();
|
34
|
+
expect(metadata.get("dc:title")).toEqual("Foo bar baz");
|
35
|
+
expect(metadata.get("dc:qux")).toEqual(null);
|
36
36
|
expect(metadata.getAll()).toEqual({
|
37
|
-
|
37
|
+
"dc:title": "Foo bar baz"
|
38
38
|
});
|
39
39
|
});
|
40
|
-
it(
|
41
|
-
|
42
|
-
|
43
|
-
expect(metadata.has(
|
44
|
-
expect(metadata.has(
|
45
|
-
expect(metadata.get(
|
46
|
-
expect(metadata.get(
|
40
|
+
it("should repair and handle invalid metadata", function () {
|
41
|
+
const data = "<x:xmpmeta xmlns:x='adobe:ns:meta/'>" + "<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>" + "<rdf:Description xmlns:dc='http://purl.org/dc/elements/1.1/'>" + "<dc:title>\\376\\377\\000P\\000D\\000F\\000&</dc:title>" + "</rdf:Description></rdf:RDF></x:xmpmeta>";
|
42
|
+
const metadata = new _metadata.Metadata(data);
|
43
|
+
expect(metadata.has("dc:title")).toBeTruthy();
|
44
|
+
expect(metadata.has("dc:qux")).toBeFalsy();
|
45
|
+
expect(metadata.get("dc:title")).toEqual("PDF&");
|
46
|
+
expect(metadata.get("dc:qux")).toEqual(null);
|
47
47
|
expect(metadata.getAll()).toEqual({
|
48
|
-
|
48
|
+
"dc:title": "PDF&"
|
49
49
|
});
|
50
50
|
});
|
51
|
-
it(
|
52
|
-
|
53
|
-
|
54
|
-
expect(metadata.has(
|
55
|
-
expect(metadata.has(
|
56
|
-
expect(metadata.get(
|
57
|
-
expect(metadata.get(
|
51
|
+
it("should repair and handle invalid metadata (bug 1424938)", function () {
|
52
|
+
const data = "<x:xmpmeta xmlns:x='adobe:ns:meta/' " + "x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>" + "<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' " + "xmlns:iX='http://ns.adobe.com/iX/1.0/'>" + "<rdf:Description rdf:about='61652fa7-fc1f-11dd-0000-ce81d41f9ecf' " + "xmlns:pdf='http://ns.adobe.com/pdf/1.3/' " + "pdf:Producer='GPL Ghostscript 8.63'/>" + "<rdf:Description rdf:about='61652fa7-fc1f-11dd-0000-ce81d41f9ecf' " + "xmlns:xap='http://ns.adobe.com/xap/1.0/' " + "xap:ModifyDate='2009-02-13T12:42:54+01:00' " + "xap:CreateDate='2009-02-13T12:42:54+01:00'>" + "<xap:CreatorTool>\\376\\377\\000P\\000D\\000F\\000C\\000r\\000e\\000a" + "\\000t\\000o\\000r\\000 \\000V\\000e\\000r\\000s\\000i\\000o\\000n" + "\\000 \\0000\\000.\\0009\\000.\\0006</xap:CreatorTool>" + "</rdf:Description><rdf:Description " + "rdf:about='61652fa7-fc1f-11dd-0000-ce81d41f9ecf' " + "xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' " + "xapMM:DocumentID='61652fa7-fc1f-11dd-0000-ce81d41f9ecf'/>" + "<rdf:Description rdf:about='61652fa7-fc1f-11dd-0000-ce81d41f9ecf' " + "xmlns:dc='http://purl.org/dc/elements/1.1/' " + "dc:format='application/pdf'><dc:title><rdf:Alt>" + "<rdf:li xml:lang='x-default'>\\376\\377\\000L\\000'\\000O\\000d" + "\\000i\\000s\\000s\\000e\\000e\\000 \\000t\\000h\\000\\351\\000m\\000a" + "\\000t\\000i\\000q\\000u\\000e\\000 \\000l\\000o\\000g\\000o\\000 " + "\\000O\\000d\\000i\\000s\\000s\\000\\351\\000\\351\\000 \\000-\\000 " + "\\000d\\000\\351\\000c\\000e\\000m\\000b\\000r\\000e\\000 \\0002\\0000" + "\\0000\\0008\\000.\\000p\\000u\\000b</rdf:li></rdf:Alt></dc:title>" + "<dc:creator><rdf:Seq><rdf:li>\\376\\377\\000O\\000D\\000I\\000S" + "</rdf:li></rdf:Seq></dc:creator></rdf:Description></rdf:RDF>" + "</x:xmpmeta>";
|
53
|
+
const metadata = new _metadata.Metadata(data);
|
54
|
+
expect(metadata.has("dc:title")).toBeTruthy();
|
55
|
+
expect(metadata.has("dc:qux")).toBeFalsy();
|
56
|
+
expect(metadata.get("dc:title")).toEqual("L'Odissee thématique logo Odisséé - décembre 2008.pub");
|
57
|
+
expect(metadata.get("dc:qux")).toEqual(null);
|
58
58
|
expect(metadata.getAll()).toEqual({
|
59
|
-
|
60
|
-
|
61
|
-
|
59
|
+
"dc:creator": "ODIS",
|
60
|
+
"dc:title": "L'Odissee thématique logo Odisséé - décembre 2008.pub",
|
61
|
+
"xap:creatortool": "PDFCreator Version 0.9.6"
|
62
62
|
});
|
63
63
|
});
|
64
|
-
it(
|
65
|
-
|
66
|
-
|
67
|
-
expect((0,
|
64
|
+
it("should gracefully handle incomplete tags (issue 8884)", function () {
|
65
|
+
const data = '<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d' + '<x:xmpmeta xmlns:x="adobe:ns:meta/">' + '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">' + '<rdf:Description rdf:about=""' + 'xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/">' + "</rdf:Description>" + '<rdf:Description rdf:about=""' + 'xmlns:xap="http://ns.adobe.com/xap/1.0/">' + "<xap:ModifyDate>2010-03-25T11:20:09-04:00</xap:ModifyDate>" + "<xap:CreateDate>2010-03-25T11:20:09-04:00</xap:CreateDate>" + "<xap:MetadataDate>2010-03-25T11:20:09-04:00</xap:MetadataDate>" + "</rdf:Description>" + '<rdf:Description rdf:about=""' + 'xmlns:dc="http://purl.org/dc/elements/1.1/">' + "<dc:format>application/pdf</dc:format>" + "</rdf:Description>" + '<rdf:Description rdf:about=""' + 'xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/">' + "<pdfaid:part>1</pdfaid:part>" + "<pdfaid:conformance>A</pdfaid:conformance>" + "</rdf:Description>" + "</rdf:RDF>" + "</x:xmpmeta>" + '<?xpacket end="w"?>';
|
66
|
+
const metadata = new _metadata.Metadata(data);
|
67
|
+
expect((0, _test_utils.isEmptyObj)(metadata.getAll())).toEqual(true);
|
68
68
|
});
|
69
69
|
it('should gracefully handle "junk" before the actual metadata (issue 10395)', function () {
|
70
|
-
|
71
|
-
|
72
|
-
expect(metadata.has(
|
73
|
-
expect(metadata.has(
|
74
|
-
expect(metadata.get(
|
75
|
-
expect(metadata.get(
|
70
|
+
const data = '<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>' + '<x:xmpmeta x:xmptk="TallComponents PDFObjects 1.0" ' + 'xmlns:x="adobe:ns:meta/">' + '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">' + '<rdf:Description rdf:about="" ' + 'xmlns:pdf="http://ns.adobe.com/pdf/1.3/">' + "<pdf:Producer>PDFKit.NET 4.0.102.0</pdf:Producer>" + "<pdf:Keywords></pdf:Keywords>" + "<pdf:PDFVersion>1.7</pdf:PDFVersion></rdf:Description>" + '<rdf:Description rdf:about="" ' + 'xmlns:xap="http://ns.adobe.com/xap/1.0/">' + "<xap:CreateDate>2018-12-27T13:50:36-08:00</xap:CreateDate>" + "<xap:ModifyDate>2018-12-27T13:50:38-08:00</xap:ModifyDate>" + "<xap:CreatorTool></xap:CreatorTool>" + "<xap:MetadataDate>2018-12-27T13:50:38-08:00</xap:MetadataDate>" + '</rdf:Description><rdf:Description rdf:about="" ' + 'xmlns:dc="http://purl.org/dc/elements/1.1/">' + "<dc:creator><rdf:Seq><rdf:li></rdf:li></rdf:Seq></dc:creator>" + "<dc:subject><rdf:Bag /></dc:subject>" + '<dc:description><rdf:Alt><rdf:li xml:lang="x-default">' + "</rdf:li></rdf:Alt></dc:description>" + '<dc:title><rdf:Alt><rdf:li xml:lang="x-default"></rdf:li>' + "</rdf:Alt></dc:title><dc:format>application/pdf</dc:format>" + '</rdf:Description></rdf:RDF></x:xmpmeta><?xpacket end="w"?>';
|
71
|
+
const metadata = new _metadata.Metadata(data);
|
72
|
+
expect(metadata.has("dc:title")).toBeTruthy();
|
73
|
+
expect(metadata.has("dc:qux")).toBeFalsy();
|
74
|
+
expect(metadata.get("dc:title")).toEqual("");
|
75
|
+
expect(metadata.get("dc:qux")).toEqual(null);
|
76
76
|
expect(metadata.getAll()).toEqual({
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
77
|
+
"dc:creator": "",
|
78
|
+
"dc:description": "",
|
79
|
+
"dc:format": "application/pdf",
|
80
|
+
"dc:subject": "",
|
81
|
+
"dc:title": "",
|
82
|
+
"pdf:keywords": "",
|
83
|
+
"pdf:pdfversion": "1.7",
|
84
|
+
"pdf:producer": "PDFKit.NET 4.0.102.0",
|
85
|
+
"xap:createdate": "2018-12-27T13:50:36-08:00",
|
86
|
+
"xap:creatortool": "",
|
87
|
+
"xap:metadatadate": "2018-12-27T13:50:38-08:00",
|
88
|
+
"xap:modifydate": "2018-12-27T13:50:38-08:00"
|
89
89
|
});
|
90
90
|
});
|
91
91
|
it('should correctly handle metadata containing "&apos" (issue 10407)', function () {
|
92
|
-
|
93
|
-
|
94
|
-
expect(metadata.has(
|
95
|
-
expect(metadata.has(
|
96
|
-
expect(metadata.get(
|
97
|
-
expect(metadata.get(
|
92
|
+
const data = "<x:xmpmeta xmlns:x='adobe:ns:meta/'>" + "<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>" + "<rdf:Description xmlns:dc='http://purl.org/dc/elements/1.1/'>" + "<dc:title><rdf:Alt>" + '<rdf:li xml:lang="x-default">'Foo bar baz'</rdf:li>' + "</rdf:Alt></dc:title></rdf:Description></rdf:RDF></x:xmpmeta>";
|
93
|
+
const metadata = new _metadata.Metadata(data);
|
94
|
+
expect(metadata.has("dc:title")).toBeTruthy();
|
95
|
+
expect(metadata.has("dc:qux")).toBeFalsy();
|
96
|
+
expect(metadata.get("dc:title")).toEqual("'Foo bar baz'");
|
97
|
+
expect(metadata.get("dc:qux")).toEqual(null);
|
98
98
|
expect(metadata.getAll()).toEqual({
|
99
|
-
|
99
|
+
"dc:title": "'Foo bar baz'"
|
100
100
|
});
|
101
101
|
});
|
102
|
-
it(
|
103
|
-
|
104
|
-
|
105
|
-
expect((0,
|
102
|
+
it("should gracefully handle unbalanced end tags (issue 10410)", function () {
|
103
|
+
const data = '<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>' + '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">' + '<rdf:Description rdf:about="" ' + 'xmlns:pdf="http://ns.adobe.com/pdf/1.3/">' + "<pdf:Producer>Soda PDF 5</pdf:Producer></rdf:Description>" + '<rdf:Description rdf:about="" ' + 'xmlns:xap="http://ns.adobe.com/xap/1.0/">' + "<xap:CreateDate>2018-10-02T08:14:49-05:00</xap:CreateDate>" + "<xap:CreatorTool>Soda PDF 5</xap:CreatorTool>" + "<xap:MetadataDate>2018-10-02T08:14:49-05:00</xap:MetadataDate> " + "<xap:ModifyDate>2018-10-02T08:14:49-05:00</xap:ModifyDate>" + '</rdf:Description><rdf:Description rdf:about="" ' + 'xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/">' + "<xmpMM:DocumentID>uuid:00000000-1c84-3cf9-89ba-bef0e729c831" + "</xmpMM:DocumentID></rdf:Description>" + '</rdf:RDF></x:xmpmeta><?xpacket end="w"?>';
|
104
|
+
const metadata = new _metadata.Metadata(data);
|
105
|
+
expect((0, _test_utils.isEmptyObj)(metadata.getAll())).toEqual(true);
|
106
106
|
});
|
107
|
-
it(
|
108
|
-
|
109
|
-
|
110
|
-
expect(metadata.has(
|
111
|
-
expect(metadata.has(
|
112
|
-
expect(metadata.get(
|
113
|
-
expect(metadata.get(
|
107
|
+
it("should not be vulnerable to the billion laughs attack", function () {
|
108
|
+
const data = '<?xml version="1.0"?>' + "<!DOCTYPE lolz [" + ' <!ENTITY lol "lol">' + ' <!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">' + ' <!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;">' + ' <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">' + ' <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">' + ' <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">' + ' <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">' + ' <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">' + ' <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">' + ' <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">' + "]>" + '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">' + ' <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1/">' + " <dc:title>" + " <rdf:Alt>" + ' <rdf:li xml:lang="x-default">a&lol9;b</rdf:li>' + " </rdf:Alt>" + " </dc:title>" + " </rdf:Description>" + "</rdf:RDF>";
|
109
|
+
const metadata = new _metadata.Metadata(data);
|
110
|
+
expect(metadata.has("dc:title")).toBeTruthy();
|
111
|
+
expect(metadata.has("dc:qux")).toBeFalsy();
|
112
|
+
expect(metadata.get("dc:title")).toEqual("a&lol9;b");
|
113
|
+
expect(metadata.get("dc:qux")).toEqual(null);
|
114
114
|
expect(metadata.getAll()).toEqual({
|
115
|
-
|
115
|
+
"dc:title": "a&lol9;b"
|
116
116
|
});
|
117
117
|
});
|
118
118
|
});
|
@@ -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
|
5
|
+
* Copyright 2020 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.
|
@@ -21,36 +21,36 @@
|
|
21
21
|
*/
|
22
22
|
"use strict";
|
23
23
|
|
24
|
-
var _murmurhash = require("../../core/murmurhash3");
|
24
|
+
var _murmurhash = require("../../core/murmurhash3.js");
|
25
25
|
|
26
|
-
describe(
|
27
|
-
it(
|
26
|
+
describe("MurmurHash3_64", function () {
|
27
|
+
it("instantiates without seed", function () {
|
28
28
|
var hash = new _murmurhash.MurmurHash3_64();
|
29
29
|
expect(hash).toEqual(jasmine.any(_murmurhash.MurmurHash3_64));
|
30
30
|
});
|
31
|
-
it(
|
31
|
+
it("instantiates with seed", function () {
|
32
32
|
var hash = new _murmurhash.MurmurHash3_64(1);
|
33
33
|
expect(hash).toEqual(jasmine.any(_murmurhash.MurmurHash3_64));
|
34
34
|
});
|
35
|
-
var hexDigestExpected =
|
36
|
-
var sourceText =
|
35
|
+
var hexDigestExpected = "f61cfdbfdae0f65e";
|
36
|
+
var sourceText = "test";
|
37
37
|
var sourceCharCodes = [116, 101, 115, 116];
|
38
|
-
it(
|
38
|
+
it("correctly generates a hash from a string", function () {
|
39
39
|
var hash = new _murmurhash.MurmurHash3_64();
|
40
40
|
hash.update(sourceText);
|
41
41
|
expect(hash.hexdigest()).toEqual(hexDigestExpected);
|
42
42
|
});
|
43
|
-
it(
|
43
|
+
it("correctly generates a hash from a Uint8Array", function () {
|
44
44
|
var hash = new _murmurhash.MurmurHash3_64();
|
45
45
|
hash.update(new Uint8Array(sourceCharCodes));
|
46
46
|
expect(hash.hexdigest()).toEqual(hexDigestExpected);
|
47
47
|
});
|
48
|
-
it(
|
48
|
+
it("correctly generates a hash from a Uint32Array", function () {
|
49
49
|
var hash = new _murmurhash.MurmurHash3_64();
|
50
50
|
hash.update(new Uint32Array(new Uint8Array(sourceCharCodes).buffer));
|
51
51
|
expect(hash.hexdigest()).toEqual(hexDigestExpected);
|
52
52
|
});
|
53
|
-
it(
|
53
|
+
it("changes the hash after update without seed", function () {
|
54
54
|
var hash = new _murmurhash.MurmurHash3_64();
|
55
55
|
var hexdigest1, hexdigest2;
|
56
56
|
hash.update(sourceText);
|
@@ -59,7 +59,7 @@ describe('MurmurHash3_64', function () {
|
|
59
59
|
hexdigest2 = hash.hexdigest();
|
60
60
|
expect(hexdigest1).not.toEqual(hexdigest2);
|
61
61
|
});
|
62
|
-
it(
|
62
|
+
it("changes the hash after update with seed", function () {
|
63
63
|
var hash = new _murmurhash.MurmurHash3_64(1);
|
64
64
|
var hexdigest1, hexdigest2;
|
65
65
|
hash.update(sourceText);
|
@@ -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
|
5
|
+
* Copyright 2020 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.
|
@@ -21,12 +21,14 @@
|
|
21
21
|
*/
|
22
22
|
"use strict";
|
23
23
|
|
24
|
-
var
|
24
|
+
var _util = require("../../shared/util.js");
|
25
25
|
|
26
|
-
|
27
|
-
|
26
|
+
var _network = require("../../display/network.js");
|
27
|
+
|
28
|
+
describe("network", function () {
|
29
|
+
var pdf1 = new URL("../pdfs/tracemonkey.pdf", window.location).href;
|
28
30
|
var pdf1Length = 1016315;
|
29
|
-
it(
|
31
|
+
it("read without stream and range", function (done) {
|
30
32
|
var stream = new _network.PDFNetworkStream({
|
31
33
|
url: pdf1,
|
32
34
|
rangeChunkSize: 65536,
|
@@ -42,7 +44,7 @@ describe('network', function () {
|
|
42
44
|
var len = 0,
|
43
45
|
count = 0;
|
44
46
|
|
45
|
-
var read = function
|
47
|
+
var read = function () {
|
46
48
|
return fullReader.read().then(function (result) {
|
47
49
|
if (result.done) {
|
48
50
|
return undefined;
|
@@ -61,11 +63,11 @@ describe('network', function () {
|
|
61
63
|
expect(isStreamingSupported).toEqual(false);
|
62
64
|
expect(isRangeSupported).toEqual(false);
|
63
65
|
done();
|
64
|
-
})
|
66
|
+
}).catch(function (reason) {
|
65
67
|
done.fail(reason);
|
66
68
|
});
|
67
69
|
});
|
68
|
-
it(
|
70
|
+
it("read custom ranges", function (done) {
|
69
71
|
var rangeSize = 32768;
|
70
72
|
var stream = new _network.PDFNetworkStream({
|
71
73
|
url: pdf1,
|
@@ -79,7 +81,7 @@ describe('network', function () {
|
|
79
81
|
var promise = fullReader.headersReady.then(function () {
|
80
82
|
isStreamingSupported = fullReader.isStreamingSupported;
|
81
83
|
isRangeSupported = fullReader.isRangeSupported;
|
82
|
-
fullReader.cancel(
|
84
|
+
fullReader.cancel(new _util.AbortException("Don't need fullReader."));
|
83
85
|
fullReaderCancelled = true;
|
84
86
|
});
|
85
87
|
var tailSize = pdf1Length % rangeSize || rangeSize;
|
@@ -92,7 +94,7 @@ describe('network', function () {
|
|
92
94
|
value: 0
|
93
95
|
};
|
94
96
|
|
95
|
-
var read = function
|
97
|
+
var read = function (reader, lenResult) {
|
96
98
|
return reader.read().then(function (result) {
|
97
99
|
if (result.done) {
|
98
100
|
return undefined;
|
@@ -111,7 +113,7 @@ describe('network', function () {
|
|
111
113
|
expect(isRangeSupported).toEqual(true);
|
112
114
|
expect(fullReaderCancelled).toEqual(true);
|
113
115
|
done();
|
114
|
-
})
|
116
|
+
}).catch(function (reason) {
|
115
117
|
done.fail(reason);
|
116
118
|
});
|
117
119
|
});
|