pdf-reader 2.4.0 → 2.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +31 -0
- data/README.md +17 -2
- data/Rakefile +1 -1
- data/examples/extract_fonts.rb +12 -7
- data/lib/pdf/reader/afm/Courier-Bold.afm +342 -342
- data/lib/pdf/reader/afm/Courier-BoldOblique.afm +342 -342
- data/lib/pdf/reader/afm/Courier-Oblique.afm +342 -342
- data/lib/pdf/reader/afm/Courier.afm +342 -342
- data/lib/pdf/reader/afm/Helvetica-Bold.afm +2827 -2827
- data/lib/pdf/reader/afm/Helvetica-BoldOblique.afm +2827 -2827
- data/lib/pdf/reader/afm/Helvetica-Oblique.afm +3051 -3051
- data/lib/pdf/reader/afm/Helvetica.afm +3051 -3051
- data/lib/pdf/reader/afm/MustRead.html +19 -0
- data/lib/pdf/reader/afm/Symbol.afm +213 -213
- data/lib/pdf/reader/afm/Times-Bold.afm +2588 -2588
- data/lib/pdf/reader/afm/Times-BoldItalic.afm +2384 -2384
- data/lib/pdf/reader/afm/Times-Italic.afm +2667 -2667
- data/lib/pdf/reader/afm/Times-Roman.afm +2419 -2419
- data/lib/pdf/reader/afm/ZapfDingbats.afm +225 -225
- data/lib/pdf/reader/buffer.rb +62 -21
- data/lib/pdf/reader/encoding.rb +1 -1
- data/lib/pdf/reader/error.rb +3 -3
- data/lib/pdf/reader/filter/ascii85.rb +5 -1
- data/lib/pdf/reader/filter/depredict.rb +3 -3
- data/lib/pdf/reader/filter/flate.rb +28 -16
- data/lib/pdf/reader/font.rb +3 -1
- data/lib/pdf/reader/glyph_hash.rb +15 -9
- data/lib/pdf/reader/glyphlist-zapfdingbats.txt +245 -0
- data/lib/pdf/reader/object_hash.rb +3 -1
- data/lib/pdf/reader/orientation_detector.rb +2 -2
- data/lib/pdf/reader/page.rb +28 -0
- data/lib/pdf/reader/page_layout.rb +19 -13
- data/lib/pdf/reader/page_state.rb +7 -5
- data/lib/pdf/reader/page_text_receiver.rb +22 -1
- data/lib/pdf/reader/parser.rb +8 -6
- data/lib/pdf/reader/width_calculator/built_in.rb +7 -15
- data/lib/pdf/reader/xref.rb +6 -1
- data/lib/pdf/reader/zero_width_runs_filter.rb +11 -0
- metadata +17 -14
@@ -1,225 +1,225 @@
|
|
1
|
-
StartFontMetrics 4.1
|
2
|
-
Comment Copyright (c) 1985, 1987, 1988, 1989, 1997 Adobe Systems Incorporated. All Rights Reserved.
|
3
|
-
Comment Creation Date: Thu May 1 15:14:13 1997
|
4
|
-
Comment UniqueID 43082
|
5
|
-
Comment VMusage 45775 55535
|
6
|
-
FontName ZapfDingbats
|
7
|
-
FullName ITC Zapf Dingbats
|
8
|
-
FamilyName ZapfDingbats
|
9
|
-
Weight Medium
|
10
|
-
ItalicAngle 0
|
11
|
-
IsFixedPitch false
|
12
|
-
CharacterSet Special
|
13
|
-
FontBBox -1 -143 981 820
|
14
|
-
UnderlinePosition -100
|
15
|
-
UnderlineThickness 50
|
16
|
-
Version 002.000
|
17
|
-
Notice Copyright (c) 1985, 1987, 1988, 1989, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Zapf Dingbats is a registered trademark of International Typeface Corporation.
|
18
|
-
EncodingScheme FontSpecific
|
19
|
-
StdHW 28
|
20
|
-
StdVW 90
|
21
|
-
StartCharMetrics 202
|
22
|
-
C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
|
23
|
-
C 33 ; WX 974 ; N a1 ; B 35 72 939 621 ;
|
24
|
-
C 34 ; WX 961 ; N a2 ; B 35 81 927 611 ;
|
25
|
-
C 35 ; WX 974 ; N a202 ; B 35 72 939 621 ;
|
26
|
-
C 36 ; WX 980 ; N a3 ; B 35 0 945 692 ;
|
27
|
-
C 37 ; WX 719 ; N a4 ; B 34 139 685 566 ;
|
28
|
-
C 38 ; WX 789 ; N a5 ; B 35 -14 755 705 ;
|
29
|
-
C 39 ; WX 790 ; N a119 ; B 35 -14 755 705 ;
|
30
|
-
C 40 ; WX 791 ; N a118 ; B 35 -13 761 705 ;
|
31
|
-
C 41 ; WX 690 ; N a117 ; B 34 138 655 553 ;
|
32
|
-
C 42 ; WX 960 ; N a11 ; B 35 123 925 568 ;
|
33
|
-
C 43 ; WX 939 ; N a12 ; B 35 134 904 559 ;
|
34
|
-
C 44 ; WX 549 ; N a13 ; B 29 -11 516 705 ;
|
35
|
-
C 45 ; WX 855 ; N a14 ; B 34 59 820 632 ;
|
36
|
-
C 46 ; WX 911 ; N a15 ; B 35 50 876 642 ;
|
37
|
-
C 47 ; WX 933 ; N a16 ; B 35 139 899 550 ;
|
38
|
-
C 48 ; WX 911 ; N a105 ; B 35 50 876 642 ;
|
39
|
-
C 49 ; WX 945 ; N a17 ; B 35 139 909 553 ;
|
40
|
-
C 50 ; WX 974 ; N a18 ; B 35 104 938 587 ;
|
41
|
-
C 51 ; WX 755 ; N a19 ; B 34 -13 721 705 ;
|
42
|
-
C 52 ; WX 846 ; N a20 ; B 36 -14 811 705 ;
|
43
|
-
C 53 ; WX 762 ; N a21 ; B 35 0 727 692 ;
|
44
|
-
C 54 ; WX 761 ; N a22 ; B 35 0 727 692 ;
|
45
|
-
C 55 ; WX 571 ; N a23 ; B -1 -68 571 661 ;
|
46
|
-
C 56 ; WX 677 ; N a24 ; B 36 -13 642 705 ;
|
47
|
-
C 57 ; WX 763 ; N a25 ; B 35 0 728 692 ;
|
48
|
-
C 58 ; WX 760 ; N a26 ; B 35 0 726 692 ;
|
49
|
-
C 59 ; WX 759 ; N a27 ; B 35 0 725 692 ;
|
50
|
-
C 60 ; WX 754 ; N a28 ; B 35 0 720 692 ;
|
51
|
-
C 61 ; WX 494 ; N a6 ; B 35 0 460 692 ;
|
52
|
-
C 62 ; WX 552 ; N a7 ; B 35 0 517 692 ;
|
53
|
-
C 63 ; WX 537 ; N a8 ; B 35 0 503 692 ;
|
54
|
-
C 64 ; WX 577 ; N a9 ; B 35 96 542 596 ;
|
55
|
-
C 65 ; WX 692 ; N a10 ; B 35 -14 657 705 ;
|
56
|
-
C 66 ; WX 786 ; N a29 ; B 35 -14 751 705 ;
|
57
|
-
C 67 ; WX 788 ; N a30 ; B 35 -14 752 705 ;
|
58
|
-
C 68 ; WX 788 ; N a31 ; B 35 -14 753 705 ;
|
59
|
-
C 69 ; WX 790 ; N a32 ; B 35 -14 756 705 ;
|
60
|
-
C 70 ; WX 793 ; N a33 ; B 35 -13 759 705 ;
|
61
|
-
C 71 ; WX 794 ; N a34 ; B 35 -13 759 705 ;
|
62
|
-
C 72 ; WX 816 ; N a35 ; B 35 -14 782 705 ;
|
63
|
-
C 73 ; WX 823 ; N a36 ; B 35 -14 787 705 ;
|
64
|
-
C 74 ; WX 789 ; N a37 ; B 35 -14 754 705 ;
|
65
|
-
C 75 ; WX 841 ; N a38 ; B 35 -14 807 705 ;
|
66
|
-
C 76 ; WX 823 ; N a39 ; B 35 -14 789 705 ;
|
67
|
-
C 77 ; WX 833 ; N a40 ; B 35 -14 798 705 ;
|
68
|
-
C 78 ; WX 816 ; N a41 ; B 35 -13 782 705 ;
|
69
|
-
C 79 ; WX 831 ; N a42 ; B 35 -14 796 705 ;
|
70
|
-
C 80 ; WX 923 ; N a43 ; B 35 -14 888 705 ;
|
71
|
-
C 81 ; WX 744 ; N a44 ; B 35 0 710 692 ;
|
72
|
-
C 82 ; WX 723 ; N a45 ; B 35 0 688 692 ;
|
73
|
-
C 83 ; WX 749 ; N a46 ; B 35 0 714 692 ;
|
74
|
-
C 84 ; WX 790 ; N a47 ; B 34 -14 756 705 ;
|
75
|
-
C 85 ; WX 792 ; N a48 ; B 35 -14 758 705 ;
|
76
|
-
C 86 ; WX 695 ; N a49 ; B 35 -14 661 706 ;
|
77
|
-
C 87 ; WX 776 ; N a50 ; B 35 -6 741 699 ;
|
78
|
-
C 88 ; WX 768 ; N a51 ; B 35 -7 734 699 ;
|
79
|
-
C 89 ; WX 792 ; N a52 ; B 35 -14 757 705 ;
|
80
|
-
C 90 ; WX 759 ; N a53 ; B 35 0 725 692 ;
|
81
|
-
C 91 ; WX 707 ; N a54 ; B 35 -13 672 704 ;
|
82
|
-
C 92 ; WX 708 ; N a55 ; B 35 -14 672 705 ;
|
83
|
-
C 93 ; WX 682 ; N a56 ; B 35 -14 647 705 ;
|
84
|
-
C 94 ; WX 701 ; N a57 ; B 35 -14 666 705 ;
|
85
|
-
C 95 ; WX 826 ; N a58 ; B 35 -14 791 705 ;
|
86
|
-
C 96 ; WX 815 ; N a59 ; B 35 -14 780 705 ;
|
87
|
-
C 97 ; WX 789 ; N a60 ; B 35 -14 754 705 ;
|
88
|
-
C 98 ; WX 789 ; N a61 ; B 35 -14 754 705 ;
|
89
|
-
C 99 ; WX 707 ; N a62 ; B 34 -14 673 705 ;
|
90
|
-
C 100 ; WX 687 ; N a63 ; B 36 0 651 692 ;
|
91
|
-
C 101 ; WX 696 ; N a64 ; B 35 0 661 691 ;
|
92
|
-
C 102 ; WX 689 ; N a65 ; B 35 0 655 692 ;
|
93
|
-
C 103 ; WX 786 ; N a66 ; B 34 -14 751 705 ;
|
94
|
-
C 104 ; WX 787 ; N a67 ; B 35 -14 752 705 ;
|
95
|
-
C 105 ; WX 713 ; N a68 ; B 35 -14 678 705 ;
|
96
|
-
C 106 ; WX 791 ; N a69 ; B 35 -14 756 705 ;
|
97
|
-
C 107 ; WX 785 ; N a70 ; B 36 -14 751 705 ;
|
98
|
-
C 108 ; WX 791 ; N a71 ; B 35 -14 757 705 ;
|
99
|
-
C 109 ; WX 873 ; N a72 ; B 35 -14 838 705 ;
|
100
|
-
C 110 ; WX 761 ; N a73 ; B 35 0 726 692 ;
|
101
|
-
C 111 ; WX 762 ; N a74 ; B 35 0 727 692 ;
|
102
|
-
C 112 ; WX 762 ; N a203 ; B 35 0 727 692 ;
|
103
|
-
C 113 ; WX 759 ; N a75 ; B 35 0 725 692 ;
|
104
|
-
C 114 ; WX 759 ; N a204 ; B 35 0 725 692 ;
|
105
|
-
C 115 ; WX 892 ; N a76 ; B 35 0 858 705 ;
|
106
|
-
C 116 ; WX 892 ; N a77 ; B 35 -14 858 692 ;
|
107
|
-
C 117 ; WX 788 ; N a78 ; B 35 -14 754 705 ;
|
108
|
-
C 118 ; WX 784 ; N a79 ; B 35 -14 749 705 ;
|
109
|
-
C 119 ; WX 438 ; N a81 ; B 35 -14 403 705 ;
|
110
|
-
C 120 ; WX 138 ; N a82 ; B 35 0 104 692 ;
|
111
|
-
C 121 ; WX 277 ; N a83 ; B 35 0 242 692 ;
|
112
|
-
C 122 ; WX 415 ; N a84 ; B 35 0 380 692 ;
|
113
|
-
C 123 ; WX 392 ; N a97 ; B 35 263 357 705 ;
|
114
|
-
C 124 ; WX 392 ; N a98 ; B 34 263 357 705 ;
|
115
|
-
C 125 ; WX 668 ; N a99 ; B 35 263 633 705 ;
|
116
|
-
C 126 ; WX 668 ; N a100 ; B 36 263 634 705 ;
|
117
|
-
C 128 ; WX 390 ; N a89 ; B 35 -14 356 705 ;
|
118
|
-
C 129 ; WX 390 ; N a90 ; B 35 -14 355 705 ;
|
119
|
-
C 130 ; WX 317 ; N a93 ; B 35 0 283 692 ;
|
120
|
-
C 131 ; WX 317 ; N a94 ; B 35 0 283 692 ;
|
121
|
-
C 132 ; WX 276 ; N a91 ; B 35 0 242 692 ;
|
122
|
-
C 133 ; WX 276 ; N a92 ; B 35 0 242 692 ;
|
123
|
-
C 134 ; WX 509 ; N a205 ; B 35 0 475 692 ;
|
124
|
-
C 135 ; WX 509 ; N a85 ; B 35 0 475 692 ;
|
125
|
-
C 136 ; WX 410 ; N a206 ; B 35 0 375 692 ;
|
126
|
-
C 137 ; WX 410 ; N a86 ; B 35 0 375 692 ;
|
127
|
-
C 138 ; WX 234 ; N a87 ; B 35 -14 199 705 ;
|
128
|
-
C 139 ; WX 234 ; N a88 ; B 35 -14 199 705 ;
|
129
|
-
C 140 ; WX 334 ; N a95 ; B 35 0 299 692 ;
|
130
|
-
C 141 ; WX 334 ; N a96 ; B 35 0 299 692 ;
|
131
|
-
C 161 ; WX 732 ; N a101 ; B 35 -143 697 806 ;
|
132
|
-
C 162 ; WX 544 ; N a102 ; B 56 -14 488 706 ;
|
133
|
-
C 163 ; WX 544 ; N a103 ; B 34 -14 508 705 ;
|
134
|
-
C 164 ; WX 910 ; N a104 ; B 35 40 875 651 ;
|
135
|
-
C 165 ; WX 667 ; N a106 ; B 35 -14 633 705 ;
|
136
|
-
C 166 ; WX 760 ; N a107 ; B 35 -14 726 705 ;
|
137
|
-
C 167 ; WX 760 ; N a108 ; B 0 121 758 569 ;
|
138
|
-
C 168 ; WX 776 ; N a112 ; B 35 0 741 705 ;
|
139
|
-
C 169 ; WX 595 ; N a111 ; B 34 -14 560 705 ;
|
140
|
-
C 170 ; WX 694 ; N a110 ; B 35 -14 659 705 ;
|
141
|
-
C 171 ; WX 626 ; N a109 ; B 34 0 591 705 ;
|
142
|
-
C 172 ; WX 788 ; N a120 ; B 35 -14 754 705 ;
|
143
|
-
C 173 ; WX 788 ; N a121 ; B 35 -14 754 705 ;
|
144
|
-
C 174 ; WX 788 ; N a122 ; B 35 -14 754 705 ;
|
145
|
-
C 175 ; WX 788 ; N a123 ; B 35 -14 754 705 ;
|
146
|
-
C 176 ; WX 788 ; N a124 ; B 35 -14 754 705 ;
|
147
|
-
C 177 ; WX 788 ; N a125 ; B 35 -14 754 705 ;
|
148
|
-
C 178 ; WX 788 ; N a126 ; B 35 -14 754 705 ;
|
149
|
-
C 179 ; WX 788 ; N a127 ; B 35 -14 754 705 ;
|
150
|
-
C 180 ; WX 788 ; N a128 ; B 35 -14 754 705 ;
|
151
|
-
C 181 ; WX 788 ; N a129 ; B 35 -14 754 705 ;
|
152
|
-
C 182 ; WX 788 ; N a130 ; B 35 -14 754 705 ;
|
153
|
-
C 183 ; WX 788 ; N a131 ; B 35 -14 754 705 ;
|
154
|
-
C 184 ; WX 788 ; N a132 ; B 35 -14 754 705 ;
|
155
|
-
C 185 ; WX 788 ; N a133 ; B 35 -14 754 705 ;
|
156
|
-
C 186 ; WX 788 ; N a134 ; B 35 -14 754 705 ;
|
157
|
-
C 187 ; WX 788 ; N a135 ; B 35 -14 754 705 ;
|
158
|
-
C 188 ; WX 788 ; N a136 ; B 35 -14 754 705 ;
|
159
|
-
C 189 ; WX 788 ; N a137 ; B 35 -14 754 705 ;
|
160
|
-
C 190 ; WX 788 ; N a138 ; B 35 -14 754 705 ;
|
161
|
-
C 191 ; WX 788 ; N a139 ; B 35 -14 754 705 ;
|
162
|
-
C 192 ; WX 788 ; N a140 ; B 35 -14 754 705 ;
|
163
|
-
C 193 ; WX 788 ; N a141 ; B 35 -14 754 705 ;
|
164
|
-
C 194 ; WX 788 ; N a142 ; B 35 -14 754 705 ;
|
165
|
-
C 195 ; WX 788 ; N a143 ; B 35 -14 754 705 ;
|
166
|
-
C 196 ; WX 788 ; N a144 ; B 35 -14 754 705 ;
|
167
|
-
C 197 ; WX 788 ; N a145 ; B 35 -14 754 705 ;
|
168
|
-
C 198 ; WX 788 ; N a146 ; B 35 -14 754 705 ;
|
169
|
-
C 199 ; WX 788 ; N a147 ; B 35 -14 754 705 ;
|
170
|
-
C 200 ; WX 788 ; N a148 ; B 35 -14 754 705 ;
|
171
|
-
C 201 ; WX 788 ; N a149 ; B 35 -14 754 705 ;
|
172
|
-
C 202 ; WX 788 ; N a150 ; B 35 -14 754 705 ;
|
173
|
-
C 203 ; WX 788 ; N a151 ; B 35 -14 754 705 ;
|
174
|
-
C 204 ; WX 788 ; N a152 ; B 35 -14 754 705 ;
|
175
|
-
C 205 ; WX 788 ; N a153 ; B 35 -14 754 705 ;
|
176
|
-
C 206 ; WX 788 ; N a154 ; B 35 -14 754 705 ;
|
177
|
-
C 207 ; WX 788 ; N a155 ; B 35 -14 754 705 ;
|
178
|
-
C 208 ; WX 788 ; N a156 ; B 35 -14 754 705 ;
|
179
|
-
C 209 ; WX 788 ; N a157 ; B 35 -14 754 705 ;
|
180
|
-
C 210 ; WX 788 ; N a158 ; B 35 -14 754 705 ;
|
181
|
-
C 211 ; WX 788 ; N a159 ; B 35 -14 754 705 ;
|
182
|
-
C 212 ; WX 894 ; N a160 ; B 35 58 860 634 ;
|
183
|
-
C 213 ; WX 838 ; N a161 ; B 35 152 803 540 ;
|
184
|
-
C 214 ; WX 1016 ; N a163 ; B 34 152 981 540 ;
|
185
|
-
C 215 ; WX 458 ; N a164 ; B 35 -127 422 820 ;
|
186
|
-
C 216 ; WX 748 ; N a196 ; B 35 94 698 597 ;
|
187
|
-
C 217 ; WX 924 ; N a165 ; B 35 140 890 552 ;
|
188
|
-
C 218 ; WX 748 ; N a192 ; B 35 94 698 597 ;
|
189
|
-
C 219 ; WX 918 ; N a166 ; B 35 166 884 526 ;
|
190
|
-
C 220 ; WX 927 ; N a167 ; B 35 32 892 660 ;
|
191
|
-
C 221 ; WX 928 ; N a168 ; B 35 129 891 562 ;
|
192
|
-
C 222 ; WX 928 ; N a169 ; B 35 128 893 563 ;
|
193
|
-
C 223 ; WX 834 ; N a170 ; B 35 155 799 537 ;
|
194
|
-
C 224 ; WX 873 ; N a171 ; B 35 93 838 599 ;
|
195
|
-
C 225 ; WX 828 ; N a172 ; B 35 104 791 588 ;
|
196
|
-
C 226 ; WX 924 ; N a173 ; B 35 98 889 594 ;
|
197
|
-
C 227 ; WX 924 ; N a162 ; B 35 98 889 594 ;
|
198
|
-
C 228 ; WX 917 ; N a174 ; B 35 0 882 692 ;
|
199
|
-
C 229 ; WX 930 ; N a175 ; B 35 84 896 608 ;
|
200
|
-
C 230 ; WX 931 ; N a176 ; B 35 84 896 608 ;
|
201
|
-
C 231 ; WX 463 ; N a177 ; B 35 -99 429 791 ;
|
202
|
-
C 232 ; WX 883 ; N a178 ; B 35 71 848 623 ;
|
203
|
-
C 233 ; WX 836 ; N a179 ; B 35 44 802 648 ;
|
204
|
-
C 234 ; WX 836 ; N a193 ; B 35 44 802 648 ;
|
205
|
-
C 235 ; WX 867 ; N a180 ; B 35 101 832 591 ;
|
206
|
-
C 236 ; WX 867 ; N a199 ; B 35 101 832 591 ;
|
207
|
-
C 237 ; WX 696 ; N a181 ; B 35 44 661 648 ;
|
208
|
-
C 238 ; WX 696 ; N a200 ; B 35 44 661 648 ;
|
209
|
-
C 239 ; WX 874 ; N a182 ; B 35 77 840 619 ;
|
210
|
-
C 241 ; WX 874 ; N a201 ; B 35 73 840 615 ;
|
211
|
-
C 242 ; WX 760 ; N a183 ; B 35 0 725 692 ;
|
212
|
-
C 243 ; WX 946 ; N a184 ; B 35 160 911 533 ;
|
213
|
-
C 244 ; WX 771 ; N a197 ; B 34 37 736 655 ;
|
214
|
-
C 245 ; WX 865 ; N a185 ; B 35 207 830 481 ;
|
215
|
-
C 246 ; WX 771 ; N a194 ; B 34 37 736 655 ;
|
216
|
-
C 247 ; WX 888 ; N a198 ; B 34 -19 853 712 ;
|
217
|
-
C 248 ; WX 967 ; N a186 ; B 35 124 932 568 ;
|
218
|
-
C 249 ; WX 888 ; N a195 ; B 34 -19 853 712 ;
|
219
|
-
C 250 ; WX 831 ; N a187 ; B 35 113 796 579 ;
|
220
|
-
C 251 ; WX 873 ; N a188 ; B 36 118 838 578 ;
|
221
|
-
C 252 ; WX 927 ; N a189 ; B 35 150 891 542 ;
|
222
|
-
C 253 ; WX 970 ; N a190 ; B 35 76 931 616 ;
|
223
|
-
C 254 ; WX 918 ; N a191 ; B 34 99 884 593 ;
|
224
|
-
EndCharMetrics
|
225
|
-
EndFontMetrics
|
1
|
+
StartFontMetrics 4.1
|
2
|
+
Comment Copyright (c) 1985, 1987, 1988, 1989, 1997 Adobe Systems Incorporated. All Rights Reserved.
|
3
|
+
Comment Creation Date: Thu May 1 15:14:13 1997
|
4
|
+
Comment UniqueID 43082
|
5
|
+
Comment VMusage 45775 55535
|
6
|
+
FontName ZapfDingbats
|
7
|
+
FullName ITC Zapf Dingbats
|
8
|
+
FamilyName ZapfDingbats
|
9
|
+
Weight Medium
|
10
|
+
ItalicAngle 0
|
11
|
+
IsFixedPitch false
|
12
|
+
CharacterSet Special
|
13
|
+
FontBBox -1 -143 981 820
|
14
|
+
UnderlinePosition -100
|
15
|
+
UnderlineThickness 50
|
16
|
+
Version 002.000
|
17
|
+
Notice Copyright (c) 1985, 1987, 1988, 1989, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Zapf Dingbats is a registered trademark of International Typeface Corporation.
|
18
|
+
EncodingScheme FontSpecific
|
19
|
+
StdHW 28
|
20
|
+
StdVW 90
|
21
|
+
StartCharMetrics 202
|
22
|
+
C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
|
23
|
+
C 33 ; WX 974 ; N a1 ; B 35 72 939 621 ;
|
24
|
+
C 34 ; WX 961 ; N a2 ; B 35 81 927 611 ;
|
25
|
+
C 35 ; WX 974 ; N a202 ; B 35 72 939 621 ;
|
26
|
+
C 36 ; WX 980 ; N a3 ; B 35 0 945 692 ;
|
27
|
+
C 37 ; WX 719 ; N a4 ; B 34 139 685 566 ;
|
28
|
+
C 38 ; WX 789 ; N a5 ; B 35 -14 755 705 ;
|
29
|
+
C 39 ; WX 790 ; N a119 ; B 35 -14 755 705 ;
|
30
|
+
C 40 ; WX 791 ; N a118 ; B 35 -13 761 705 ;
|
31
|
+
C 41 ; WX 690 ; N a117 ; B 34 138 655 553 ;
|
32
|
+
C 42 ; WX 960 ; N a11 ; B 35 123 925 568 ;
|
33
|
+
C 43 ; WX 939 ; N a12 ; B 35 134 904 559 ;
|
34
|
+
C 44 ; WX 549 ; N a13 ; B 29 -11 516 705 ;
|
35
|
+
C 45 ; WX 855 ; N a14 ; B 34 59 820 632 ;
|
36
|
+
C 46 ; WX 911 ; N a15 ; B 35 50 876 642 ;
|
37
|
+
C 47 ; WX 933 ; N a16 ; B 35 139 899 550 ;
|
38
|
+
C 48 ; WX 911 ; N a105 ; B 35 50 876 642 ;
|
39
|
+
C 49 ; WX 945 ; N a17 ; B 35 139 909 553 ;
|
40
|
+
C 50 ; WX 974 ; N a18 ; B 35 104 938 587 ;
|
41
|
+
C 51 ; WX 755 ; N a19 ; B 34 -13 721 705 ;
|
42
|
+
C 52 ; WX 846 ; N a20 ; B 36 -14 811 705 ;
|
43
|
+
C 53 ; WX 762 ; N a21 ; B 35 0 727 692 ;
|
44
|
+
C 54 ; WX 761 ; N a22 ; B 35 0 727 692 ;
|
45
|
+
C 55 ; WX 571 ; N a23 ; B -1 -68 571 661 ;
|
46
|
+
C 56 ; WX 677 ; N a24 ; B 36 -13 642 705 ;
|
47
|
+
C 57 ; WX 763 ; N a25 ; B 35 0 728 692 ;
|
48
|
+
C 58 ; WX 760 ; N a26 ; B 35 0 726 692 ;
|
49
|
+
C 59 ; WX 759 ; N a27 ; B 35 0 725 692 ;
|
50
|
+
C 60 ; WX 754 ; N a28 ; B 35 0 720 692 ;
|
51
|
+
C 61 ; WX 494 ; N a6 ; B 35 0 460 692 ;
|
52
|
+
C 62 ; WX 552 ; N a7 ; B 35 0 517 692 ;
|
53
|
+
C 63 ; WX 537 ; N a8 ; B 35 0 503 692 ;
|
54
|
+
C 64 ; WX 577 ; N a9 ; B 35 96 542 596 ;
|
55
|
+
C 65 ; WX 692 ; N a10 ; B 35 -14 657 705 ;
|
56
|
+
C 66 ; WX 786 ; N a29 ; B 35 -14 751 705 ;
|
57
|
+
C 67 ; WX 788 ; N a30 ; B 35 -14 752 705 ;
|
58
|
+
C 68 ; WX 788 ; N a31 ; B 35 -14 753 705 ;
|
59
|
+
C 69 ; WX 790 ; N a32 ; B 35 -14 756 705 ;
|
60
|
+
C 70 ; WX 793 ; N a33 ; B 35 -13 759 705 ;
|
61
|
+
C 71 ; WX 794 ; N a34 ; B 35 -13 759 705 ;
|
62
|
+
C 72 ; WX 816 ; N a35 ; B 35 -14 782 705 ;
|
63
|
+
C 73 ; WX 823 ; N a36 ; B 35 -14 787 705 ;
|
64
|
+
C 74 ; WX 789 ; N a37 ; B 35 -14 754 705 ;
|
65
|
+
C 75 ; WX 841 ; N a38 ; B 35 -14 807 705 ;
|
66
|
+
C 76 ; WX 823 ; N a39 ; B 35 -14 789 705 ;
|
67
|
+
C 77 ; WX 833 ; N a40 ; B 35 -14 798 705 ;
|
68
|
+
C 78 ; WX 816 ; N a41 ; B 35 -13 782 705 ;
|
69
|
+
C 79 ; WX 831 ; N a42 ; B 35 -14 796 705 ;
|
70
|
+
C 80 ; WX 923 ; N a43 ; B 35 -14 888 705 ;
|
71
|
+
C 81 ; WX 744 ; N a44 ; B 35 0 710 692 ;
|
72
|
+
C 82 ; WX 723 ; N a45 ; B 35 0 688 692 ;
|
73
|
+
C 83 ; WX 749 ; N a46 ; B 35 0 714 692 ;
|
74
|
+
C 84 ; WX 790 ; N a47 ; B 34 -14 756 705 ;
|
75
|
+
C 85 ; WX 792 ; N a48 ; B 35 -14 758 705 ;
|
76
|
+
C 86 ; WX 695 ; N a49 ; B 35 -14 661 706 ;
|
77
|
+
C 87 ; WX 776 ; N a50 ; B 35 -6 741 699 ;
|
78
|
+
C 88 ; WX 768 ; N a51 ; B 35 -7 734 699 ;
|
79
|
+
C 89 ; WX 792 ; N a52 ; B 35 -14 757 705 ;
|
80
|
+
C 90 ; WX 759 ; N a53 ; B 35 0 725 692 ;
|
81
|
+
C 91 ; WX 707 ; N a54 ; B 35 -13 672 704 ;
|
82
|
+
C 92 ; WX 708 ; N a55 ; B 35 -14 672 705 ;
|
83
|
+
C 93 ; WX 682 ; N a56 ; B 35 -14 647 705 ;
|
84
|
+
C 94 ; WX 701 ; N a57 ; B 35 -14 666 705 ;
|
85
|
+
C 95 ; WX 826 ; N a58 ; B 35 -14 791 705 ;
|
86
|
+
C 96 ; WX 815 ; N a59 ; B 35 -14 780 705 ;
|
87
|
+
C 97 ; WX 789 ; N a60 ; B 35 -14 754 705 ;
|
88
|
+
C 98 ; WX 789 ; N a61 ; B 35 -14 754 705 ;
|
89
|
+
C 99 ; WX 707 ; N a62 ; B 34 -14 673 705 ;
|
90
|
+
C 100 ; WX 687 ; N a63 ; B 36 0 651 692 ;
|
91
|
+
C 101 ; WX 696 ; N a64 ; B 35 0 661 691 ;
|
92
|
+
C 102 ; WX 689 ; N a65 ; B 35 0 655 692 ;
|
93
|
+
C 103 ; WX 786 ; N a66 ; B 34 -14 751 705 ;
|
94
|
+
C 104 ; WX 787 ; N a67 ; B 35 -14 752 705 ;
|
95
|
+
C 105 ; WX 713 ; N a68 ; B 35 -14 678 705 ;
|
96
|
+
C 106 ; WX 791 ; N a69 ; B 35 -14 756 705 ;
|
97
|
+
C 107 ; WX 785 ; N a70 ; B 36 -14 751 705 ;
|
98
|
+
C 108 ; WX 791 ; N a71 ; B 35 -14 757 705 ;
|
99
|
+
C 109 ; WX 873 ; N a72 ; B 35 -14 838 705 ;
|
100
|
+
C 110 ; WX 761 ; N a73 ; B 35 0 726 692 ;
|
101
|
+
C 111 ; WX 762 ; N a74 ; B 35 0 727 692 ;
|
102
|
+
C 112 ; WX 762 ; N a203 ; B 35 0 727 692 ;
|
103
|
+
C 113 ; WX 759 ; N a75 ; B 35 0 725 692 ;
|
104
|
+
C 114 ; WX 759 ; N a204 ; B 35 0 725 692 ;
|
105
|
+
C 115 ; WX 892 ; N a76 ; B 35 0 858 705 ;
|
106
|
+
C 116 ; WX 892 ; N a77 ; B 35 -14 858 692 ;
|
107
|
+
C 117 ; WX 788 ; N a78 ; B 35 -14 754 705 ;
|
108
|
+
C 118 ; WX 784 ; N a79 ; B 35 -14 749 705 ;
|
109
|
+
C 119 ; WX 438 ; N a81 ; B 35 -14 403 705 ;
|
110
|
+
C 120 ; WX 138 ; N a82 ; B 35 0 104 692 ;
|
111
|
+
C 121 ; WX 277 ; N a83 ; B 35 0 242 692 ;
|
112
|
+
C 122 ; WX 415 ; N a84 ; B 35 0 380 692 ;
|
113
|
+
C 123 ; WX 392 ; N a97 ; B 35 263 357 705 ;
|
114
|
+
C 124 ; WX 392 ; N a98 ; B 34 263 357 705 ;
|
115
|
+
C 125 ; WX 668 ; N a99 ; B 35 263 633 705 ;
|
116
|
+
C 126 ; WX 668 ; N a100 ; B 36 263 634 705 ;
|
117
|
+
C 128 ; WX 390 ; N a89 ; B 35 -14 356 705 ;
|
118
|
+
C 129 ; WX 390 ; N a90 ; B 35 -14 355 705 ;
|
119
|
+
C 130 ; WX 317 ; N a93 ; B 35 0 283 692 ;
|
120
|
+
C 131 ; WX 317 ; N a94 ; B 35 0 283 692 ;
|
121
|
+
C 132 ; WX 276 ; N a91 ; B 35 0 242 692 ;
|
122
|
+
C 133 ; WX 276 ; N a92 ; B 35 0 242 692 ;
|
123
|
+
C 134 ; WX 509 ; N a205 ; B 35 0 475 692 ;
|
124
|
+
C 135 ; WX 509 ; N a85 ; B 35 0 475 692 ;
|
125
|
+
C 136 ; WX 410 ; N a206 ; B 35 0 375 692 ;
|
126
|
+
C 137 ; WX 410 ; N a86 ; B 35 0 375 692 ;
|
127
|
+
C 138 ; WX 234 ; N a87 ; B 35 -14 199 705 ;
|
128
|
+
C 139 ; WX 234 ; N a88 ; B 35 -14 199 705 ;
|
129
|
+
C 140 ; WX 334 ; N a95 ; B 35 0 299 692 ;
|
130
|
+
C 141 ; WX 334 ; N a96 ; B 35 0 299 692 ;
|
131
|
+
C 161 ; WX 732 ; N a101 ; B 35 -143 697 806 ;
|
132
|
+
C 162 ; WX 544 ; N a102 ; B 56 -14 488 706 ;
|
133
|
+
C 163 ; WX 544 ; N a103 ; B 34 -14 508 705 ;
|
134
|
+
C 164 ; WX 910 ; N a104 ; B 35 40 875 651 ;
|
135
|
+
C 165 ; WX 667 ; N a106 ; B 35 -14 633 705 ;
|
136
|
+
C 166 ; WX 760 ; N a107 ; B 35 -14 726 705 ;
|
137
|
+
C 167 ; WX 760 ; N a108 ; B 0 121 758 569 ;
|
138
|
+
C 168 ; WX 776 ; N a112 ; B 35 0 741 705 ;
|
139
|
+
C 169 ; WX 595 ; N a111 ; B 34 -14 560 705 ;
|
140
|
+
C 170 ; WX 694 ; N a110 ; B 35 -14 659 705 ;
|
141
|
+
C 171 ; WX 626 ; N a109 ; B 34 0 591 705 ;
|
142
|
+
C 172 ; WX 788 ; N a120 ; B 35 -14 754 705 ;
|
143
|
+
C 173 ; WX 788 ; N a121 ; B 35 -14 754 705 ;
|
144
|
+
C 174 ; WX 788 ; N a122 ; B 35 -14 754 705 ;
|
145
|
+
C 175 ; WX 788 ; N a123 ; B 35 -14 754 705 ;
|
146
|
+
C 176 ; WX 788 ; N a124 ; B 35 -14 754 705 ;
|
147
|
+
C 177 ; WX 788 ; N a125 ; B 35 -14 754 705 ;
|
148
|
+
C 178 ; WX 788 ; N a126 ; B 35 -14 754 705 ;
|
149
|
+
C 179 ; WX 788 ; N a127 ; B 35 -14 754 705 ;
|
150
|
+
C 180 ; WX 788 ; N a128 ; B 35 -14 754 705 ;
|
151
|
+
C 181 ; WX 788 ; N a129 ; B 35 -14 754 705 ;
|
152
|
+
C 182 ; WX 788 ; N a130 ; B 35 -14 754 705 ;
|
153
|
+
C 183 ; WX 788 ; N a131 ; B 35 -14 754 705 ;
|
154
|
+
C 184 ; WX 788 ; N a132 ; B 35 -14 754 705 ;
|
155
|
+
C 185 ; WX 788 ; N a133 ; B 35 -14 754 705 ;
|
156
|
+
C 186 ; WX 788 ; N a134 ; B 35 -14 754 705 ;
|
157
|
+
C 187 ; WX 788 ; N a135 ; B 35 -14 754 705 ;
|
158
|
+
C 188 ; WX 788 ; N a136 ; B 35 -14 754 705 ;
|
159
|
+
C 189 ; WX 788 ; N a137 ; B 35 -14 754 705 ;
|
160
|
+
C 190 ; WX 788 ; N a138 ; B 35 -14 754 705 ;
|
161
|
+
C 191 ; WX 788 ; N a139 ; B 35 -14 754 705 ;
|
162
|
+
C 192 ; WX 788 ; N a140 ; B 35 -14 754 705 ;
|
163
|
+
C 193 ; WX 788 ; N a141 ; B 35 -14 754 705 ;
|
164
|
+
C 194 ; WX 788 ; N a142 ; B 35 -14 754 705 ;
|
165
|
+
C 195 ; WX 788 ; N a143 ; B 35 -14 754 705 ;
|
166
|
+
C 196 ; WX 788 ; N a144 ; B 35 -14 754 705 ;
|
167
|
+
C 197 ; WX 788 ; N a145 ; B 35 -14 754 705 ;
|
168
|
+
C 198 ; WX 788 ; N a146 ; B 35 -14 754 705 ;
|
169
|
+
C 199 ; WX 788 ; N a147 ; B 35 -14 754 705 ;
|
170
|
+
C 200 ; WX 788 ; N a148 ; B 35 -14 754 705 ;
|
171
|
+
C 201 ; WX 788 ; N a149 ; B 35 -14 754 705 ;
|
172
|
+
C 202 ; WX 788 ; N a150 ; B 35 -14 754 705 ;
|
173
|
+
C 203 ; WX 788 ; N a151 ; B 35 -14 754 705 ;
|
174
|
+
C 204 ; WX 788 ; N a152 ; B 35 -14 754 705 ;
|
175
|
+
C 205 ; WX 788 ; N a153 ; B 35 -14 754 705 ;
|
176
|
+
C 206 ; WX 788 ; N a154 ; B 35 -14 754 705 ;
|
177
|
+
C 207 ; WX 788 ; N a155 ; B 35 -14 754 705 ;
|
178
|
+
C 208 ; WX 788 ; N a156 ; B 35 -14 754 705 ;
|
179
|
+
C 209 ; WX 788 ; N a157 ; B 35 -14 754 705 ;
|
180
|
+
C 210 ; WX 788 ; N a158 ; B 35 -14 754 705 ;
|
181
|
+
C 211 ; WX 788 ; N a159 ; B 35 -14 754 705 ;
|
182
|
+
C 212 ; WX 894 ; N a160 ; B 35 58 860 634 ;
|
183
|
+
C 213 ; WX 838 ; N a161 ; B 35 152 803 540 ;
|
184
|
+
C 214 ; WX 1016 ; N a163 ; B 34 152 981 540 ;
|
185
|
+
C 215 ; WX 458 ; N a164 ; B 35 -127 422 820 ;
|
186
|
+
C 216 ; WX 748 ; N a196 ; B 35 94 698 597 ;
|
187
|
+
C 217 ; WX 924 ; N a165 ; B 35 140 890 552 ;
|
188
|
+
C 218 ; WX 748 ; N a192 ; B 35 94 698 597 ;
|
189
|
+
C 219 ; WX 918 ; N a166 ; B 35 166 884 526 ;
|
190
|
+
C 220 ; WX 927 ; N a167 ; B 35 32 892 660 ;
|
191
|
+
C 221 ; WX 928 ; N a168 ; B 35 129 891 562 ;
|
192
|
+
C 222 ; WX 928 ; N a169 ; B 35 128 893 563 ;
|
193
|
+
C 223 ; WX 834 ; N a170 ; B 35 155 799 537 ;
|
194
|
+
C 224 ; WX 873 ; N a171 ; B 35 93 838 599 ;
|
195
|
+
C 225 ; WX 828 ; N a172 ; B 35 104 791 588 ;
|
196
|
+
C 226 ; WX 924 ; N a173 ; B 35 98 889 594 ;
|
197
|
+
C 227 ; WX 924 ; N a162 ; B 35 98 889 594 ;
|
198
|
+
C 228 ; WX 917 ; N a174 ; B 35 0 882 692 ;
|
199
|
+
C 229 ; WX 930 ; N a175 ; B 35 84 896 608 ;
|
200
|
+
C 230 ; WX 931 ; N a176 ; B 35 84 896 608 ;
|
201
|
+
C 231 ; WX 463 ; N a177 ; B 35 -99 429 791 ;
|
202
|
+
C 232 ; WX 883 ; N a178 ; B 35 71 848 623 ;
|
203
|
+
C 233 ; WX 836 ; N a179 ; B 35 44 802 648 ;
|
204
|
+
C 234 ; WX 836 ; N a193 ; B 35 44 802 648 ;
|
205
|
+
C 235 ; WX 867 ; N a180 ; B 35 101 832 591 ;
|
206
|
+
C 236 ; WX 867 ; N a199 ; B 35 101 832 591 ;
|
207
|
+
C 237 ; WX 696 ; N a181 ; B 35 44 661 648 ;
|
208
|
+
C 238 ; WX 696 ; N a200 ; B 35 44 661 648 ;
|
209
|
+
C 239 ; WX 874 ; N a182 ; B 35 77 840 619 ;
|
210
|
+
C 241 ; WX 874 ; N a201 ; B 35 73 840 615 ;
|
211
|
+
C 242 ; WX 760 ; N a183 ; B 35 0 725 692 ;
|
212
|
+
C 243 ; WX 946 ; N a184 ; B 35 160 911 533 ;
|
213
|
+
C 244 ; WX 771 ; N a197 ; B 34 37 736 655 ;
|
214
|
+
C 245 ; WX 865 ; N a185 ; B 35 207 830 481 ;
|
215
|
+
C 246 ; WX 771 ; N a194 ; B 34 37 736 655 ;
|
216
|
+
C 247 ; WX 888 ; N a198 ; B 34 -19 853 712 ;
|
217
|
+
C 248 ; WX 967 ; N a186 ; B 35 124 932 568 ;
|
218
|
+
C 249 ; WX 888 ; N a195 ; B 34 -19 853 712 ;
|
219
|
+
C 250 ; WX 831 ; N a187 ; B 35 113 796 579 ;
|
220
|
+
C 251 ; WX 873 ; N a188 ; B 36 118 838 578 ;
|
221
|
+
C 252 ; WX 927 ; N a189 ; B 35 150 891 542 ;
|
222
|
+
C 253 ; WX 970 ; N a190 ; B 35 76 931 616 ;
|
223
|
+
C 254 ; WX 918 ; N a191 ; B 34 99 884 593 ;
|
224
|
+
EndCharMetrics
|
225
|
+
EndFontMetrics
|
data/lib/pdf/reader/buffer.rb
CHANGED
@@ -48,6 +48,15 @@ class PDF::Reader
|
|
48
48
|
ID = "ID"
|
49
49
|
FWD_SLASH = "/"
|
50
50
|
NULL_BYTE = "\x00"
|
51
|
+
CR = "\r"
|
52
|
+
LF = "\n"
|
53
|
+
CRLF = "\r\n"
|
54
|
+
WHITE_SPACE = [LF, CR, ' ']
|
55
|
+
|
56
|
+
# Quite a few PDFs have trailing junk.
|
57
|
+
# This can be several k of nuls in some cases
|
58
|
+
# Allow for this here
|
59
|
+
TRAILING_BYTECOUNT = 5000
|
51
60
|
|
52
61
|
attr_reader :pos
|
53
62
|
|
@@ -86,9 +95,12 @@ class PDF::Reader
|
|
86
95
|
#
|
87
96
|
# options:
|
88
97
|
#
|
89
|
-
# :skip_eol - if true, the IO stream is advanced past a CRLF or LF
|
90
|
-
# is sitting under the io cursor.
|
91
|
-
#
|
98
|
+
# :skip_eol - if true, the IO stream is advanced past a CRLF, CR or LF
|
99
|
+
# that is sitting under the io cursor.
|
100
|
+
# Note:
|
101
|
+
# Skipping a bare CR is not spec-compliant.
|
102
|
+
# This is because the data may start with LF.
|
103
|
+
# However we check for CRLF first, so the ambiguity is avoided.
|
92
104
|
def read(bytes, opts = {})
|
93
105
|
reset_pos
|
94
106
|
|
@@ -97,9 +109,9 @@ class PDF::Reader
|
|
97
109
|
str = @io.read(2)
|
98
110
|
if str.nil?
|
99
111
|
return nil
|
100
|
-
elsif str ==
|
112
|
+
elsif str == CRLF # This MUST be done before checking for CR alone
|
101
113
|
# do nothing
|
102
|
-
elsif str[0,1] ==
|
114
|
+
elsif str[0, 1] == LF || str[0, 1] == CR # LF or CR alone
|
103
115
|
@io.seek(-1, IO::SEEK_CUR)
|
104
116
|
else
|
105
117
|
@io.seek(-2, IO::SEEK_CUR)
|
@@ -127,8 +139,8 @@ class PDF::Reader
|
|
127
139
|
#
|
128
140
|
def find_first_xref_offset
|
129
141
|
check_size_is_non_zero
|
130
|
-
@io.seek(-
|
131
|
-
data = @io.read(
|
142
|
+
@io.seek(-TRAILING_BYTECOUNT, IO::SEEK_END) rescue @io.seek(0)
|
143
|
+
data = @io.read(TRAILING_BYTECOUNT)
|
132
144
|
|
133
145
|
# the PDF 1.7 spec (section #3.4) says that EOL markers can be either \r, \n, or both.
|
134
146
|
lines = data.split(/[\n\r]+/).reverse
|
@@ -217,7 +229,9 @@ class PDF::Reader
|
|
217
229
|
return if @tokens.size < 3
|
218
230
|
return if @tokens[2] != "R"
|
219
231
|
|
220
|
-
|
232
|
+
# must match whole tokens
|
233
|
+
digits_only = %r{\A\d+\z}
|
234
|
+
if @tokens[0].match(digits_only) && @tokens[1].match(digits_only)
|
221
235
|
@tokens[0] = PDF::Reader::Reference.new(@tokens[0].to_i, @tokens[1].to_i)
|
222
236
|
@tokens[1] = nil
|
223
237
|
@tokens[2] = nil
|
@@ -225,24 +239,51 @@ class PDF::Reader
|
|
225
239
|
end
|
226
240
|
end
|
227
241
|
|
242
|
+
# Extract data between ID and EI
|
243
|
+
# If the EI follows white-space the space is dropped from the data
|
244
|
+
# The EI must followed by white-space or end of buffer
|
245
|
+
# This is to reduce the chance of accidentally matching an embedded EI
|
228
246
|
def prepare_inline_token
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
247
|
+
idstart = @io.pos
|
248
|
+
chr = prevchr = nil
|
249
|
+
eisize = 0 # how many chars in the end marker
|
250
|
+
seeking = 'E' # what are we looking for now?
|
251
|
+
loop do
|
234
252
|
chr = @io.read(1)
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
253
|
+
break if chr.nil?
|
254
|
+
case seeking
|
255
|
+
when 'E'
|
256
|
+
if chr == 'E'
|
257
|
+
seeking = 'I'
|
258
|
+
if WHITE_SPACE.include? prevchr
|
259
|
+
eisize = 3 # include whitespace in delimiter, i.e. drop from data
|
260
|
+
else # assume the EI immediately follows the data
|
261
|
+
eisize = 2 # leave prevchr in data
|
262
|
+
end
|
263
|
+
end
|
264
|
+
when 'I'
|
265
|
+
if chr == 'I'
|
266
|
+
seeking = :END
|
267
|
+
else
|
268
|
+
seeking = 'E'
|
269
|
+
end
|
270
|
+
when :END
|
271
|
+
if WHITE_SPACE.include? chr
|
272
|
+
eisize += 1 # Drop trailer
|
273
|
+
break
|
274
|
+
else
|
275
|
+
seeking = 'E'
|
276
|
+
end
|
239
277
|
end
|
278
|
+
prevchr = chr
|
240
279
|
end
|
241
|
-
|
242
|
-
|
243
|
-
|
280
|
+
unless seeking == :END
|
281
|
+
raise MalformedPDFError, "EI terminator not found"
|
282
|
+
end
|
283
|
+
eiend = @io.pos
|
284
|
+
@io.seek(idstart, IO::SEEK_SET)
|
285
|
+
str = @io.read(eiend - eisize - idstart) # get the ID content
|
244
286
|
@tokens << string_token(str)
|
245
|
-
@io.seek(-3, IO::SEEK_CUR) unless chr.nil?
|
246
287
|
end
|
247
288
|
|
248
289
|
# if we're currently inside a hex string, read hex nibbles until
|
data/lib/pdf/reader/encoding.rb
CHANGED
@@ -208,7 +208,7 @@ class PDF::Reader
|
|
208
208
|
def load_mapping(file)
|
209
209
|
File.open(file, "r:BINARY") do |f|
|
210
210
|
f.each do |l|
|
211
|
-
_m, single_byte, unicode = *l.match(
|
211
|
+
_m, single_byte, unicode = *l.match(/\A([0-9A-Za-z]+);([0-9A-F]{4})/)
|
212
212
|
@mapping["0x#{single_byte}".hex] = "0x#{unicode}".hex if single_byte
|
213
213
|
end
|
214
214
|
end
|
data/lib/pdf/reader/error.rb
CHANGED
@@ -33,17 +33,17 @@ class PDF::Reader
|
|
33
33
|
def self.str_assert(lvalue, rvalue, chars=nil)
|
34
34
|
raise MalformedPDFError, "PDF malformed, expected string but found #{lvalue.class} instead" if chars and !lvalue.kind_of?(String)
|
35
35
|
lvalue = lvalue[0,chars] if chars
|
36
|
-
raise MalformedPDFError, "PDF malformed, expected '#{rvalue}' but found #{lvalue} instead" if lvalue != rvalue
|
36
|
+
raise MalformedPDFError, "PDF malformed, expected '#{rvalue}' but found '#{lvalue}' instead" if lvalue != rvalue
|
37
37
|
end
|
38
38
|
################################################################################
|
39
39
|
def self.str_assert_not(lvalue, rvalue, chars=nil)
|
40
40
|
raise MalformedPDFError, "PDF malformed, expected string but found #{lvalue.class} instead" if chars and !lvalue.kind_of?(String)
|
41
41
|
lvalue = lvalue[0,chars] if chars
|
42
|
-
raise MalformedPDFError, "PDF malformed, expected '#{rvalue}' but found #{lvalue} instead" if lvalue == rvalue
|
42
|
+
raise MalformedPDFError, "PDF malformed, expected '#{rvalue}' but found '#{lvalue}' instead" if lvalue == rvalue
|
43
43
|
end
|
44
44
|
################################################################################
|
45
45
|
def self.assert_equal(lvalue, rvalue)
|
46
|
-
raise MalformedPDFError, "PDF malformed, expected #{rvalue} but found #{lvalue} instead" if lvalue != rvalue
|
46
|
+
raise MalformedPDFError, "PDF malformed, expected '#{rvalue}' but found '#{lvalue}' instead" if lvalue != rvalue
|
47
47
|
end
|
48
48
|
################################################################################
|
49
49
|
end
|
@@ -17,7 +17,11 @@ class PDF::Reader
|
|
17
17
|
#
|
18
18
|
def filter(data)
|
19
19
|
data = "<~#{data}" unless data.to_s[0,2] == "<~"
|
20
|
-
::
|
20
|
+
if defined?(::Ascii85Native)
|
21
|
+
::Ascii85Native::decode(data)
|
22
|
+
else
|
23
|
+
::Ascii85::decode(data)
|
24
|
+
end
|
21
25
|
rescue Exception => e
|
22
26
|
# Oops, there was a problem decoding the stream
|
23
27
|
raise MalformedPDFError,
|
@@ -34,7 +34,7 @@ class PDF::Reader
|
|
34
34
|
################################################################################
|
35
35
|
def tiff_depredict(data)
|
36
36
|
data = data.unpack("C*")
|
37
|
-
unfiltered =
|
37
|
+
unfiltered = ''
|
38
38
|
bpc = @options[:BitsPerComponent] || 8
|
39
39
|
pixel_bits = bpc * @options[:Colors]
|
40
40
|
pixel_bytes = pixel_bits / 8
|
@@ -51,11 +51,11 @@ class PDF::Reader
|
|
51
51
|
left = index < pixel_bytes ? 0 : row_data[index - pixel_bytes]
|
52
52
|
row_data[index] = (byte + left) % 256
|
53
53
|
end
|
54
|
-
unfiltered += row_data
|
54
|
+
unfiltered += row_data.pack("C*")
|
55
55
|
pos += line_len
|
56
56
|
end
|
57
57
|
|
58
|
-
unfiltered
|
58
|
+
unfiltered
|
59
59
|
end
|
60
60
|
################################################################################
|
61
61
|
def png_depredict(data)
|