pdfmake 0.3.6 → 0.3.8
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.
- package/CHANGELOG.md +20 -0
- package/build/pdfmake.js +5302 -7624
- package/build/pdfmake.js.map +1 -1
- package/build/pdfmake.min.js +2 -2
- package/build/pdfmake.min.js.map +1 -1
- package/build/standard-fonts/Courier.js +4 -4
- package/build/standard-fonts/Helvetica.js +4 -4
- package/build/standard-fonts/Symbol.js +1 -1
- package/build/standard-fonts/Times.js +4 -4
- package/build/standard-fonts/ZapfDingbats.js +1 -1
- package/js/LayoutBuilder.js +10 -1
- package/js/PDFDocument.js +37 -2
- package/js/Printer.js +4 -2
- package/js/Renderer.js +6 -6
- package/js/TableProcessor.js +15 -2
- package/js/TextDecorator.js +5 -5
- package/js/URLResolver.js +52 -15
- package/js/base.js +5 -1
- package/js/index.js +10 -0
- package/package.json +12 -12
- package/src/LayoutBuilder.js +14 -1
- package/src/PDFDocument.js +48 -3
- package/src/Printer.js +4 -2
- package/src/Renderer.js +6 -6
- package/src/TableProcessor.js +21 -2
- package/src/TextDecorator.js +6 -5
- package/src/URLResolver.js +51 -11
- package/src/base.js +7 -1
- package/src/index.js +11 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var fontContainer = {
|
|
4
4
|
vfs: {
|
|
5
|
-
'data/ZapfDingbats.afm': { data: "StartFontMetrics 4.1\r\nComment Copyright (c) 1985, 1987, 1988, 1989, 1997 Adobe Systems Incorporated. All Rights Reserved.\r\nComment Creation Date: Thu May 1 15:14:13 1997\r\nComment UniqueID 43082\r\nComment VMusage 45775 55535\r\nFontName ZapfDingbats\r\nFullName ITC Zapf Dingbats\r\nFamilyName ZapfDingbats\r\nWeight Medium\r\nItalicAngle 0\r\nIsFixedPitch false\r\nCharacterSet Special\r\nFontBBox -1 -143 981 820 \r\nUnderlinePosition -100\r\nUnderlineThickness 50\r\nVersion 002.000\r\nNotice Copyright (c) 1985, 1987, 1988, 1989, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Zapf Dingbats is a registered trademark of International Typeface Corporation.\r\nEncodingScheme FontSpecific\r\nStdHW 28\r\nStdVW 90\r\nStartCharMetrics 202\r\nC 32 ; WX 278 ; N space ; B 0 0 0 0 ;\r\nC 33 ; WX 974 ; N a1 ; B 35 72 939 621 ;\r\nC 34 ; WX 961 ; N a2 ; B 35 81 927 611 ;\r\nC 35 ; WX 974 ; N a202 ; B 35 72 939 621 ;\r\nC 36 ; WX 980 ; N a3 ; B 35 0 945 692 ;\r\nC 37 ; WX 719 ; N a4 ; B 34 139 685 566 ;\r\nC 38 ; WX 789 ; N a5 ; B 35 -14 755 705 ;\r\nC 39 ; WX 790 ; N a119 ; B 35 -14 755 705 ;\r\nC 40 ; WX 791 ; N a118 ; B 35 -13 761 705 ;\r\nC 41 ; WX 690 ; N a117 ; B 34 138 655 553 ;\r\nC 42 ; WX 960 ; N a11 ; B 35 123 925 568 ;\r\nC 43 ; WX 939 ; N a12 ; B 35 134 904 559 ;\r\nC 44 ; WX 549 ; N a13 ; B 29 -11 516 705 ;\r\nC 45 ; WX 855 ; N a14 ; B 34 59 820 632 ;\r\nC 46 ; WX 911 ; N a15 ; B 35 50 876 642 ;\r\nC 47 ; WX 933 ; N a16 ; B 35 139 899 550 ;\r\nC 48 ; WX 911 ; N a105 ; B 35 50 876 642 ;\r\nC 49 ; WX 945 ; N a17 ; B 35 139 909 553 ;\r\nC 50 ; WX 974 ; N a18 ; B 35 104 938 587 ;\r\nC 51 ; WX 755 ; N a19 ; B 34 -13 721 705 ;\r\nC 52 ; WX 846 ; N a20 ; B 36 -14 811 705 ;\r\nC 53 ; WX 762 ; N a21 ; B 35 0 727 692 ;\r\nC 54 ; WX 761 ; N a22 ; B 35 0 727 692 ;\r\nC 55 ; WX 571 ; N a23 ; B -1 -68 571 661 ;\r\nC 56 ; WX 677 ; N a24 ; B 36 -13 642 705 ;\r\nC 57 ; WX 763 ; N a25 ; B 35 0 728 692 ;\r\nC 58 ; WX 760 ; N a26 ; B 35 0 726 692 ;\r\nC 59 ; WX 759 ; N a27 ; B 35 0 725 692 ;\r\nC 60 ; WX 754 ; N a28 ; B 35 0 720 692 ;\r\nC 61 ; WX 494 ; N a6 ; B 35 0 460 692 ;\r\nC 62 ; WX 552 ; N a7 ; B 35 0 517 692 ;\r\nC 63 ; WX 537 ; N a8 ; B 35 0 503 692 ;\r\nC 64 ; WX 577 ; N a9 ; B 35 96 542 596 ;\r\nC 65 ; WX 692 ; N a10 ; B 35 -14 657 705 ;\r\nC 66 ; WX 786 ; N a29 ; B 35 -14 751 705 ;\r\nC 67 ; WX 788 ; N a30 ; B 35 -14 752 705 ;\r\nC 68 ; WX 788 ; N a31 ; B 35 -14 753 705 ;\r\nC 69 ; WX 790 ; N a32 ; B 35 -14 756 705 ;\r\nC 70 ; WX 793 ; N a33 ; B 35 -13 759 705 ;\r\nC 71 ; WX 794 ; N a34 ; B 35 -13 759 705 ;\r\nC 72 ; WX 816 ; N a35 ; B 35 -14 782 705 ;\r\nC 73 ; WX 823 ; N a36 ; B 35 -14 787 705 ;\r\nC 74 ; WX 789 ; N a37 ; B 35 -14 754 705 ;\r\nC 75 ; WX 841 ; N a38 ; B 35 -14 807 705 ;\r\nC 76 ; WX 823 ; N a39 ; B 35 -14 789 705 ;\r\nC 77 ; WX 833 ; N a40 ; B 35 -14 798 705 ;\r\nC 78 ; WX 816 ; N a41 ; B 35 -13 782 705 ;\r\nC 79 ; WX 831 ; N a42 ; B 35 -14 796 705 ;\r\nC 80 ; WX 923 ; N a43 ; B 35 -14 888 705 ;\r\nC 81 ; WX 744 ; N a44 ; B 35 0 710 692 ;\r\nC 82 ; WX 723 ; N a45 ; B 35 0 688 692 ;\r\nC 83 ; WX 749 ; N a46 ; B 35 0 714 692 ;\r\nC 84 ; WX 790 ; N a47 ; B 34 -14 756 705 ;\r\nC 85 ; WX 792 ; N a48 ; B 35 -14 758 705 ;\r\nC 86 ; WX 695 ; N a49 ; B 35 -14 661 706 ;\r\nC 87 ; WX 776 ; N a50 ; B 35 -6 741 699 ;\r\nC 88 ; WX 768 ; N a51 ; B 35 -7 734 699 ;\r\nC 89 ; WX 792 ; N a52 ; B 35 -14 757 705 ;\r\nC 90 ; WX 759 ; N a53 ; B 35 0 725 692 ;\r\nC 91 ; WX 707 ; N a54 ; B 35 -13 672 704 ;\r\nC 92 ; WX 708 ; N a55 ; B 35 -14 672 705 ;\r\nC 93 ; WX 682 ; N a56 ; B 35 -14 647 705 ;\r\nC 94 ; WX 701 ; N a57 ; B 35 -14 666 705 ;\r\nC 95 ; WX 826 ; N a58 ; B 35 -14 791 705 ;\r\nC 96 ; WX 815 ; N a59 ; B 35 -14 780 705 ;\r\nC 97 ; WX 789 ; N a60 ; B 35 -14 754 705 ;\r\nC 98 ; WX 789 ; N a61 ; B 35 -14 754 705 ;\r\nC 99 ; WX 707 ; N a62 ; B 34 -14 673 705 ;\r\nC 100 ; WX 687 ; N a63 ; B 36 0 651 692 ;\r\nC 101 ; WX 696 ; N a64 ; B 35 0 661 691 ;\r\nC 102 ; WX 689 ; N a65 ; B 35 0 655 692 ;\r\nC 103 ; WX 786 ; N a66 ; B 34 -14 751 705 ;\r\nC 104 ; WX 787 ; N a67 ; B 35 -14 752 705 ;\r\nC 105 ; WX 713 ; N a68 ; B 35 -14 678 705 ;\r\nC 106 ; WX 791 ; N a69 ; B 35 -14 756 705 ;\r\nC 107 ; WX 785 ; N a70 ; B 36 -14 751 705 ;\r\nC 108 ; WX 791 ; N a71 ; B 35 -14 757 705 ;\r\nC 109 ; WX 873 ; N a72 ; B 35 -14 838 705 ;\r\nC 110 ; WX 761 ; N a73 ; B 35 0 726 692 ;\r\nC 111 ; WX 762 ; N a74 ; B 35 0 727 692 ;\r\nC 112 ; WX 762 ; N a203 ; B 35 0 727 692 ;\r\nC 113 ; WX 759 ; N a75 ; B 35 0 725 692 ;\r\nC 114 ; WX 759 ; N a204 ; B 35 0 725 692 ;\r\nC 115 ; WX 892 ; N a76 ; B 35 0 858 705 ;\r\nC 116 ; WX 892 ; N a77 ; B 35 -14 858 692 ;\r\nC 117 ; WX 788 ; N a78 ; B 35 -14 754 705 ;\r\nC 118 ; WX 784 ; N a79 ; B 35 -14 749 705 ;\r\nC 119 ; WX 438 ; N a81 ; B 35 -14 403 705 ;\r\nC 120 ; WX 138 ; N a82 ; B 35 0 104 692 ;\r\nC 121 ; WX 277 ; N a83 ; B 35 0 242 692 ;\r\nC 122 ; WX 415 ; N a84 ; B 35 0 380 692 ;\r\nC 123 ; WX 392 ; N a97 ; B 35 263 357 705 ;\r\nC 124 ; WX 392 ; N a98 ; B 34 263 357 705 ;\r\nC 125 ; WX 668 ; N a99 ; B 35 263 633 705 ;\r\nC 126 ; WX 668 ; N a100 ; B 36 263 634 705 ;\r\nC 128 ; WX 390 ; N a89 ; B 35 -14 356 705 ;\r\nC 129 ; WX 390 ; N a90 ; B 35 -14 355 705 ;\r\nC 130 ; WX 317 ; N a93 ; B 35 0 283 692 ;\r\nC 131 ; WX 317 ; N a94 ; B 35 0 283 692 ;\r\nC 132 ; WX 276 ; N a91 ; B 35 0 242 692 ;\r\nC 133 ; WX 276 ; N a92 ; B 35 0 242 692 ;\r\nC 134 ; WX 509 ; N a205 ; B 35 0 475 692 ;\r\nC 135 ; WX 509 ; N a85 ; B 35 0 475 692 ;\r\nC 136 ; WX 410 ; N a206 ; B 35 0 375 692 ;\r\nC 137 ; WX 410 ; N a86 ; B 35 0 375 692 ;\r\nC 138 ; WX 234 ; N a87 ; B 35 -14 199 705 ;\r\nC 139 ; WX 234 ; N a88 ; B 35 -14 199 705 ;\r\nC 140 ; WX 334 ; N a95 ; B 35 0 299 692 ;\r\nC 141 ; WX 334 ; N a96 ; B 35 0 299 692 ;\r\nC 161 ; WX 732 ; N a101 ; B 35 -143 697 806 ;\r\nC 162 ; WX 544 ; N a102 ; B 56 -14 488 706 ;\r\nC 163 ; WX 544 ; N a103 ; B 34 -14 508 705 ;\r\nC 164 ; WX 910 ; N a104 ; B 35 40 875 651 ;\r\nC 165 ; WX 667 ; N a106 ; B 35 -14 633 705 ;\r\nC 166 ; WX 760 ; N a107 ; B 35 -14 726 705 ;\r\nC 167 ; WX 760 ; N a108 ; B 0 121 758 569 ;\r\nC 168 ; WX 776 ; N a112 ; B 35 0 741 705 ;\r\nC 169 ; WX 595 ; N a111 ; B 34 -14 560 705 ;\r\nC 170 ; WX 694 ; N a110 ; B 35 -14 659 705 ;\r\nC 171 ; WX 626 ; N a109 ; B 34 0 591 705 ;\r\nC 172 ; WX 788 ; N a120 ; B 35 -14 754 705 ;\r\nC 173 ; WX 788 ; N a121 ; B 35 -14 754 705 ;\r\nC 174 ; WX 788 ; N a122 ; B 35 -14 754 705 ;\r\nC 175 ; WX 788 ; N a123 ; B 35 -14 754 705 ;\r\nC 176 ; WX 788 ; N a124 ; B 35 -14 754 705 ;\r\nC 177 ; WX 788 ; N a125 ; B 35 -14 754 705 ;\r\nC 178 ; WX 788 ; N a126 ; B 35 -14 754 705 ;\r\nC 179 ; WX 788 ; N a127 ; B 35 -14 754 705 ;\r\nC 180 ; WX 788 ; N a128 ; B 35 -14 754 705 ;\r\nC 181 ; WX 788 ; N a129 ; B 35 -14 754 705 ;\r\nC 182 ; WX 788 ; N a130 ; B 35 -14 754 705 ;\r\nC 183 ; WX 788 ; N a131 ; B 35 -14 754 705 ;\r\nC 184 ; WX 788 ; N a132 ; B 35 -14 754 705 ;\r\nC 185 ; WX 788 ; N a133 ; B 35 -14 754 705 ;\r\nC 186 ; WX 788 ; N a134 ; B 35 -14 754 705 ;\r\nC 187 ; WX 788 ; N a135 ; B 35 -14 754 705 ;\r\nC 188 ; WX 788 ; N a136 ; B 35 -14 754 705 ;\r\nC 189 ; WX 788 ; N a137 ; B 35 -14 754 705 ;\r\nC 190 ; WX 788 ; N a138 ; B 35 -14 754 705 ;\r\nC 191 ; WX 788 ; N a139 ; B 35 -14 754 705 ;\r\nC 192 ; WX 788 ; N a140 ; B 35 -14 754 705 ;\r\nC 193 ; WX 788 ; N a141 ; B 35 -14 754 705 ;\r\nC 194 ; WX 788 ; N a142 ; B 35 -14 754 705 ;\r\nC 195 ; WX 788 ; N a143 ; B 35 -14 754 705 ;\r\nC 196 ; WX 788 ; N a144 ; B 35 -14 754 705 ;\r\nC 197 ; WX 788 ; N a145 ; B 35 -14 754 705 ;\r\nC 198 ; WX 788 ; N a146 ; B 35 -14 754 705 ;\r\nC 199 ; WX 788 ; N a147 ; B 35 -14 754 705 ;\r\nC 200 ; WX 788 ; N a148 ; B 35 -14 754 705 ;\r\nC 201 ; WX 788 ; N a149 ; B 35 -14 754 705 ;\r\nC 202 ; WX 788 ; N a150 ; B 35 -14 754 705 ;\r\nC 203 ; WX 788 ; N a151 ; B 35 -14 754 705 ;\r\nC 204 ; WX 788 ; N a152 ; B 35 -14 754 705 ;\r\nC 205 ; WX 788 ; N a153 ; B 35 -14 754 705 ;\r\nC 206 ; WX 788 ; N a154 ; B 35 -14 754 705 ;\r\nC 207 ; WX 788 ; N a155 ; B 35 -14 754 705 ;\r\nC 208 ; WX 788 ; N a156 ; B 35 -14 754 705 ;\r\nC 209 ; WX 788 ; N a157 ; B 35 -14 754 705 ;\r\nC 210 ; WX 788 ; N a158 ; B 35 -14 754 705 ;\r\nC 211 ; WX 788 ; N a159 ; B 35 -14 754 705 ;\r\nC 212 ; WX 894 ; N a160 ; B 35 58 860 634 ;\r\nC 213 ; WX 838 ; N a161 ; B 35 152 803 540 ;\r\nC 214 ; WX 1016 ; N a163 ; B 34 152 981 540 ;\r\nC 215 ; WX 458 ; N a164 ; B 35 -127 422 820 ;\r\nC 216 ; WX 748 ; N a196 ; B 35 94 698 597 ;\r\nC 217 ; WX 924 ; N a165 ; B 35 140 890 552 ;\r\nC 218 ; WX 748 ; N a192 ; B 35 94 698 597 ;\r\nC 219 ; WX 918 ; N a166 ; B 35 166 884 526 ;\r\nC 220 ; WX 927 ; N a167 ; B 35 32 892 660 ;\r\nC 221 ; WX 928 ; N a168 ; B 35 129 891 562 ;\r\nC 222 ; WX 928 ; N a169 ; B 35 128 893 563 ;\r\nC 223 ; WX 834 ; N a170 ; B 35 155 799 537 ;\r\nC 224 ; WX 873 ; N a171 ; B 35 93 838 599 ;\r\nC 225 ; WX 828 ; N a172 ; B 35 104 791 588 ;\r\nC 226 ; WX 924 ; N a173 ; B 35 98 889 594 ;\r\nC 227 ; WX 924 ; N a162 ; B 35 98 889 594 ;\r\nC 228 ; WX 917 ; N a174 ; B 35 0 882 692 ;\r\nC 229 ; WX 930 ; N a175 ; B 35 84 896 608 ;\r\nC 230 ; WX 931 ; N a176 ; B 35 84 896 608 ;\r\nC 231 ; WX 463 ; N a177 ; B 35 -99 429 791 ;\r\nC 232 ; WX 883 ; N a178 ; B 35 71 848 623 ;\r\nC 233 ; WX 836 ; N a179 ; B 35 44 802 648 ;\r\nC 234 ; WX 836 ; N a193 ; B 35 44 802 648 ;\r\nC 235 ; WX 867 ; N a180 ; B 35 101 832 591 ;\r\nC 236 ; WX 867 ; N a199 ; B 35 101 832 591 ;\r\nC 237 ; WX 696 ; N a181 ; B 35 44 661 648 ;\r\nC 238 ; WX 696 ; N a200 ; B 35 44 661 648 ;\r\nC 239 ; WX 874 ; N a182 ; B 35 77 840 619 ;\r\nC 241 ; WX 874 ; N a201 ; B 35 73 840 615 ;\r\nC 242 ; WX 760 ; N a183 ; B 35 0 725 692 ;\r\nC 243 ; WX 946 ; N a184 ; B 35 160 911 533 ;\r\nC 244 ; WX 771 ; N a197 ; B 34 37 736 655 ;\r\nC 245 ; WX 865 ; N a185 ; B 35 207 830 481 ;\r\nC 246 ; WX 771 ; N a194 ; B 34 37 736 655 ;\r\nC 247 ; WX 888 ; N a198 ; B 34 -19 853 712 ;\r\nC 248 ; WX 967 ; N a186 ; B 35 124 932 568 ;\r\nC 249 ; WX 888 ; N a195 ; B 34 -19 853 712 ;\r\nC 250 ; WX 831 ; N a187 ; B 35 113 796 579 ;\r\nC 251 ; WX 873 ; N a188 ; B 36 118 838 578 ;\r\nC 252 ; WX 927 ; N a189 ; B 35 150 891 542 ;\r\nC 253 ; WX 970 ; N a190 ; B 35 76 931 616 ;\r\nC 254 ; WX 918 ; N a191 ; B 34 99 884 593 ;\r\nEndCharMetrics\r\nEndFontMetrics\r\n", encoding: 'utf8' }
|
|
5
|
+
'data/ZapfDingbats.afm': { data: "StartFontMetrics 4.1\nComment Copyright (c) 1985, 1987, 1988, 1989, 1997 Adobe Systems Incorporated. All Rights Reserved.\nComment Creation Date: Thu May 1 15:14:13 1997\nComment UniqueID 43082\nComment VMusage 45775 55535\nFontName ZapfDingbats\nFullName ITC Zapf Dingbats\nFamilyName ZapfDingbats\nWeight Medium\nItalicAngle 0\nIsFixedPitch false\nCharacterSet Special\nFontBBox -1 -143 981 820 \nUnderlinePosition -100\nUnderlineThickness 50\nVersion 002.000\nNotice Copyright (c) 1985, 1987, 1988, 1989, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Zapf Dingbats is a registered trademark of International Typeface Corporation.\nEncodingScheme FontSpecific\nStdHW 28\nStdVW 90\nStartCharMetrics 202\nC 32 ; WX 278 ; N space ; B 0 0 0 0 ;\nC 33 ; WX 974 ; N a1 ; B 35 72 939 621 ;\nC 34 ; WX 961 ; N a2 ; B 35 81 927 611 ;\nC 35 ; WX 974 ; N a202 ; B 35 72 939 621 ;\nC 36 ; WX 980 ; N a3 ; B 35 0 945 692 ;\nC 37 ; WX 719 ; N a4 ; B 34 139 685 566 ;\nC 38 ; WX 789 ; N a5 ; B 35 -14 755 705 ;\nC 39 ; WX 790 ; N a119 ; B 35 -14 755 705 ;\nC 40 ; WX 791 ; N a118 ; B 35 -13 761 705 ;\nC 41 ; WX 690 ; N a117 ; B 34 138 655 553 ;\nC 42 ; WX 960 ; N a11 ; B 35 123 925 568 ;\nC 43 ; WX 939 ; N a12 ; B 35 134 904 559 ;\nC 44 ; WX 549 ; N a13 ; B 29 -11 516 705 ;\nC 45 ; WX 855 ; N a14 ; B 34 59 820 632 ;\nC 46 ; WX 911 ; N a15 ; B 35 50 876 642 ;\nC 47 ; WX 933 ; N a16 ; B 35 139 899 550 ;\nC 48 ; WX 911 ; N a105 ; B 35 50 876 642 ;\nC 49 ; WX 945 ; N a17 ; B 35 139 909 553 ;\nC 50 ; WX 974 ; N a18 ; B 35 104 938 587 ;\nC 51 ; WX 755 ; N a19 ; B 34 -13 721 705 ;\nC 52 ; WX 846 ; N a20 ; B 36 -14 811 705 ;\nC 53 ; WX 762 ; N a21 ; B 35 0 727 692 ;\nC 54 ; WX 761 ; N a22 ; B 35 0 727 692 ;\nC 55 ; WX 571 ; N a23 ; B -1 -68 571 661 ;\nC 56 ; WX 677 ; N a24 ; B 36 -13 642 705 ;\nC 57 ; WX 763 ; N a25 ; B 35 0 728 692 ;\nC 58 ; WX 760 ; N a26 ; B 35 0 726 692 ;\nC 59 ; WX 759 ; N a27 ; B 35 0 725 692 ;\nC 60 ; WX 754 ; N a28 ; B 35 0 720 692 ;\nC 61 ; WX 494 ; N a6 ; B 35 0 460 692 ;\nC 62 ; WX 552 ; N a7 ; B 35 0 517 692 ;\nC 63 ; WX 537 ; N a8 ; B 35 0 503 692 ;\nC 64 ; WX 577 ; N a9 ; B 35 96 542 596 ;\nC 65 ; WX 692 ; N a10 ; B 35 -14 657 705 ;\nC 66 ; WX 786 ; N a29 ; B 35 -14 751 705 ;\nC 67 ; WX 788 ; N a30 ; B 35 -14 752 705 ;\nC 68 ; WX 788 ; N a31 ; B 35 -14 753 705 ;\nC 69 ; WX 790 ; N a32 ; B 35 -14 756 705 ;\nC 70 ; WX 793 ; N a33 ; B 35 -13 759 705 ;\nC 71 ; WX 794 ; N a34 ; B 35 -13 759 705 ;\nC 72 ; WX 816 ; N a35 ; B 35 -14 782 705 ;\nC 73 ; WX 823 ; N a36 ; B 35 -14 787 705 ;\nC 74 ; WX 789 ; N a37 ; B 35 -14 754 705 ;\nC 75 ; WX 841 ; N a38 ; B 35 -14 807 705 ;\nC 76 ; WX 823 ; N a39 ; B 35 -14 789 705 ;\nC 77 ; WX 833 ; N a40 ; B 35 -14 798 705 ;\nC 78 ; WX 816 ; N a41 ; B 35 -13 782 705 ;\nC 79 ; WX 831 ; N a42 ; B 35 -14 796 705 ;\nC 80 ; WX 923 ; N a43 ; B 35 -14 888 705 ;\nC 81 ; WX 744 ; N a44 ; B 35 0 710 692 ;\nC 82 ; WX 723 ; N a45 ; B 35 0 688 692 ;\nC 83 ; WX 749 ; N a46 ; B 35 0 714 692 ;\nC 84 ; WX 790 ; N a47 ; B 34 -14 756 705 ;\nC 85 ; WX 792 ; N a48 ; B 35 -14 758 705 ;\nC 86 ; WX 695 ; N a49 ; B 35 -14 661 706 ;\nC 87 ; WX 776 ; N a50 ; B 35 -6 741 699 ;\nC 88 ; WX 768 ; N a51 ; B 35 -7 734 699 ;\nC 89 ; WX 792 ; N a52 ; B 35 -14 757 705 ;\nC 90 ; WX 759 ; N a53 ; B 35 0 725 692 ;\nC 91 ; WX 707 ; N a54 ; B 35 -13 672 704 ;\nC 92 ; WX 708 ; N a55 ; B 35 -14 672 705 ;\nC 93 ; WX 682 ; N a56 ; B 35 -14 647 705 ;\nC 94 ; WX 701 ; N a57 ; B 35 -14 666 705 ;\nC 95 ; WX 826 ; N a58 ; B 35 -14 791 705 ;\nC 96 ; WX 815 ; N a59 ; B 35 -14 780 705 ;\nC 97 ; WX 789 ; N a60 ; B 35 -14 754 705 ;\nC 98 ; WX 789 ; N a61 ; B 35 -14 754 705 ;\nC 99 ; WX 707 ; N a62 ; B 34 -14 673 705 ;\nC 100 ; WX 687 ; N a63 ; B 36 0 651 692 ;\nC 101 ; WX 696 ; N a64 ; B 35 0 661 691 ;\nC 102 ; WX 689 ; N a65 ; B 35 0 655 692 ;\nC 103 ; WX 786 ; N a66 ; B 34 -14 751 705 ;\nC 104 ; WX 787 ; N a67 ; B 35 -14 752 705 ;\nC 105 ; WX 713 ; N a68 ; B 35 -14 678 705 ;\nC 106 ; WX 791 ; N a69 ; B 35 -14 756 705 ;\nC 107 ; WX 785 ; N a70 ; B 36 -14 751 705 ;\nC 108 ; WX 791 ; N a71 ; B 35 -14 757 705 ;\nC 109 ; WX 873 ; N a72 ; B 35 -14 838 705 ;\nC 110 ; WX 761 ; N a73 ; B 35 0 726 692 ;\nC 111 ; WX 762 ; N a74 ; B 35 0 727 692 ;\nC 112 ; WX 762 ; N a203 ; B 35 0 727 692 ;\nC 113 ; WX 759 ; N a75 ; B 35 0 725 692 ;\nC 114 ; WX 759 ; N a204 ; B 35 0 725 692 ;\nC 115 ; WX 892 ; N a76 ; B 35 0 858 705 ;\nC 116 ; WX 892 ; N a77 ; B 35 -14 858 692 ;\nC 117 ; WX 788 ; N a78 ; B 35 -14 754 705 ;\nC 118 ; WX 784 ; N a79 ; B 35 -14 749 705 ;\nC 119 ; WX 438 ; N a81 ; B 35 -14 403 705 ;\nC 120 ; WX 138 ; N a82 ; B 35 0 104 692 ;\nC 121 ; WX 277 ; N a83 ; B 35 0 242 692 ;\nC 122 ; WX 415 ; N a84 ; B 35 0 380 692 ;\nC 123 ; WX 392 ; N a97 ; B 35 263 357 705 ;\nC 124 ; WX 392 ; N a98 ; B 34 263 357 705 ;\nC 125 ; WX 668 ; N a99 ; B 35 263 633 705 ;\nC 126 ; WX 668 ; N a100 ; B 36 263 634 705 ;\nC 128 ; WX 390 ; N a89 ; B 35 -14 356 705 ;\nC 129 ; WX 390 ; N a90 ; B 35 -14 355 705 ;\nC 130 ; WX 317 ; N a93 ; B 35 0 283 692 ;\nC 131 ; WX 317 ; N a94 ; B 35 0 283 692 ;\nC 132 ; WX 276 ; N a91 ; B 35 0 242 692 ;\nC 133 ; WX 276 ; N a92 ; B 35 0 242 692 ;\nC 134 ; WX 509 ; N a205 ; B 35 0 475 692 ;\nC 135 ; WX 509 ; N a85 ; B 35 0 475 692 ;\nC 136 ; WX 410 ; N a206 ; B 35 0 375 692 ;\nC 137 ; WX 410 ; N a86 ; B 35 0 375 692 ;\nC 138 ; WX 234 ; N a87 ; B 35 -14 199 705 ;\nC 139 ; WX 234 ; N a88 ; B 35 -14 199 705 ;\nC 140 ; WX 334 ; N a95 ; B 35 0 299 692 ;\nC 141 ; WX 334 ; N a96 ; B 35 0 299 692 ;\nC 161 ; WX 732 ; N a101 ; B 35 -143 697 806 ;\nC 162 ; WX 544 ; N a102 ; B 56 -14 488 706 ;\nC 163 ; WX 544 ; N a103 ; B 34 -14 508 705 ;\nC 164 ; WX 910 ; N a104 ; B 35 40 875 651 ;\nC 165 ; WX 667 ; N a106 ; B 35 -14 633 705 ;\nC 166 ; WX 760 ; N a107 ; B 35 -14 726 705 ;\nC 167 ; WX 760 ; N a108 ; B 0 121 758 569 ;\nC 168 ; WX 776 ; N a112 ; B 35 0 741 705 ;\nC 169 ; WX 595 ; N a111 ; B 34 -14 560 705 ;\nC 170 ; WX 694 ; N a110 ; B 35 -14 659 705 ;\nC 171 ; WX 626 ; N a109 ; B 34 0 591 705 ;\nC 172 ; WX 788 ; N a120 ; B 35 -14 754 705 ;\nC 173 ; WX 788 ; N a121 ; B 35 -14 754 705 ;\nC 174 ; WX 788 ; N a122 ; B 35 -14 754 705 ;\nC 175 ; WX 788 ; N a123 ; B 35 -14 754 705 ;\nC 176 ; WX 788 ; N a124 ; B 35 -14 754 705 ;\nC 177 ; WX 788 ; N a125 ; B 35 -14 754 705 ;\nC 178 ; WX 788 ; N a126 ; B 35 -14 754 705 ;\nC 179 ; WX 788 ; N a127 ; B 35 -14 754 705 ;\nC 180 ; WX 788 ; N a128 ; B 35 -14 754 705 ;\nC 181 ; WX 788 ; N a129 ; B 35 -14 754 705 ;\nC 182 ; WX 788 ; N a130 ; B 35 -14 754 705 ;\nC 183 ; WX 788 ; N a131 ; B 35 -14 754 705 ;\nC 184 ; WX 788 ; N a132 ; B 35 -14 754 705 ;\nC 185 ; WX 788 ; N a133 ; B 35 -14 754 705 ;\nC 186 ; WX 788 ; N a134 ; B 35 -14 754 705 ;\nC 187 ; WX 788 ; N a135 ; B 35 -14 754 705 ;\nC 188 ; WX 788 ; N a136 ; B 35 -14 754 705 ;\nC 189 ; WX 788 ; N a137 ; B 35 -14 754 705 ;\nC 190 ; WX 788 ; N a138 ; B 35 -14 754 705 ;\nC 191 ; WX 788 ; N a139 ; B 35 -14 754 705 ;\nC 192 ; WX 788 ; N a140 ; B 35 -14 754 705 ;\nC 193 ; WX 788 ; N a141 ; B 35 -14 754 705 ;\nC 194 ; WX 788 ; N a142 ; B 35 -14 754 705 ;\nC 195 ; WX 788 ; N a143 ; B 35 -14 754 705 ;\nC 196 ; WX 788 ; N a144 ; B 35 -14 754 705 ;\nC 197 ; WX 788 ; N a145 ; B 35 -14 754 705 ;\nC 198 ; WX 788 ; N a146 ; B 35 -14 754 705 ;\nC 199 ; WX 788 ; N a147 ; B 35 -14 754 705 ;\nC 200 ; WX 788 ; N a148 ; B 35 -14 754 705 ;\nC 201 ; WX 788 ; N a149 ; B 35 -14 754 705 ;\nC 202 ; WX 788 ; N a150 ; B 35 -14 754 705 ;\nC 203 ; WX 788 ; N a151 ; B 35 -14 754 705 ;\nC 204 ; WX 788 ; N a152 ; B 35 -14 754 705 ;\nC 205 ; WX 788 ; N a153 ; B 35 -14 754 705 ;\nC 206 ; WX 788 ; N a154 ; B 35 -14 754 705 ;\nC 207 ; WX 788 ; N a155 ; B 35 -14 754 705 ;\nC 208 ; WX 788 ; N a156 ; B 35 -14 754 705 ;\nC 209 ; WX 788 ; N a157 ; B 35 -14 754 705 ;\nC 210 ; WX 788 ; N a158 ; B 35 -14 754 705 ;\nC 211 ; WX 788 ; N a159 ; B 35 -14 754 705 ;\nC 212 ; WX 894 ; N a160 ; B 35 58 860 634 ;\nC 213 ; WX 838 ; N a161 ; B 35 152 803 540 ;\nC 214 ; WX 1016 ; N a163 ; B 34 152 981 540 ;\nC 215 ; WX 458 ; N a164 ; B 35 -127 422 820 ;\nC 216 ; WX 748 ; N a196 ; B 35 94 698 597 ;\nC 217 ; WX 924 ; N a165 ; B 35 140 890 552 ;\nC 218 ; WX 748 ; N a192 ; B 35 94 698 597 ;\nC 219 ; WX 918 ; N a166 ; B 35 166 884 526 ;\nC 220 ; WX 927 ; N a167 ; B 35 32 892 660 ;\nC 221 ; WX 928 ; N a168 ; B 35 129 891 562 ;\nC 222 ; WX 928 ; N a169 ; B 35 128 893 563 ;\nC 223 ; WX 834 ; N a170 ; B 35 155 799 537 ;\nC 224 ; WX 873 ; N a171 ; B 35 93 838 599 ;\nC 225 ; WX 828 ; N a172 ; B 35 104 791 588 ;\nC 226 ; WX 924 ; N a173 ; B 35 98 889 594 ;\nC 227 ; WX 924 ; N a162 ; B 35 98 889 594 ;\nC 228 ; WX 917 ; N a174 ; B 35 0 882 692 ;\nC 229 ; WX 930 ; N a175 ; B 35 84 896 608 ;\nC 230 ; WX 931 ; N a176 ; B 35 84 896 608 ;\nC 231 ; WX 463 ; N a177 ; B 35 -99 429 791 ;\nC 232 ; WX 883 ; N a178 ; B 35 71 848 623 ;\nC 233 ; WX 836 ; N a179 ; B 35 44 802 648 ;\nC 234 ; WX 836 ; N a193 ; B 35 44 802 648 ;\nC 235 ; WX 867 ; N a180 ; B 35 101 832 591 ;\nC 236 ; WX 867 ; N a199 ; B 35 101 832 591 ;\nC 237 ; WX 696 ; N a181 ; B 35 44 661 648 ;\nC 238 ; WX 696 ; N a200 ; B 35 44 661 648 ;\nC 239 ; WX 874 ; N a182 ; B 35 77 840 619 ;\nC 241 ; WX 874 ; N a201 ; B 35 73 840 615 ;\nC 242 ; WX 760 ; N a183 ; B 35 0 725 692 ;\nC 243 ; WX 946 ; N a184 ; B 35 160 911 533 ;\nC 244 ; WX 771 ; N a197 ; B 34 37 736 655 ;\nC 245 ; WX 865 ; N a185 ; B 35 207 830 481 ;\nC 246 ; WX 771 ; N a194 ; B 34 37 736 655 ;\nC 247 ; WX 888 ; N a198 ; B 34 -19 853 712 ;\nC 248 ; WX 967 ; N a186 ; B 35 124 932 568 ;\nC 249 ; WX 888 ; N a195 ; B 34 -19 853 712 ;\nC 250 ; WX 831 ; N a187 ; B 35 113 796 579 ;\nC 251 ; WX 873 ; N a188 ; B 36 118 838 578 ;\nC 252 ; WX 927 ; N a189 ; B 35 150 891 542 ;\nC 253 ; WX 970 ; N a190 ; B 35 76 931 616 ;\nC 254 ; WX 918 ; N a191 ; B 34 99 884 593 ;\nEndCharMetrics\nEndFontMetrics\n", encoding: 'utf8' }
|
|
6
6
|
},
|
|
7
7
|
fonts: {
|
|
8
8
|
ZapfDingbats: {
|
package/js/LayoutBuilder.js
CHANGED
|
@@ -845,11 +845,13 @@ class LayoutBuilder {
|
|
|
845
845
|
// We store a reference of the ending cell in the first cell of the rowspan
|
|
846
846
|
cell._endingCell = rowSpanRightEndingCell;
|
|
847
847
|
cell._endingCell._startingRowSpanY = cell._startingRowSpanY;
|
|
848
|
+
cell._endingCell._startingRowSpanPage = cell._startingRowSpanPage;
|
|
848
849
|
}
|
|
849
850
|
if (rowSpanLeftEndingCell) {
|
|
850
851
|
// We store a reference of the left ending cell in the first cell of the rowspan
|
|
851
852
|
cell._leftEndingCell = rowSpanLeftEndingCell;
|
|
852
853
|
cell._leftEndingCell._startingRowSpanY = cell._startingRowSpanY;
|
|
854
|
+
cell._leftEndingCell._startingRowSpanPage = cell._startingRowSpanPage;
|
|
853
855
|
}
|
|
854
856
|
|
|
855
857
|
// If we are after a cell that started a rowspan
|
|
@@ -884,7 +886,13 @@ class LayoutBuilder {
|
|
|
884
886
|
if (dontBreakRows) {
|
|
885
887
|
// Calculate how many points we have to discount to Y when dontBreakRows and rowSpan are combined
|
|
886
888
|
const ctxBeforeRowSpanLastRow = this.writer.contextStack[this.writer.contextStack.length - 1];
|
|
887
|
-
|
|
889
|
+
const startsOnCurrentPage = typeof cell._startingRowSpanPage === 'number' && cell._startingRowSpanPage === ctxBeforeRowSpanLastRow.page;
|
|
890
|
+
if (startsOnCurrentPage && typeof cell._startingRowSpanY === 'number') {
|
|
891
|
+
discountY = ctxBeforeRowSpanLastRow.y - cell._startingRowSpanY;
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
// Do not increase Y by applying a negative discount.
|
|
895
|
+
discountY = Math.max(0, discountY);
|
|
888
896
|
}
|
|
889
897
|
let originalXOffset = 0;
|
|
890
898
|
// If context was saved from an unbreakable block and we are not in an unbreakable block anymore
|
|
@@ -1046,6 +1054,7 @@ class LayoutBuilder {
|
|
|
1046
1054
|
tableNode.table.body[i].forEach(cell => {
|
|
1047
1055
|
if (cell.rowSpan && cell.rowSpan > 1) {
|
|
1048
1056
|
cell._startingRowSpanY = this.writer.context().y;
|
|
1057
|
+
cell._startingRowSpanPage = this.writer.context().page;
|
|
1049
1058
|
}
|
|
1050
1059
|
});
|
|
1051
1060
|
}
|
package/js/PDFDocument.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.default = void 0;
|
|
5
5
|
var _pdfkit = _interopRequireDefault(require("pdfkit"));
|
|
6
|
+
var _variableType = require("./helpers/variableType");
|
|
6
7
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
8
|
const typeName = (bold, italics) => {
|
|
8
9
|
let type = 'normal';
|
|
@@ -16,7 +17,7 @@ const typeName = (bold, italics) => {
|
|
|
16
17
|
return type;
|
|
17
18
|
};
|
|
18
19
|
class PDFDocument extends _pdfkit.default {
|
|
19
|
-
constructor(fonts = {}, images = {}, patterns = {}, attachments = {}, options = {}, virtualfs = null) {
|
|
20
|
+
constructor(fonts = {}, images = {}, patterns = {}, attachments = {}, options = {}, virtualfs = null, localAccessPolicy = undefined) {
|
|
20
21
|
super(options);
|
|
21
22
|
this.fonts = {};
|
|
22
23
|
this.fontCache = {};
|
|
@@ -41,6 +42,7 @@ class PDFDocument extends _pdfkit.default {
|
|
|
41
42
|
this.images = images;
|
|
42
43
|
this.attachments = attachments;
|
|
43
44
|
this.virtualfs = virtualfs;
|
|
45
|
+
this.localAccessPolicy = localAccessPolicy;
|
|
44
46
|
}
|
|
45
47
|
getFontType(bold, italics) {
|
|
46
48
|
return typeName(bold, italics);
|
|
@@ -65,6 +67,8 @@ class PDFDocument extends _pdfkit.default {
|
|
|
65
67
|
}
|
|
66
68
|
if (this.virtualfs && this.virtualfs.existsSync(def[0])) {
|
|
67
69
|
def[0] = this.virtualfs.readFileSync(def[0]);
|
|
70
|
+
} else {
|
|
71
|
+
this.validateLocalFile(def[0]);
|
|
68
72
|
}
|
|
69
73
|
this.fontCache[familyName][type] = this.font(...def)._font;
|
|
70
74
|
}
|
|
@@ -89,8 +93,10 @@ class PDFDocument extends _pdfkit.default {
|
|
|
89
93
|
return this._imageRegistry[src];
|
|
90
94
|
}
|
|
91
95
|
let image;
|
|
96
|
+
let imageSrc = realImageSrc(src);
|
|
97
|
+
this.validateLocalFile(imageSrc);
|
|
92
98
|
try {
|
|
93
|
-
image = this.openImage(
|
|
99
|
+
image = this.openImage(imageSrc);
|
|
94
100
|
if (!image) {
|
|
95
101
|
throw new Error('No image');
|
|
96
102
|
}
|
|
@@ -131,8 +137,19 @@ class PDFDocument extends _pdfkit.default {
|
|
|
131
137
|
if (this.virtualfs && this.virtualfs.existsSync(attachment.src)) {
|
|
132
138
|
return this.virtualfs.readFileSync(attachment.src);
|
|
133
139
|
}
|
|
140
|
+
this.validateLocalFile(attachment.src);
|
|
134
141
|
return attachment;
|
|
135
142
|
}
|
|
143
|
+
resolveColor(color, defaultColor) {
|
|
144
|
+
color = color || defaultColor;
|
|
145
|
+
if (typeof this._normalizeColor === 'function') {
|
|
146
|
+
if ((0, _variableType.isString)(color) && this._normalizeColor(color) === null) {
|
|
147
|
+
// color is not valid
|
|
148
|
+
return defaultColor;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return color;
|
|
152
|
+
}
|
|
136
153
|
setOpenActionAsPrint() {
|
|
137
154
|
let printActionRef = this.ref({
|
|
138
155
|
Type: 'Action',
|
|
@@ -142,5 +159,23 @@ class PDFDocument extends _pdfkit.default {
|
|
|
142
159
|
this._root.data.OpenAction = printActionRef;
|
|
143
160
|
printActionRef.end();
|
|
144
161
|
}
|
|
162
|
+
file(src, options = {}) {
|
|
163
|
+
this.validateLocalFile(src);
|
|
164
|
+
return super.file(src, options);
|
|
165
|
+
}
|
|
166
|
+
validateLocalFile(path) {
|
|
167
|
+
if (typeof this.localAccessPolicy === 'undefined') {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
if (!(0, _variableType.isString)(path)) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
if (/^data:/.test(path)) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
if (this.localAccessPolicy(path) !== true) {
|
|
177
|
+
throw new Error(`Access to local file denied by resource access policy: ${path}`);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
145
180
|
}
|
|
146
181
|
var _default = exports.default = PDFDocument;
|
package/js/Printer.js
CHANGED
|
@@ -16,11 +16,13 @@ class PdfPrinter {
|
|
|
16
16
|
* @param {object} fontDescriptors font definition dictionary
|
|
17
17
|
* @param {object} virtualfs
|
|
18
18
|
* @param {object} urlResolver
|
|
19
|
+
* @param {(path: string) => boolean} localAccessPolicy
|
|
19
20
|
*/
|
|
20
|
-
constructor(fontDescriptors, virtualfs, urlResolver) {
|
|
21
|
+
constructor(fontDescriptors, virtualfs, urlResolver, localAccessPolicy) {
|
|
21
22
|
this.fontDescriptors = fontDescriptors;
|
|
22
23
|
this.virtualfs = virtualfs;
|
|
23
24
|
this.urlResolver = urlResolver;
|
|
25
|
+
this.localAccessPolicy = localAccessPolicy;
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
/**
|
|
@@ -66,7 +68,7 @@ class PdfPrinter {
|
|
|
66
68
|
info: createMetadata(docDefinition),
|
|
67
69
|
font: null
|
|
68
70
|
};
|
|
69
|
-
this.pdfKitDoc = new _PDFDocument.default(this.fontDescriptors, docDefinition.images, docDefinition.patterns, docDefinition.attachments, pdfOptions, this.virtualfs);
|
|
71
|
+
this.pdfKitDoc = new _PDFDocument.default(this.fontDescriptors, docDefinition.images, docDefinition.patterns, docDefinition.attachments, pdfOptions, this.virtualfs, this.localAccessPolicy);
|
|
70
72
|
embedFiles(docDefinition, this.pdfKitDoc);
|
|
71
73
|
const builder = new _LayoutBuilder.default(pageSize, (0, _PageSize.normalizePageMargin)(docDefinition.pageMargins), new _SVGMeasure.default());
|
|
72
74
|
builder.registerTableLayouts(_tableLayouts.tableLayouts);
|
package/js/Renderer.js
CHANGED
|
@@ -171,7 +171,7 @@ class Renderer {
|
|
|
171
171
|
}
|
|
172
172
|
let opacity = (0, _variableType.isNumber)(inline.opacity) ? inline.opacity : 1;
|
|
173
173
|
this.pdfDocument.opacity(opacity);
|
|
174
|
-
this.pdfDocument.fill(inline.color
|
|
174
|
+
this.pdfDocument.fill(this.pdfDocument.resolveColor(inline.color, 'black'));
|
|
175
175
|
this.pdfDocument._font = inline.font;
|
|
176
176
|
this.pdfDocument.fontSize(inline.fontSize);
|
|
177
177
|
let shiftedY = offsetText(y + shiftToBaseline, inline);
|
|
@@ -264,14 +264,14 @@ class Renderer {
|
|
|
264
264
|
let fillOpacity = (0, _variableType.isNumber)(vector.fillOpacity) ? vector.fillOpacity : 1;
|
|
265
265
|
let strokeOpacity = (0, _variableType.isNumber)(vector.strokeOpacity) ? vector.strokeOpacity : 1;
|
|
266
266
|
if (vector.color && vector.lineColor) {
|
|
267
|
-
this.pdfDocument.fillColor(vector.color, fillOpacity);
|
|
268
|
-
this.pdfDocument.strokeColor(vector.lineColor, strokeOpacity);
|
|
267
|
+
this.pdfDocument.fillColor(this.pdfDocument.resolveColor(vector.color, 'black'), fillOpacity);
|
|
268
|
+
this.pdfDocument.strokeColor(this.pdfDocument.resolveColor(vector.lineColor, 'black'), strokeOpacity);
|
|
269
269
|
this.pdfDocument.fillAndStroke();
|
|
270
270
|
} else if (vector.color) {
|
|
271
|
-
this.pdfDocument.fillColor(vector.color, fillOpacity);
|
|
271
|
+
this.pdfDocument.fillColor(this.pdfDocument.resolveColor(vector.color, 'black'), fillOpacity);
|
|
272
272
|
this.pdfDocument.fill();
|
|
273
273
|
} else {
|
|
274
|
-
this.pdfDocument.strokeColor(vector.lineColor
|
|
274
|
+
this.pdfDocument.strokeColor(this.pdfDocument.resolveColor(vector.lineColor, 'black'), strokeOpacity);
|
|
275
275
|
this.pdfDocument.stroke();
|
|
276
276
|
}
|
|
277
277
|
}
|
|
@@ -411,7 +411,7 @@ class Renderer {
|
|
|
411
411
|
}
|
|
412
412
|
renderWatermark(page) {
|
|
413
413
|
let watermark = page.watermark;
|
|
414
|
-
this.pdfDocument.fill(watermark.color);
|
|
414
|
+
this.pdfDocument.fill(this.pdfDocument.resolveColor(watermark.color, 'black'));
|
|
415
415
|
this.pdfDocument.opacity(watermark.opacity);
|
|
416
416
|
this.pdfDocument.save();
|
|
417
417
|
this.pdfDocument.rotate(watermark.angle, {
|
package/js/TableProcessor.js
CHANGED
|
@@ -5,9 +5,17 @@ exports.default = void 0;
|
|
|
5
5
|
var _columnCalculator = _interopRequireDefault(require("./columnCalculator"));
|
|
6
6
|
var _variableType = require("./helpers/variableType");
|
|
7
7
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
+
const PAGE_BREAK_VALUES = new Set(['before', 'beforeOdd', 'beforeEven', 'after', 'afterOdd', 'afterEven']);
|
|
9
|
+
const hasExplicitPageBreak = cell => {
|
|
10
|
+
if (!cell || typeof cell !== 'object') {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
return PAGE_BREAK_VALUES.has(cell.pageBreak);
|
|
14
|
+
};
|
|
8
15
|
class TableProcessor {
|
|
9
16
|
constructor(tableNode) {
|
|
10
17
|
this.tableNode = tableNode;
|
|
18
|
+
this._isCurrentRowUnbreakable = false;
|
|
11
19
|
}
|
|
12
20
|
beginTable(writer) {
|
|
13
21
|
const getTableInnerContentWidth = () => {
|
|
@@ -146,7 +154,10 @@ class TableProcessor {
|
|
|
146
154
|
writer.context().moveDown(this.topLineWidth);
|
|
147
155
|
}
|
|
148
156
|
this.rowTopPageY = writer.context().y + this.rowPaddingTop;
|
|
149
|
-
|
|
157
|
+
const rowCells = this.tableNode.table.body[rowIndex] || [];
|
|
158
|
+
const rowHasPageBreak = rowCells.some(hasExplicitPageBreak);
|
|
159
|
+
this._isCurrentRowUnbreakable = this.dontBreakRows && rowIndex > 0 && !rowHasPageBreak;
|
|
160
|
+
if (this._isCurrentRowUnbreakable) {
|
|
150
161
|
writer.beginUnbreakableBlock();
|
|
151
162
|
}
|
|
152
163
|
this.rowTopY = writer.context().y;
|
|
@@ -536,7 +547,8 @@ class TableProcessor {
|
|
|
536
547
|
if (this.headerRows && rowIndex === this.headerRows - 1) {
|
|
537
548
|
this.headerRepeatable = writer.currentBlockToRepeatable();
|
|
538
549
|
}
|
|
539
|
-
|
|
550
|
+
const shouldCommitCurrentRowUnbreakable = this.dontBreakRows && (rowIndex === 0 || this._isCurrentRowUnbreakable);
|
|
551
|
+
if (shouldCommitCurrentRowUnbreakable) {
|
|
540
552
|
const pageChangedCallback = () => {
|
|
541
553
|
if (rowIndex > 0 && !this.headerRows && this.layout.hLineWhenBroken !== false) {
|
|
542
554
|
// Draw the top border of the row after a page break
|
|
@@ -547,6 +559,7 @@ class TableProcessor {
|
|
|
547
559
|
writer.commitUnbreakableBlock();
|
|
548
560
|
writer.removeListener('pageChanged', pageChangedCallback);
|
|
549
561
|
}
|
|
562
|
+
this._isCurrentRowUnbreakable = false;
|
|
550
563
|
if (this.headerRepeatable && (rowIndex === this.rowsWithoutPageBreak - 1 || rowIndex === this.tableNode.table.body.length - 1)) {
|
|
551
564
|
writer.commitUnbreakableBlock();
|
|
552
565
|
writer.pushToRepeatables(this.headerRepeatable);
|
package/js/TextDecorator.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.default = void 0;
|
|
5
5
|
var _variableType = require("./helpers/variableType");
|
|
6
|
-
const groupDecorations = line => {
|
|
6
|
+
const groupDecorations = (line, pdfDocument) => {
|
|
7
7
|
let groups = [];
|
|
8
8
|
let currentGroup = null;
|
|
9
9
|
for (let i = 0, l = line.inlines.length; i < l; i++) {
|
|
@@ -16,7 +16,7 @@ const groupDecorations = line => {
|
|
|
16
16
|
if (!Array.isArray(decoration)) {
|
|
17
17
|
decoration = [decoration];
|
|
18
18
|
}
|
|
19
|
-
let color = inline.decorationColor
|
|
19
|
+
let color = pdfDocument.resolveColor(pdfDocument.resolveColor(inline.decorationColor, inline.color), 'black');
|
|
20
20
|
let style = inline.decorationStyle || 'solid';
|
|
21
21
|
let thickness = (0, _variableType.isNumber)(inline.decorationThickness) ? inline.decorationThickness : null;
|
|
22
22
|
for (let ii = 0, ll = decoration.length; ii < ll; ii++) {
|
|
@@ -46,10 +46,10 @@ class TextDecorator {
|
|
|
46
46
|
let height = line.getHeight();
|
|
47
47
|
for (let i = 0, l = line.inlines.length; i < l; i++) {
|
|
48
48
|
let inline = line.inlines[i];
|
|
49
|
-
|
|
49
|
+
let color = this.pdfDocument.resolveColor(inline.background, undefined);
|
|
50
|
+
if (!color) {
|
|
50
51
|
continue;
|
|
51
52
|
}
|
|
52
|
-
let color = inline.background;
|
|
53
53
|
let patternColor = this.pdfDocument.providePattern(inline.background);
|
|
54
54
|
if (patternColor !== null) {
|
|
55
55
|
color = patternColor;
|
|
@@ -59,7 +59,7 @@ class TextDecorator {
|
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
drawDecorations(line, x, y) {
|
|
62
|
-
let groups = groupDecorations(line);
|
|
62
|
+
let groups = groupDecorations(line, this.pdfDocument);
|
|
63
63
|
for (let i = 0, l = groups.length; i < l; i++) {
|
|
64
64
|
this._drawDecoration(groups[i], x, y);
|
|
65
65
|
}
|
package/js/URLResolver.js
CHANGED
|
@@ -2,20 +2,52 @@
|
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.default = void 0;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
const MAX_REDIRECTS = 30;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @param {string} url
|
|
9
|
+
* @param {object} headers
|
|
10
|
+
* @param {(url: string) => boolean} urlAccessPolicy
|
|
11
|
+
* @returns {Promise<Response>}
|
|
12
|
+
*/
|
|
13
|
+
async function fetchUrl(url, headers = {}, urlAccessPolicy) {
|
|
14
|
+
for (let i = 0; i <= MAX_REDIRECTS; i++) {
|
|
15
|
+
if (typeof urlAccessPolicy !== 'undefined' && urlAccessPolicy(url) !== true) {
|
|
16
|
+
throw new Error(`Access to URL denied by resource access policy: ${url}`);
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
let response = await fetch(url, {
|
|
20
|
+
headers,
|
|
21
|
+
redirect: 'manual'
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
// redirect url
|
|
25
|
+
if (response.status >= 300 && response.status < 400) {
|
|
26
|
+
let location = response.headers.get('location');
|
|
27
|
+
if (!location) {
|
|
28
|
+
throw new Error('Redirect response missing Location header');
|
|
29
|
+
}
|
|
30
|
+
url = new URL(location, url).href;
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// browsers do not support redirect: 'manual'
|
|
35
|
+
if (response.type === 'opaqueredirect') {
|
|
36
|
+
response = await fetch(url, {
|
|
37
|
+
headers
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
if (!response.ok) {
|
|
41
|
+
throw new Error(`Failed to fetch (status code: ${response.status})`);
|
|
42
|
+
}
|
|
43
|
+
return response;
|
|
44
|
+
} catch (error) {
|
|
45
|
+
throw new Error(`Network request failed (url: "${url}", error: ${error.message})`, {
|
|
46
|
+
cause: error
|
|
47
|
+
});
|
|
12
48
|
}
|
|
13
|
-
return await response.arrayBuffer();
|
|
14
|
-
} catch (error) {
|
|
15
|
-
throw new Error(`Network request failed (url: "${url}", error: ${error.message})`, {
|
|
16
|
-
cause: error
|
|
17
|
-
});
|
|
18
49
|
}
|
|
50
|
+
throw new Error(`Network request failed (url: "${url}", error: Too many redirects)`);
|
|
19
51
|
}
|
|
20
52
|
class URLResolver {
|
|
21
53
|
constructor(fs) {
|
|
@@ -36,10 +68,15 @@ class URLResolver {
|
|
|
36
68
|
if (this.fs.existsSync(url)) {
|
|
37
69
|
return; // url was downloaded earlier
|
|
38
70
|
}
|
|
39
|
-
|
|
40
|
-
|
|
71
|
+
const response = await fetchUrl(url, headers, this.urlAccessPolicy);
|
|
72
|
+
|
|
73
|
+
// validate access policy on redirected url (in browsers, only the final URL is validated)
|
|
74
|
+
if (response.redirected) {
|
|
75
|
+
if (typeof this.urlAccessPolicy !== 'undefined' && this.urlAccessPolicy(response.url) !== true) {
|
|
76
|
+
throw new Error(`Access to URL denied by resource access policy: ${response.url}`);
|
|
77
|
+
}
|
|
41
78
|
}
|
|
42
|
-
const buffer = await
|
|
79
|
+
const buffer = await response.arrayBuffer();
|
|
43
80
|
this.fs.writeFileSync(url, buffer);
|
|
44
81
|
}
|
|
45
82
|
// else cannot be resolved
|
package/js/base.js
CHANGED
|
@@ -12,6 +12,7 @@ class pdfmake {
|
|
|
12
12
|
constructor() {
|
|
13
13
|
this.virtualfs = _virtualFs.default;
|
|
14
14
|
this.urlAccessPolicy = undefined;
|
|
15
|
+
this.localAccessPolicy = undefined;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
/**
|
|
@@ -32,9 +33,12 @@ class pdfmake {
|
|
|
32
33
|
if (typeof this.urlAccessPolicy === 'undefined' && isServer) {
|
|
33
34
|
console.warn('No URL access policy defined. Consider using setUrlAccessPolicy() to restrict external resource downloads.');
|
|
34
35
|
}
|
|
36
|
+
if (typeof this.localAccessPolicy === 'undefined' && isServer) {
|
|
37
|
+
console.warn('No local access policy defined. Consider using setLocalAccessPolicy() to restrict local file system access.');
|
|
38
|
+
}
|
|
35
39
|
let urlResolver = new _URLResolver.default(this.virtualfs);
|
|
36
40
|
urlResolver.setUrlAccessPolicy(this.urlAccessPolicy);
|
|
37
|
-
let printer = new _Printer.default(this.fonts, this.virtualfs, urlResolver);
|
|
41
|
+
let printer = new _Printer.default(this.fonts, this.virtualfs, urlResolver, this.localAccessPolicy);
|
|
38
42
|
const pdfDocumentPromise = printer.createPdfKitDocument(docDefinition, options);
|
|
39
43
|
return this._transformToDocument(pdfDocumentPromise);
|
|
40
44
|
}
|
package/js/index.js
CHANGED
|
@@ -6,6 +6,16 @@ class pdfmake extends pdfmakeBase {
|
|
|
6
6
|
constructor() {
|
|
7
7
|
super();
|
|
8
8
|
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @param {(path: string) => boolean} callback
|
|
12
|
+
*/
|
|
13
|
+
setLocalAccessPolicy(callback) {
|
|
14
|
+
if (callback !== undefined && typeof callback !== 'function') {
|
|
15
|
+
throw new Error("Parameter 'callback' has an invalid type. Function or undefined expected.");
|
|
16
|
+
}
|
|
17
|
+
this.localAccessPolicy = callback;
|
|
18
|
+
}
|
|
9
19
|
_transformToDocument(doc) {
|
|
10
20
|
return new OutputDocumentServer(doc);
|
|
11
21
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pdfmake",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.8",
|
|
4
4
|
"description": "Client/server side PDF printing in pure JavaScript",
|
|
5
5
|
"main": "js/index.js",
|
|
6
6
|
"esnext": "src/index.js",
|
|
@@ -10,41 +10,41 @@
|
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"linebreak": "^1.1.0",
|
|
13
|
-
"pdfkit": "^0.
|
|
13
|
+
"pdfkit": "^0.18.0",
|
|
14
14
|
"xmldoc": "^2.0.3"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"@babel/cli": "^7.28.6",
|
|
18
18
|
"@babel/core": "^7.29.0",
|
|
19
19
|
"@babel/plugin-transform-modules-commonjs": "^7.28.6",
|
|
20
|
-
"@babel/preset-env": "^7.29.
|
|
20
|
+
"@babel/preset-env": "^7.29.5",
|
|
21
21
|
"@eslint/js": "^10.0.1",
|
|
22
22
|
"assert": "^2.1.0",
|
|
23
|
-
"babel-loader": "^10.
|
|
23
|
+
"babel-loader": "^10.1.1",
|
|
24
24
|
"brfs": "^2.0.2",
|
|
25
25
|
"browserify-zlib": "^0.2.0",
|
|
26
26
|
"buffer": "^6.0.3",
|
|
27
|
-
"core-js": "^3.
|
|
28
|
-
"eslint": "^10.0
|
|
29
|
-
"eslint-plugin-jsdoc": "^62.
|
|
27
|
+
"core-js": "^3.49.0",
|
|
28
|
+
"eslint": "^10.3.0",
|
|
29
|
+
"eslint-plugin-jsdoc": "^62.9.0",
|
|
30
30
|
"expose-loader": "^5.0.1",
|
|
31
31
|
"file-saver": "^2.0.5",
|
|
32
|
-
"globals": "^17.
|
|
32
|
+
"globals": "^17.6.0",
|
|
33
33
|
"mocha": "^11.7.5",
|
|
34
34
|
"npm-run-all": "^4.1.5",
|
|
35
35
|
"process": "^0.11.10",
|
|
36
36
|
"rewire": "^9.0.1",
|
|
37
37
|
"shx": "^0.4.0",
|
|
38
|
-
"sinon": "^
|
|
38
|
+
"sinon": "^22.0.0",
|
|
39
39
|
"source-map-loader": "^5.0.0",
|
|
40
40
|
"stream-browserify": "^3.0.0",
|
|
41
41
|
"string-replace-webpack-plugin": "^0.1.3",
|
|
42
42
|
"svg-to-pdfkit": "github:alafr/SVG-to-PDFKit#b091ebd4e7b7d2310eb1003511cd5de480f7e0e1",
|
|
43
|
-
"terser-webpack-plugin": "^5.
|
|
43
|
+
"terser-webpack-plugin": "^5.5.0",
|
|
44
44
|
"transform-loader": "^0.2.4",
|
|
45
45
|
"util": "^0.12.5",
|
|
46
|
-
"webpack": "^5.
|
|
47
|
-
"webpack-cli": "^
|
|
46
|
+
"webpack": "^5.106.2",
|
|
47
|
+
"webpack-cli": "^7.0.2"
|
|
48
48
|
},
|
|
49
49
|
"engines": {
|
|
50
50
|
"node": ">=20"
|
package/src/LayoutBuilder.js
CHANGED
|
@@ -942,11 +942,13 @@ class LayoutBuilder {
|
|
|
942
942
|
// We store a reference of the ending cell in the first cell of the rowspan
|
|
943
943
|
cell._endingCell = rowSpanRightEndingCell;
|
|
944
944
|
cell._endingCell._startingRowSpanY = cell._startingRowSpanY;
|
|
945
|
+
cell._endingCell._startingRowSpanPage = cell._startingRowSpanPage;
|
|
945
946
|
}
|
|
946
947
|
if (rowSpanLeftEndingCell) {
|
|
947
948
|
// We store a reference of the left ending cell in the first cell of the rowspan
|
|
948
949
|
cell._leftEndingCell = rowSpanLeftEndingCell;
|
|
949
950
|
cell._leftEndingCell._startingRowSpanY = cell._startingRowSpanY;
|
|
951
|
+
cell._leftEndingCell._startingRowSpanPage = cell._startingRowSpanPage;
|
|
950
952
|
}
|
|
951
953
|
|
|
952
954
|
// If we are after a cell that started a rowspan
|
|
@@ -984,7 +986,17 @@ class LayoutBuilder {
|
|
|
984
986
|
if (dontBreakRows) {
|
|
985
987
|
// Calculate how many points we have to discount to Y when dontBreakRows and rowSpan are combined
|
|
986
988
|
const ctxBeforeRowSpanLastRow = this.writer.contextStack[this.writer.contextStack.length - 1];
|
|
987
|
-
|
|
989
|
+
const startsOnCurrentPage = (
|
|
990
|
+
typeof cell._startingRowSpanPage === 'number' &&
|
|
991
|
+
cell._startingRowSpanPage === ctxBeforeRowSpanLastRow.page
|
|
992
|
+
);
|
|
993
|
+
|
|
994
|
+
if (startsOnCurrentPage && typeof cell._startingRowSpanY === 'number') {
|
|
995
|
+
discountY = ctxBeforeRowSpanLastRow.y - cell._startingRowSpanY;
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
// Do not increase Y by applying a negative discount.
|
|
999
|
+
discountY = Math.max(0, discountY);
|
|
988
1000
|
}
|
|
989
1001
|
let originalXOffset = 0;
|
|
990
1002
|
// If context was saved from an unbreakable block and we are not in an unbreakable block anymore
|
|
@@ -1170,6 +1182,7 @@ class LayoutBuilder {
|
|
|
1170
1182
|
tableNode.table.body[i].forEach(cell => {
|
|
1171
1183
|
if (cell.rowSpan && cell.rowSpan > 1) {
|
|
1172
1184
|
cell._startingRowSpanY = this.writer.context().y;
|
|
1185
|
+
cell._startingRowSpanPage = this.writer.context().page;
|
|
1173
1186
|
}
|
|
1174
1187
|
});
|
|
1175
1188
|
}
|
package/src/PDFDocument.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import PDFKit from 'pdfkit';
|
|
2
|
+
import { isString } from './helpers/variableType';
|
|
2
3
|
|
|
3
4
|
const typeName = (bold, italics) => {
|
|
4
5
|
let type = 'normal';
|
|
@@ -13,7 +14,7 @@ const typeName = (bold, italics) => {
|
|
|
13
14
|
};
|
|
14
15
|
|
|
15
16
|
class PDFDocument extends PDFKit {
|
|
16
|
-
constructor(fonts = {}, images = {}, patterns = {}, attachments = {}, options = {}, virtualfs = null) {
|
|
17
|
+
constructor(fonts = {}, images = {}, patterns = {}, attachments = {}, options = {}, virtualfs = null, localAccessPolicy = undefined) {
|
|
17
18
|
super(options);
|
|
18
19
|
|
|
19
20
|
this.fonts = {};
|
|
@@ -39,10 +40,10 @@ class PDFDocument extends PDFKit {
|
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
42
|
|
|
42
|
-
|
|
43
43
|
this.images = images;
|
|
44
44
|
this.attachments = attachments;
|
|
45
45
|
this.virtualfs = virtualfs;
|
|
46
|
+
this.localAccessPolicy = localAccessPolicy;
|
|
46
47
|
}
|
|
47
48
|
|
|
48
49
|
getFontType(bold, italics) {
|
|
@@ -74,6 +75,8 @@ class PDFDocument extends PDFKit {
|
|
|
74
75
|
|
|
75
76
|
if (this.virtualfs && this.virtualfs.existsSync(def[0])) {
|
|
76
77
|
def[0] = this.virtualfs.readFileSync(def[0]);
|
|
78
|
+
} else {
|
|
79
|
+
this.validateLocalFile(def[0]);
|
|
77
80
|
}
|
|
78
81
|
|
|
79
82
|
this.fontCache[familyName][type] = this.font(...def)._font;
|
|
@@ -108,8 +111,12 @@ class PDFDocument extends PDFKit {
|
|
|
108
111
|
|
|
109
112
|
let image;
|
|
110
113
|
|
|
114
|
+
let imageSrc = realImageSrc(src);
|
|
115
|
+
|
|
116
|
+
this.validateLocalFile(imageSrc);
|
|
117
|
+
|
|
111
118
|
try {
|
|
112
|
-
image = this.openImage(
|
|
119
|
+
image = this.openImage(imageSrc);
|
|
113
120
|
if (!image) {
|
|
114
121
|
throw new Error('No image');
|
|
115
122
|
}
|
|
@@ -157,9 +164,23 @@ class PDFDocument extends PDFKit {
|
|
|
157
164
|
return this.virtualfs.readFileSync(attachment.src);
|
|
158
165
|
}
|
|
159
166
|
|
|
167
|
+
this.validateLocalFile(attachment.src);
|
|
168
|
+
|
|
160
169
|
return attachment;
|
|
161
170
|
}
|
|
162
171
|
|
|
172
|
+
resolveColor(color, defaultColor) {
|
|
173
|
+
color = color || defaultColor;
|
|
174
|
+
|
|
175
|
+
if (typeof this._normalizeColor === 'function') {
|
|
176
|
+
if (isString(color) && this._normalizeColor(color) === null) { // color is not valid
|
|
177
|
+
return defaultColor;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
return color;
|
|
182
|
+
}
|
|
183
|
+
|
|
163
184
|
setOpenActionAsPrint() {
|
|
164
185
|
let printActionRef = this.ref({
|
|
165
186
|
Type: 'Action',
|
|
@@ -169,6 +190,30 @@ class PDFDocument extends PDFKit {
|
|
|
169
190
|
this._root.data.OpenAction = printActionRef;
|
|
170
191
|
printActionRef.end();
|
|
171
192
|
}
|
|
193
|
+
|
|
194
|
+
file(src, options = {}) {
|
|
195
|
+
this.validateLocalFile(src);
|
|
196
|
+
|
|
197
|
+
return super.file(src, options);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
validateLocalFile(path) {
|
|
201
|
+
if (typeof this.localAccessPolicy === 'undefined') {
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
if (!isString(path)) {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
if (/^data:/.test(path)) {
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
if (this.localAccessPolicy(path) !== true) {
|
|
214
|
+
throw new Error(`Access to local file denied by resource access policy: ${path}`);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
172
217
|
}
|
|
173
218
|
|
|
174
219
|
export default PDFDocument;
|