Commit 4a4736c6954ab17d923a6d2968f34a33e09d714f

Authored by Jay Berkenbilt
1 parent 1619cad1

Fix EOL handling inside strings (fixes #226)

CR, CRLF, and LF are all supposed to be treated as LF; only one EOL is
to be ignored after backslash.
ChangeLog
1 2018-08-05 Jay Berkenbilt <ejb@ql.org> 1 2018-08-05 Jay Berkenbilt <ejb@ql.org>
2 2
  3 + * Bug fix: end of line characters were not properly handled inside
  4 + strings in some cases. Fixes #226.
  5 +
3 * Bug fix: infinite loop on progress reporting for very small 6 * Bug fix: infinite loop on progress reporting for very small
4 files. Fixes #230. 7 files. Fixes #230.
5 8
include/qpdf/QPDFTokenizer.hh
@@ -229,6 +229,7 @@ class QPDFTokenizer @@ -229,6 +229,7 @@ class QPDFTokenizer
229 bool string_ignoring_newline; 229 bool string_ignoring_newline;
230 char bs_num_register[4]; 230 char bs_num_register[4];
231 bool last_char_was_bs; 231 bool last_char_was_bs;
  232 + bool last_char_was_cr;
232 }; 233 };
233 PointerHolder<Members> m; 234 PointerHolder<Members> m;
234 }; 235 };
libqpdf/QPDFTokenizer.cc
@@ -34,6 +34,7 @@ QPDFTokenizer::Members::reset() @@ -34,6 +34,7 @@ QPDFTokenizer::Members::reset()
34 string_depth = 0; 34 string_depth = 0;
35 string_ignoring_newline = false; 35 string_ignoring_newline = false;
36 last_char_was_bs = false; 36 last_char_was_bs = false;
  37 + last_char_was_cr = false;
37 } 38 }
38 39
39 QPDFTokenizer::Members::~Members() 40 QPDFTokenizer::Members::~Members()
@@ -217,6 +218,7 @@ QPDFTokenizer::presentCharacter(char ch) @@ -217,6 +218,7 @@ QPDFTokenizer::presentCharacter(char ch)
217 memset(this->m->bs_num_register, '\0', 218 memset(this->m->bs_num_register, '\0',
218 sizeof(this->m->bs_num_register)); 219 sizeof(this->m->bs_num_register));
219 this->m->last_char_was_bs = false; 220 this->m->last_char_was_bs = false;
  221 + this->m->last_char_was_cr = false;
220 this->m->state = st_in_string; 222 this->m->state = st_in_string;
221 } 223 }
222 else if (ch == '<') 224 else if (ch == '<')
@@ -334,8 +336,7 @@ QPDFTokenizer::presentCharacter(char ch) @@ -334,8 +336,7 @@ QPDFTokenizer::presentCharacter(char ch)
334 } 336 }
335 else if (this->m->state == st_in_string) 337 else if (this->m->state == st_in_string)
336 { 338 {
337 - if (this->m->string_ignoring_newline &&  
338 - (! ((ch == '\r') || (ch == '\n')))) 339 + if (this->m->string_ignoring_newline && (ch != '\n'))
339 { 340 {
340 this->m->string_ignoring_newline = false; 341 this->m->string_ignoring_newline = false;
341 } 342 }
@@ -353,9 +354,10 @@ QPDFTokenizer::presentCharacter(char ch) @@ -353,9 +354,10 @@ QPDFTokenizer::presentCharacter(char ch)
353 bs_num_count = 0; 354 bs_num_count = 0;
354 } 355 }
355 356
356 - if (this->m->string_ignoring_newline && ((ch == '\r') || (ch == '\n'))) 357 + if (this->m->string_ignoring_newline && (ch == '\n'))
357 { 358 {
358 // ignore 359 // ignore
  360 + this->m->string_ignoring_newline = false;
359 } 361 }
360 else if (ch_is_octal && 362 else if (ch_is_octal &&
361 (this->m->last_char_was_bs || (bs_num_count > 0))) 363 (this->m->last_char_was_bs || (bs_num_count > 0)))
@@ -386,8 +388,10 @@ QPDFTokenizer::presentCharacter(char ch) @@ -386,8 +388,10 @@ QPDFTokenizer::presentCharacter(char ch)
386 this->m->val += '\f'; 388 this->m->val += '\f';
387 break; 389 break;
388 390
389 - case '\r':  
390 case '\n': 391 case '\n':
  392 + break;
  393 +
  394 + case '\r':
391 this->m->string_ignoring_newline = true; 395 this->m->string_ignoring_newline = true;
392 break; 396 break;
393 397
@@ -417,11 +421,26 @@ QPDFTokenizer::presentCharacter(char ch) @@ -417,11 +421,26 @@ QPDFTokenizer::presentCharacter(char ch)
417 this->m->type = tt_string; 421 this->m->type = tt_string;
418 this->m->state = st_token_ready; 422 this->m->state = st_token_ready;
419 } 423 }
  424 + else if (ch == '\r')
  425 + {
  426 + // CR by itself is converted to LF
  427 + this->m->val += '\n';
  428 + }
  429 + else if (ch == '\n')
  430 + {
  431 + // CR LF is converted to LF
  432 + if (! this->m->last_char_was_cr)
  433 + {
  434 + this->m->val += ch;
  435 + }
  436 + }
420 else 437 else
421 { 438 {
422 this->m->val += ch; 439 this->m->val += ch;
423 } 440 }
424 441
  442 + this->m->last_char_was_cr =
  443 + ((! this->m->string_ignoring_newline) && (ch == '\r'));
425 this->m->last_char_was_bs = 444 this->m->last_char_was_bs =
426 ((! this->m->last_char_was_bs) && (ch == '\\')); 445 ((! this->m->last_char_was_bs) && (ch == '\\'));
427 } 446 }
qpdf/qtest/qpdf/good14.out
@@ -6,7 +6,7 @@ A B @@ -6,7 +6,7 @@ A B
6 one 6 one
7 two 7 two
8 three lines 8 three lines
9 -(string with \r\nCRNL) 9 +(string with \nCRLF and\nCR and\nLF)
10 and another 10 and another
11 indentation 11 indentation
12 (\001B%DEF)<01> 12 (\001B%DEF)<01>
@@ -21,7 +21,7 @@ This stream does end with a newline. @@ -21,7 +21,7 @@ This stream does end with a newline.
21 // bad tokens preserved 21 // bad tokens preserved
22 // comments 22 // comments
23 // indentation 23 // indentation
24 -// CR/NL inside string literal -- changed to \r or \n, newline follows 24 +// CR, CR/LF, LF inside string literal -- changed to \n
25 // whitespace in hexstring (removed) 25 // whitespace in hexstring (removed)
26 // strings normalized 26 // strings normalized
27 // newlines normalized 27 // newlines normalized
@@ -33,17 +33,17 @@ This stream does end with a newline. @@ -33,17 +33,17 @@ This stream does end with a newline.
33 33
34 /good name 34 /good name
35 /bad#00name 35 /bad#00name
36 -WARNING: good14.pdf (offset 860): content normalization encountered bad tokens  
37 -WARNING: good14.pdf (offset 860): Resulting stream data may be corrupted but is may still useful for manual inspection. For more information on this warning, search for content normalization in the manual. 36 +WARNING: good14.pdf (offset 874): content normalization encountered bad tokens
  37 +WARNING: good14.pdf (offset 874): Resulting stream data may be corrupted but is may still useful for manual inspection. For more information on this warning, search for content normalization in the manual.
38 -- stream 2 -- 38 -- stream 2 --
39 (This stream ends with a \001 bad token 39 (This stream ends with a \001 bad token
40 -WARNING: good14.pdf (offset 1316): content normalization encountered bad tokens  
41 -WARNING: good14.pdf (offset 1316): normalized content ended with a bad token; you may be able to resolve this by coalescing content streams in combination with normalizing content. From the command line, specify --coalesce-contents  
42 -WARNING: good14.pdf (offset 1316): Resulting stream data may be corrupted but is may still useful for manual inspection. For more information on this warning, search for content normalization in the manual. 40 +WARNING: good14.pdf (offset 1315): content normalization encountered bad tokens
  41 +WARNING: good14.pdf (offset 1315): normalized content ended with a bad token; you may be able to resolve this by coalescing content streams in combination with normalizing content. From the command line, specify --coalesce-contents
  42 +WARNING: good14.pdf (offset 1315): Resulting stream data may be corrupted but is may still useful for manual inspection. For more information on this warning, search for content normalization in the manual.
43 -- stream 3 -- 43 -- stream 3 --
44 -<AB XWARNING: good14.pdf (offset 1406): content normalization encountered bad tokens  
45 -WARNING: good14.pdf (offset 1406): normalized content ended with a bad token; you may be able to resolve this by coalescing content streams in combination with normalizing content. From the command line, specify --coalesce-contents  
46 -WARNING: good14.pdf (offset 1406): Resulting stream data may be corrupted but is may still useful for manual inspection. For more information on this warning, search for content normalization in the manual. 44 +<AB XWARNING: good14.pdf (offset 1405): content normalization encountered bad tokens
  45 +WARNING: good14.pdf (offset 1405): normalized content ended with a bad token; you may be able to resolve this by coalescing content streams in combination with normalizing content. From the command line, specify --coalesce-contents
  46 +WARNING: good14.pdf (offset 1405): Resulting stream data may be corrupted but is may still useful for manual inspection. For more information on this warning, search for content normalization in the manual.
47 -- stream 4 -- 47 -- stream 4 --
48 (ends with a name) 48 (ends with a name)
49 /ThisMustBeLast-- stream 5 -- 49 /ThisMustBeLast-- stream 5 --
@@ -54,7 +54,7 @@ BI @@ -54,7 +54,7 @@ BI
54 ID 54 ID
55 <506f7 55 <506f7
56 461746f> 56 461746f>
57 -WARNING: good14.pdf (offset 1549): content normalization encountered bad tokens  
58 -WARNING: good14.pdf (offset 1549): normalized content ended with a bad token; you may be able to resolve this by coalescing content streams in combination with normalizing content. From the command line, specify --coalesce-contents  
59 -WARNING: good14.pdf (offset 1549): Resulting stream data may be corrupted but is may still useful for manual inspection. For more information on this warning, search for content normalization in the manual. 57 +WARNING: good14.pdf (offset 1548): content normalization encountered bad tokens
  58 +WARNING: good14.pdf (offset 1548): normalized content ended with a bad token; you may be able to resolve this by coalescing content streams in combination with normalizing content. From the command line, specify --coalesce-contents
  59 +WARNING: good14.pdf (offset 1548): Resulting stream data may be corrupted but is may still useful for manual inspection. For more information on this warning, search for content normalization in the manual.
60 test 3 done 60 test 3 done
qpdf/qtest/qpdf/good14.pdf
No preview for this file type
qpdf/qtest/qpdf/good14.qdf
No preview for this file type
qpdf/qtest/qpdf/tokens-maxlen.out
@@ -181,352 +181,352 @@ skipping to endstream @@ -181,352 +181,352 @@ skipping to endstream
181 7121: space: \x0a 181 7121: space: \x0a
182 7122: word: stream 182 7122: word: stream
183 skipping to endstream 183 skipping to endstream
184 -7404: word: endstream  
185 -7413: space: \x0a  
186 -7414: word: endobj  
187 -7420: space: \x0a\x0a  
188 -7422: integer: 44  
189 -7424: space:  
190 -7425: integer: 0  
191 -7426: space:  
192 -7427: word: obj  
193 -7430: space: \x0a  
194 -7431: integer: 275  
195 -7434: space: \x0a  
196 -7435: word: endobj  
197 -7441: space: \x0a\x0a  
198 -7443: comment: %% Contents for page 5  
199 -7465: space: \x0a  
200 -7466: comment: %% Original object ID: 41 0  
201 -7493: space: \x0a  
202 -7494: integer: 45  
203 -7496: space:  
204 -7497: integer: 0  
205 -7498: space:  
206 -7499: word: obj  
207 -7502: space: \x0a  
208 -7503: dict_open: <<  
209 -7505: space: \x0a  
210 -7508: name: /Length  
211 -7515: space:  
212 -7516: integer: 46  
213 -7518: space:  
214 -7519: integer: 0  
215 -7520: space:  
216 -7521: word: R  
217 -7522: space: \x0a  
218 -7523: dict_close: >>  
219 -7525: space: \x0a  
220 -7526: word: stream 184 +7469: word: endstream
  185 +7478: space: \x0a
  186 +7479: word: endobj
  187 +7485: space: \x0a\x0a
  188 +7487: integer: 44
  189 +7489: space:
  190 +7490: integer: 0
  191 +7491: space:
  192 +7492: word: obj
  193 +7495: space: \x0a
  194 +7496: integer: 340
  195 +7499: space: \x0a
  196 +7500: word: endobj
  197 +7506: space: \x0a\x0a
  198 +7508: comment: %% Contents for page 5
  199 +7530: space: \x0a
  200 +7531: comment: %% Original object ID: 41 0
  201 +7558: space: \x0a
  202 +7559: integer: 45
  203 +7561: space:
  204 +7562: integer: 0
  205 +7563: space:
  206 +7564: word: obj
  207 +7567: space: \x0a
  208 +7568: dict_open: <<
  209 +7570: space: \x0a
  210 +7573: name: /Length
  211 +7580: space:
  212 +7581: integer: 46
  213 +7583: space:
  214 +7584: integer: 0
  215 +7585: space:
  216 +7586: word: R
  217 +7587: space: \x0a
  218 +7588: dict_close: >>
  219 +7590: space: \x0a
  220 +7591: word: stream
221 skipping to endstream 221 skipping to endstream
222 -7601: word: endstream  
223 -7610: space: \x0a  
224 -7611: word: endobj  
225 -7617: space: \x0a  
226 -7618: comment: %QDF: ignore_newline  
227 -7638: space: \x0a\x0a  
228 -7640: integer: 46  
229 -7642: space:  
230 -7643: integer: 0  
231 -7644: space:  
232 -7645: word: obj  
233 -7648: space: \x0a  
234 -7649: integer: 67  
235 -7651: space: \x0a  
236 -7652: word: endobj  
237 -7658: space: \x0a\x0a  
238 -7660: comment: %% Contents for page 6 222 +7666: word: endstream
  223 +7675: space: \x0a
  224 +7676: word: endobj
239 7682: space: \x0a 225 7682: space: \x0a
240 -7683: comment: %% Original object ID: 42 0  
241 -7710: space: \x0a  
242 -7711: integer: 47  
243 -7713: space:  
244 -7714: integer: 0  
245 -7715: space:  
246 -7716: word: obj  
247 -7719: space: \x0a  
248 -7720: dict_open: <<  
249 -7722: space: \x0a  
250 -7725: name: /Length  
251 -7732: space:  
252 -7733: integer: 48  
253 -7735: space:  
254 -7736: integer: 0  
255 -7737: space:  
256 -7738: word: R  
257 -7739: space: \x0a  
258 -7740: dict_close: >>  
259 -7742: space: \x0a  
260 -7743: word: stream 226 +7683: comment: %QDF: ignore_newline
  227 +7703: space: \x0a\x0a
  228 +7705: integer: 46
  229 +7707: space:
  230 +7708: integer: 0
  231 +7709: space:
  232 +7710: word: obj
  233 +7713: space: \x0a
  234 +7714: integer: 67
  235 +7716: space: \x0a
  236 +7717: word: endobj
  237 +7723: space: \x0a\x0a
  238 +7725: comment: %% Contents for page 6
  239 +7747: space: \x0a
  240 +7748: comment: %% Original object ID: 42 0
  241 +7775: space: \x0a
  242 +7776: integer: 47
  243 +7778: space:
  244 +7779: integer: 0
  245 +7780: space:
  246 +7781: word: obj
  247 +7784: space: \x0a
  248 +7785: dict_open: <<
  249 +7787: space: \x0a
  250 +7790: name: /Length
  251 +7797: space:
  252 +7798: integer: 48
  253 +7800: space:
  254 +7801: integer: 0
  255 +7802: space:
  256 +7803: word: R
  257 +7804: space: \x0a
  258 +7805: dict_close: >>
  259 +7807: space: \x0a
  260 +7808: word: stream
261 skipping to endstream 261 skipping to endstream
262 -7794: word: endstream  
263 -7803: space: \x0a  
264 -7804: word: endobj  
265 -7810: space: \x0a\x0a  
266 -7812: integer: 48  
267 -7814: space:  
268 -7815: integer: 0  
269 -7816: space:  
270 -7817: word: obj  
271 -7820: space: \x0a  
272 -7821: integer: 44  
273 -7823: space: \x0a  
274 -7824: word: endobj  
275 -7830: space: \x0a\x0a  
276 -7832: comment: %% Contents for page 7  
277 -7854: space: \x0a  
278 -7855: comment: %% Original object ID: 43 0  
279 -7882: space: \x0a  
280 -7883: integer: 49  
281 -7885: space:  
282 -7886: integer: 0  
283 -7887: space:  
284 -7888: word: obj  
285 -7891: space: \x0a  
286 -7892: dict_open: <<  
287 -7894: space: \x0a  
288 -7897: name: /Length  
289 -7904: space:  
290 -7905: integer: 50  
291 -7907: space:  
292 -7908: integer: 0  
293 -7909: space:  
294 -7910: word: R  
295 -7911: space: \x0a  
296 -7912: dict_close: >>  
297 -7914: space: \x0a  
298 -7915: word: stream 262 +7859: word: endstream
  263 +7868: space: \x0a
  264 +7869: word: endobj
  265 +7875: space: \x0a\x0a
  266 +7877: integer: 48
  267 +7879: space:
  268 +7880: integer: 0
  269 +7881: space:
  270 +7882: word: obj
  271 +7885: space: \x0a
  272 +7886: integer: 44
  273 +7888: space: \x0a
  274 +7889: word: endobj
  275 +7895: space: \x0a\x0a
  276 +7897: comment: %% Contents for page 7
  277 +7919: space: \x0a
  278 +7920: comment: %% Original object ID: 43 0
  279 +7947: space: \x0a
  280 +7948: integer: 49
  281 +7950: space:
  282 +7951: integer: 0
  283 +7952: space:
  284 +7953: word: obj
  285 +7956: space: \x0a
  286 +7957: dict_open: <<
  287 +7959: space: \x0a
  288 +7962: name: /Length
  289 +7969: space:
  290 +7970: integer: 50
  291 +7972: space:
  292 +7973: integer: 0
  293 +7974: space:
  294 +7975: word: R
  295 +7976: space: \x0a
  296 +7977: dict_close: >>
  297 +7979: space: \x0a
  298 +7980: word: stream
299 skipping to endstream 299 skipping to endstream
300 -8241: word: endstream  
301 -8250: space: \x0a  
302 -8251: word: endobj  
303 -8257: space: \x0a  
304 -8258: comment: %QDF: ignore_newline  
305 -8278: space: \x0a\x0a  
306 -8280: integer: 50  
307 -8282: space:  
308 -8283: integer: 0  
309 -8284: space:  
310 -8285: word: obj  
311 -8288: space: \x0a  
312 -8289: integer: 318  
313 -8292: space: \x0a  
314 -8293: word: endobj  
315 -8299: space: \x0a\x0a  
316 -8301: comment: %% Contents for page 8  
317 -8323: space: \x0a  
318 -8324: comment: %% Original object ID: 44 0  
319 -8351: space: \x0a  
320 -8352: integer: 51  
321 -8354: space:  
322 -8355: integer: 0  
323 -8356: space:  
324 -8357: word: obj  
325 -8360: space: \x0a  
326 -8361: dict_open: <<  
327 -8363: space: \x0a  
328 -8366: name: /Length  
329 -8373: space:  
330 -8374: integer: 52  
331 -8376: space:  
332 -8377: integer: 0  
333 -8378: space:  
334 -8379: word: R  
335 -8380: space: \x0a  
336 -8381: dict_close: >>  
337 -8383: space: \x0a  
338 -8384: word: stream 300 +8306: word: endstream
  301 +8315: space: \x0a
  302 +8316: word: endobj
  303 +8322: space: \x0a
  304 +8323: comment: %QDF: ignore_newline
  305 +8343: space: \x0a\x0a
  306 +8345: integer: 50
  307 +8347: space:
  308 +8348: integer: 0
  309 +8349: space:
  310 +8350: word: obj
  311 +8353: space: \x0a
  312 +8354: integer: 318
  313 +8357: space: \x0a
  314 +8358: word: endobj
  315 +8364: space: \x0a\x0a
  316 +8366: comment: %% Contents for page 8
  317 +8388: space: \x0a
  318 +8389: comment: %% Original object ID: 44 0
  319 +8416: space: \x0a
  320 +8417: integer: 51
  321 +8419: space:
  322 +8420: integer: 0
  323 +8421: space:
  324 +8422: word: obj
  325 +8425: space: \x0a
  326 +8426: dict_open: <<
  327 +8428: space: \x0a
  328 +8431: name: /Length
  329 +8438: space:
  330 +8439: integer: 52
  331 +8441: space:
  332 +8442: integer: 0
  333 +8443: space:
  334 +8444: word: R
  335 +8445: space: \x0a
  336 +8446: dict_close: >>
  337 +8448: space: \x0a
  338 +8449: word: stream
339 skipping to endstream 339 skipping to endstream
340 -8435: word: endstream  
341 -8444: space: \x0a  
342 -8445: word: endobj  
343 -8451: space: \x0a\x0a  
344 -8453: integer: 52  
345 -8455: space:  
346 -8456: integer: 0  
347 -8457: space:  
348 -8458: word: obj  
349 -8461: space: \x0a  
350 -8462: integer: 44  
351 -8464: space: \x0a  
352 -8465: word: endobj  
353 -8471: space: \x0a\x0a  
354 -8473: comment: %% Contents for page 9  
355 -8495: space: \x0a  
356 -8496: comment: %% Original object ID: 45 0  
357 -8523: space: \x0a  
358 -8524: integer: 53  
359 -8526: space:  
360 -8527: integer: 0  
361 -8528: space:  
362 -8529: word: obj  
363 -8532: space: \x0a  
364 -8533: dict_open: <<  
365 -8535: space: \x0a  
366 -8538: name: /Length  
367 -8545: space:  
368 -8546: integer: 54  
369 -8548: space:  
370 -8549: integer: 0  
371 -8550: space:  
372 -8551: word: R  
373 -8552: space: \x0a  
374 -8553: dict_close: >>  
375 -8555: space: \x0a  
376 -8556: word: stream 340 +8500: word: endstream
  341 +8509: space: \x0a
  342 +8510: word: endobj
  343 +8516: space: \x0a\x0a
  344 +8518: integer: 52
  345 +8520: space:
  346 +8521: integer: 0
  347 +8522: space:
  348 +8523: word: obj
  349 +8526: space: \x0a
  350 +8527: integer: 44
  351 +8529: space: \x0a
  352 +8530: word: endobj
  353 +8536: space: \x0a\x0a
  354 +8538: comment: %% Contents for page 9
  355 +8560: space: \x0a
  356 +8561: comment: %% Original object ID: 45 0
  357 +8588: space: \x0a
  358 +8589: integer: 53
  359 +8591: space:
  360 +8592: integer: 0
  361 +8593: space:
  362 +8594: word: obj
  363 +8597: space: \x0a
  364 +8598: dict_open: <<
  365 +8600: space: \x0a
  366 +8603: name: /Length
  367 +8610: space:
  368 +8611: integer: 54
  369 +8613: space:
  370 +8614: integer: 0
  371 +8615: space:
  372 +8616: word: R
  373 +8617: space: \x0a
  374 +8618: dict_close: >>
  375 +8620: space: \x0a
  376 +8621: word: stream
377 skipping to endstream 377 skipping to endstream
378 -8607: word: endstream  
379 -8616: space: \x0a  
380 -8617: word: endobj  
381 -8623: space: \x0a\x0a  
382 -8625: integer: 54  
383 -8627: space:  
384 -8628: integer: 0  
385 -8629: space:  
386 -8630: word: obj  
387 -8633: space: \x0a  
388 -8634: integer: 44  
389 -8636: space: \x0a  
390 -8637: word: endobj  
391 -8643: space: \x0a\x0a  
392 -8645: comment: %% Contents for page 10  
393 -8668: space: \x0a  
394 -8669: comment: %% Original object ID: 46 0  
395 -8696: space: \x0a  
396 -8697: integer: 55  
397 -8699: space:  
398 -8700: integer: 0  
399 -8701: space:  
400 -8702: word: obj  
401 -8705: space: \x0a  
402 -8706: dict_open: <<  
403 -8708: space: \x0a  
404 -8711: name: /Length  
405 -8718: space:  
406 -8719: integer: 56  
407 -8721: space:  
408 -8722: integer: 0  
409 -8723: space:  
410 -8724: word: R  
411 -8725: space: \x0a  
412 -8726: dict_close: >>  
413 -8728: space: \x0a  
414 -8729: word: stream 378 +8672: word: endstream
  379 +8681: space: \x0a
  380 +8682: word: endobj
  381 +8688: space: \x0a\x0a
  382 +8690: integer: 54
  383 +8692: space:
  384 +8693: integer: 0
  385 +8694: space:
  386 +8695: word: obj
  387 +8698: space: \x0a
  388 +8699: integer: 44
  389 +8701: space: \x0a
  390 +8702: word: endobj
  391 +8708: space: \x0a\x0a
  392 +8710: comment: %% Contents for page 10
  393 +8733: space: \x0a
  394 +8734: comment: %% Original object ID: 46 0
  395 +8761: space: \x0a
  396 +8762: integer: 55
  397 +8764: space:
  398 +8765: integer: 0
  399 +8766: space:
  400 +8767: word: obj
  401 +8770: space: \x0a
  402 +8771: dict_open: <<
  403 +8773: space: \x0a
  404 +8776: name: /Length
  405 +8783: space:
  406 +8784: integer: 56
  407 +8786: space:
  408 +8787: integer: 0
  409 +8788: space:
  410 +8789: word: R
  411 +8790: space: \x0a
  412 +8791: dict_close: >>
  413 +8793: space: \x0a
  414 +8794: word: stream
415 skipping to endstream 415 skipping to endstream
416 -8780: word: endstream  
417 -8789: space: \x0a  
418 -8790: word: endobj  
419 -8796: space: \x0a\x0a  
420 -8798: integer: 56  
421 -8800: space:  
422 -8801: integer: 0  
423 -8802: space:  
424 -8803: word: obj  
425 -8806: space: \x0a  
426 -8807: integer: 44  
427 -8809: space: \x0a  
428 -8810: word: endobj  
429 -8816: space: \x0a\x0a  
430 -8818: comment: %% Contents for page 11  
431 -8841: space: \x0a  
432 -8842: comment: %% Original object ID: 47 0  
433 -8869: space: \x0a  
434 -8870: integer: 57  
435 -8872: space:  
436 -8873: integer: 0  
437 -8874: space:  
438 -8875: word: obj  
439 -8878: space: \x0a  
440 -8879: dict_open: <<  
441 -8881: space: \x0a  
442 -8884: name: /Length  
443 -8891: space:  
444 -8892: integer: 58  
445 -8894: space:  
446 -8895: integer: 0  
447 -8896: space:  
448 -8897: word: R  
449 -8898: space: \x0a  
450 -8899: dict_close: >>  
451 -8901: space: \x0a  
452 -8902: word: stream 416 +8845: word: endstream
  417 +8854: space: \x0a
  418 +8855: word: endobj
  419 +8861: space: \x0a\x0a
  420 +8863: integer: 56
  421 +8865: space:
  422 +8866: integer: 0
  423 +8867: space:
  424 +8868: word: obj
  425 +8871: space: \x0a
  426 +8872: integer: 44
  427 +8874: space: \x0a
  428 +8875: word: endobj
  429 +8881: space: \x0a\x0a
  430 +8883: comment: %% Contents for page 11
  431 +8906: space: \x0a
  432 +8907: comment: %% Original object ID: 47 0
  433 +8934: space: \x0a
  434 +8935: integer: 57
  435 +8937: space:
  436 +8938: integer: 0
  437 +8939: space:
  438 +8940: word: obj
  439 +8943: space: \x0a
  440 +8944: dict_open: <<
  441 +8946: space: \x0a
  442 +8949: name: /Length
  443 +8956: space:
  444 +8957: integer: 58
  445 +8959: space:
  446 +8960: integer: 0
  447 +8961: space:
  448 +8962: word: R
  449 +8963: space: \x0a
  450 +8964: dict_close: >>
  451 +8966: space: \x0a
  452 +8967: word: stream
453 skipping to endstream 453 skipping to endstream
454 -8953: word: endstream  
455 -8962: space: \x0a  
456 -8963: word: endobj  
457 -8969: space: \x0a\x0a  
458 -8971: integer: 58  
459 -8973: space:  
460 -8974: integer: 0  
461 -8975: space:  
462 -8976: word: obj  
463 -8979: space: \x0a  
464 -8980: integer: 44  
465 -8982: space: \x0a  
466 -8983: word: endobj  
467 -8989: space: \x0a\x0a  
468 -8991: integer: 59  
469 -8993: space:  
470 -8994: integer: 0  
471 -8995: space:  
472 -8996: word: obj  
473 -8999: space: \x0a  
474 -9000: dict_open: <<  
475 -9002: space: \x0a  
476 -9005: name: /Type  
477 -9010: space:  
478 -9011: name: /XRef  
479 -9016: space: \x0a  
480 -9019: name: /Length  
481 -9026: space:  
482 -9027: integer: 240  
483 -9030: space: \x0a  
484 -9033: name: /W  
485 -9035: space:  
486 -9036: array_open: [  
487 -9037: space:  
488 -9038: integer: 1  
489 -9039: space:  
490 -9040: integer: 2  
491 -9041: space:  
492 -9042: integer: 1  
493 -9043: space:  
494 -9044: array_close: ]  
495 -9045: space: \x0a  
496 -9048: name: /Root  
497 -9053: space:  
498 -9054: integer: 2  
499 -9055: space:  
500 -9056: integer: 0  
501 -9057: space:  
502 -9058: word: R  
503 -9059: space: \x0a  
504 -9062: name: /Size  
505 -9067: space:  
506 -9068: integer: 60  
507 -9070: space: \x0a  
508 -9073: name: /ID  
509 -9076: space:  
510 -9077: array_open: [  
511 -9078: string: \x88\x04\x8e\x17\xc9a\xe0\x94\xff\xec\xe9\x8c\xb8\x8cF\xd0 (raw: <88048e17c961e094ffece98cb88c46d0>)  
512 -9112: string: \xed\xd6\x0f\xe8\xee\x87\xf8\x871\xa8o\x81\x9f\xe6Q\x99 (raw: <edd60fe8ee87f88731a86f819fe65199>)  
513 -9146: array_close: ]  
514 -9147: space: \x0a  
515 -9148: dict_close: >>  
516 -9150: space: \x0a  
517 -9151: word: stream 454 +9018: word: endstream
  455 +9027: space: \x0a
  456 +9028: word: endobj
  457 +9034: space: \x0a\x0a
  458 +9036: integer: 58
  459 +9038: space:
  460 +9039: integer: 0
  461 +9040: space:
  462 +9041: word: obj
  463 +9044: space: \x0a
  464 +9045: integer: 44
  465 +9047: space: \x0a
  466 +9048: word: endobj
  467 +9054: space: \x0a\x0a
  468 +9056: integer: 59
  469 +9058: space:
  470 +9059: integer: 0
  471 +9060: space:
  472 +9061: word: obj
  473 +9064: space: \x0a
  474 +9065: dict_open: <<
  475 +9067: space: \x0a
  476 +9070: name: /Type
  477 +9075: space:
  478 +9076: name: /XRef
  479 +9081: space: \x0a
  480 +9084: name: /Length
  481 +9091: space:
  482 +9092: integer: 240
  483 +9095: space: \x0a
  484 +9098: name: /W
  485 +9100: space:
  486 +9101: array_open: [
  487 +9102: space:
  488 +9103: integer: 1
  489 +9104: space:
  490 +9105: integer: 2
  491 +9106: space:
  492 +9107: integer: 1
  493 +9108: space:
  494 +9109: array_close: ]
  495 +9110: space: \x0a
  496 +9113: name: /Root
  497 +9118: space:
  498 +9119: integer: 2
  499 +9120: space:
  500 +9121: integer: 0
  501 +9122: space:
  502 +9123: word: R
  503 +9124: space: \x0a
  504 +9127: name: /Size
  505 +9132: space:
  506 +9133: integer: 60
  507 +9135: space: \x0a
  508 +9138: name: /ID
  509 +9141: space:
  510 +9142: array_open: [
  511 +9143: string: \x88\x04\x8e\x17\xc9a\xe0\x94\xff\xec\xe9\x8c\xb8\x8cF\xd0 (raw: <88048e17c961e094ffece98cb88c46d0>)
  512 +9177: string: \xed\xd6\x0f\xe8\xee\x87\xf8\x871\xa8o\x81\x9f\xe6Q\x99 (raw: <edd60fe8ee87f88731a86f819fe65199>)
  513 +9211: array_close: ]
  514 +9212: space: \x0a
  515 +9213: dict_close: >>
  516 +9215: space: \x0a
  517 +9216: word: stream
518 skipping to endstream 518 skipping to endstream
519 -9399: word: endstream  
520 -9408: space: \x0a  
521 -9409: word: endobj  
522 -9415: space: \x0a\x0a  
523 -9417: word: startxref  
524 -9426: space: \x0a  
525 -9427: integer: 8991  
526 -9431: space: \x0a  
527 -9432: comment: %%EOF  
528 -9437: space: \x0a  
529 -9438: eof 519 +9464: word: endstream
  520 +9473: space: \x0a
  521 +9474: word: endobj
  522 +9480: space: \x0a\x0a
  523 +9482: word: startxref
  524 +9491: space: \x0a
  525 +9492: integer: 9056
  526 +9496: space: \x0a
  527 +9497: comment: %%EOF
  528 +9502: space: \x0a
  529 +9503: eof
530 --- END FILE --- 530 --- END FILE ---
531 --- BEGIN PAGE 1 --- 531 --- BEGIN PAGE 1 ---
532 0: word: BT 532 0: word: BT
@@ -659,69 +659,77 @@ skipping to endstream @@ -659,69 +659,77 @@ skipping to endstream
659 58: space: \x0a 659 58: space: \x0a
660 61: string: quack (raw: (qu\\x0dack)) 660 61: string: quack (raw: (qu\\x0dack))
661 70: space: \x0a 661 70: space: \x0a
662 -73: integer: 72  
663 -75: space:  
664 -76: integer: 720  
665 -79: space:  
666 -80: word: Td  
667 -82: space: \x0a  
668 -85: real: 3.14  
669 -89: space: \x0a  
670 -92: real: 3.  
671 -94: space: \x0a  
672 -97: real: .14  
673 -100: space: \x0a  
674 -103: real: +3.14  
675 -108: space: \x0a  
676 -111: real: +3.  
677 -114: space: \x0a  
678 -117: real: +.14  
679 -121: space: \x0a  
680 -124: real: -3.14  
681 -129: space: \x0a  
682 -132: real: -3. 662 +73: string: qu\x0aack (raw: (qu\\x0d\x0a\x0dack))
  663 +84: space: \x0a
  664 +87: string: qu\x0aack (raw: (qu\\x0d\x0dack))
  665 +97: space: \x0a
  666 +100: string: qu\x0a\x0a\x0a\x0a\x0a\x0aack (raw: (qu\\x0a\x0a\x0d\x0a\x0a\x0d\x0d\x0a\x0aack))
  667 +117: space: \x0a
  668 +120: string: qu\x0a\x0a\x0a\x0a\x0a\x0aack (raw: (qu\x0a\x0d\x0a\x0a\x0d\x0d\x0a\x0aack))
683 135: space: \x0a 669 135: space: \x0a
684 -138: real: -.14  
685 -142: space: \x0a  
686 -145: integer: +16059  
687 -151: space: \x0a  
688 -154: integer: -16059  
689 -160: space: \x0a  
690 -163: word: +. 670 +138: integer: 72
  671 +140: space:
  672 +141: integer: 720
  673 +144: space:
  674 +145: word: Td
  675 +147: space: \x0a
  676 +150: real: 3.14
  677 +154: space: \x0a
  678 +157: real: 3.
  679 +159: space: \x0a
  680 +162: real: .14
691 165: space: \x0a 681 165: space: \x0a
692 -168: bad: <fade\x0aET (invalid character (T) in hexstring)  
693 -176: space: \x0a  
694 -177: bad: ) (unexpected ))  
695 -178: bad: > (unexpected >)  
696 -179: word: quack  
697 -184: space:  
698 -185: bad: /name#oops (invalid name token)  
699 -195: space:  
700 -196: name: /name (raw: /n#61me)  
701 -203: space:  
702 -204: word: one  
703 -207: space:  
704 -208: bool: true  
705 -212: space:  
706 -213: word: two  
707 -216: space:  
708 -217: bool: false  
709 -222: space:  
710 -223: word: three  
711 -228: space:  
712 -229: null: null  
713 -233: space:  
714 -234: word: four  
715 -238: space: \x0a  
716 -239: word: !@#$^&  
717 -245: brace_open: {  
718 -246: brace_close: }  
719 -247: word: *-_+=  
720 -252: space: \x0a  
721 -253: word: abc123def3.14true  
722 -270: space: \x0a  
723 -271: bad: <ff\x0a (EOF while reading token)  
724 -275: eof 682 +168: real: +3.14
  683 +173: space: \x0a
  684 +176: real: +3.
  685 +179: space: \x0a
  686 +182: real: +.14
  687 +186: space: \x0a
  688 +189: real: -3.14
  689 +194: space: \x0a
  690 +197: real: -3.
  691 +200: space: \x0a
  692 +203: real: -.14
  693 +207: space: \x0a
  694 +210: integer: +16059
  695 +216: space: \x0a
  696 +219: integer: -16059
  697 +225: space: \x0a
  698 +228: word: +.
  699 +230: space: \x0a
  700 +233: bad: <fade\x0aET (invalid character (T) in hexstring)
  701 +241: space: \x0a
  702 +242: bad: ) (unexpected ))
  703 +243: bad: > (unexpected >)
  704 +244: word: quack
  705 +249: space:
  706 +250: bad: /name#oops (invalid name token)
  707 +260: space:
  708 +261: name: /name (raw: /n#61me)
  709 +268: space:
  710 +269: word: one
  711 +272: space:
  712 +273: bool: true
  713 +277: space:
  714 +278: word: two
  715 +281: space:
  716 +282: bool: false
  717 +287: space:
  718 +288: word: three
  719 +293: space:
  720 +294: null: null
  721 +298: space:
  722 +299: word: four
  723 +303: space: \x0a
  724 +304: word: !@#$^&
  725 +310: brace_open: {
  726 +311: brace_close: }
  727 +312: word: *-_+=
  728 +317: space: \x0a
  729 +318: word: abc123def3.14true
  730 +335: space: \x0a
  731 +336: bad: <ff\x0a (EOF while reading token)
  732 +340: eof
725 --- END PAGE 4 --- 733 --- END PAGE 4 ---
726 --- BEGIN PAGE 5 --- 734 --- BEGIN PAGE 5 ---
727 0: word: BT 735 0: word: BT
qpdf/qtest/qpdf/tokens-no-ignorable.out
@@ -81,172 +81,172 @@ skipping to endstream @@ -81,172 +81,172 @@ skipping to endstream
81 7119: dict_close: >> 81 7119: dict_close: >>
82 7122: word: stream 82 7122: word: stream
83 skipping to endstream 83 skipping to endstream
84 -7404: word: endstream  
85 -7414: word: endobj  
86 -7422: integer: 44  
87 -7425: integer: 0  
88 -7427: word: obj  
89 -7431: integer: 275  
90 -7435: word: endobj  
91 -7494: integer: 45  
92 -7497: integer: 0  
93 -7499: word: obj  
94 -7503: dict_open: <<  
95 -7508: name: /Length  
96 -7516: integer: 46  
97 -7519: integer: 0  
98 -7521: word: R  
99 -7523: dict_close: >>  
100 -7526: word: stream 84 +7469: word: endstream
  85 +7479: word: endobj
  86 +7487: integer: 44
  87 +7490: integer: 0
  88 +7492: word: obj
  89 +7496: integer: 340
  90 +7500: word: endobj
  91 +7559: integer: 45
  92 +7562: integer: 0
  93 +7564: word: obj
  94 +7568: dict_open: <<
  95 +7573: name: /Length
  96 +7581: integer: 46
  97 +7584: integer: 0
  98 +7586: word: R
  99 +7588: dict_close: >>
  100 +7591: word: stream
101 skipping to endstream 101 skipping to endstream
102 -7601: word: endstream  
103 -7611: word: endobj  
104 -7640: integer: 46  
105 -7643: integer: 0  
106 -7645: word: obj  
107 -7649: integer: 67  
108 -7652: word: endobj  
109 -7711: integer: 47  
110 -7714: integer: 0  
111 -7716: word: obj  
112 -7720: dict_open: <<  
113 -7725: name: /Length  
114 -7733: integer: 48  
115 -7736: integer: 0  
116 -7738: word: R  
117 -7740: dict_close: >>  
118 -7743: word: stream 102 +7666: word: endstream
  103 +7676: word: endobj
  104 +7705: integer: 46
  105 +7708: integer: 0
  106 +7710: word: obj
  107 +7714: integer: 67
  108 +7717: word: endobj
  109 +7776: integer: 47
  110 +7779: integer: 0
  111 +7781: word: obj
  112 +7785: dict_open: <<
  113 +7790: name: /Length
  114 +7798: integer: 48
  115 +7801: integer: 0
  116 +7803: word: R
  117 +7805: dict_close: >>
  118 +7808: word: stream
119 skipping to endstream 119 skipping to endstream
120 -7794: word: endstream  
121 -7804: word: endobj  
122 -7812: integer: 48  
123 -7815: integer: 0  
124 -7817: word: obj  
125 -7821: integer: 44  
126 -7824: word: endobj  
127 -7883: integer: 49  
128 -7886: integer: 0  
129 -7888: word: obj  
130 -7892: dict_open: <<  
131 -7897: name: /Length  
132 -7905: integer: 50  
133 -7908: integer: 0  
134 -7910: word: R  
135 -7912: dict_close: >>  
136 -7915: word: stream 120 +7859: word: endstream
  121 +7869: word: endobj
  122 +7877: integer: 48
  123 +7880: integer: 0
  124 +7882: word: obj
  125 +7886: integer: 44
  126 +7889: word: endobj
  127 +7948: integer: 49
  128 +7951: integer: 0
  129 +7953: word: obj
  130 +7957: dict_open: <<
  131 +7962: name: /Length
  132 +7970: integer: 50
  133 +7973: integer: 0
  134 +7975: word: R
  135 +7977: dict_close: >>
  136 +7980: word: stream
137 skipping to endstream 137 skipping to endstream
138 -8241: word: endstream  
139 -8251: word: endobj  
140 -8280: integer: 50  
141 -8283: integer: 0  
142 -8285: word: obj  
143 -8289: integer: 318  
144 -8293: word: endobj  
145 -8352: integer: 51  
146 -8355: integer: 0  
147 -8357: word: obj  
148 -8361: dict_open: <<  
149 -8366: name: /Length  
150 -8374: integer: 52  
151 -8377: integer: 0  
152 -8379: word: R  
153 -8381: dict_close: >>  
154 -8384: word: stream 138 +8306: word: endstream
  139 +8316: word: endobj
  140 +8345: integer: 50
  141 +8348: integer: 0
  142 +8350: word: obj
  143 +8354: integer: 318
  144 +8358: word: endobj
  145 +8417: integer: 51
  146 +8420: integer: 0
  147 +8422: word: obj
  148 +8426: dict_open: <<
  149 +8431: name: /Length
  150 +8439: integer: 52
  151 +8442: integer: 0
  152 +8444: word: R
  153 +8446: dict_close: >>
  154 +8449: word: stream
155 skipping to endstream 155 skipping to endstream
156 -8435: word: endstream  
157 -8445: word: endobj  
158 -8453: integer: 52  
159 -8456: integer: 0  
160 -8458: word: obj  
161 -8462: integer: 44  
162 -8465: word: endobj  
163 -8524: integer: 53  
164 -8527: integer: 0  
165 -8529: word: obj  
166 -8533: dict_open: <<  
167 -8538: name: /Length  
168 -8546: integer: 54  
169 -8549: integer: 0  
170 -8551: word: R  
171 -8553: dict_close: >>  
172 -8556: word: stream 156 +8500: word: endstream
  157 +8510: word: endobj
  158 +8518: integer: 52
  159 +8521: integer: 0
  160 +8523: word: obj
  161 +8527: integer: 44
  162 +8530: word: endobj
  163 +8589: integer: 53
  164 +8592: integer: 0
  165 +8594: word: obj
  166 +8598: dict_open: <<
  167 +8603: name: /Length
  168 +8611: integer: 54
  169 +8614: integer: 0
  170 +8616: word: R
  171 +8618: dict_close: >>
  172 +8621: word: stream
173 skipping to endstream 173 skipping to endstream
174 -8607: word: endstream  
175 -8617: word: endobj  
176 -8625: integer: 54  
177 -8628: integer: 0  
178 -8630: word: obj  
179 -8634: integer: 44  
180 -8637: word: endobj  
181 -8697: integer: 55  
182 -8700: integer: 0  
183 -8702: word: obj  
184 -8706: dict_open: <<  
185 -8711: name: /Length  
186 -8719: integer: 56  
187 -8722: integer: 0  
188 -8724: word: R  
189 -8726: dict_close: >>  
190 -8729: word: stream 174 +8672: word: endstream
  175 +8682: word: endobj
  176 +8690: integer: 54
  177 +8693: integer: 0
  178 +8695: word: obj
  179 +8699: integer: 44
  180 +8702: word: endobj
  181 +8762: integer: 55
  182 +8765: integer: 0
  183 +8767: word: obj
  184 +8771: dict_open: <<
  185 +8776: name: /Length
  186 +8784: integer: 56
  187 +8787: integer: 0
  188 +8789: word: R
  189 +8791: dict_close: >>
  190 +8794: word: stream
191 skipping to endstream 191 skipping to endstream
192 -8780: word: endstream  
193 -8790: word: endobj  
194 -8798: integer: 56  
195 -8801: integer: 0  
196 -8803: word: obj  
197 -8807: integer: 44  
198 -8810: word: endobj  
199 -8870: integer: 57  
200 -8873: integer: 0  
201 -8875: word: obj  
202 -8879: dict_open: <<  
203 -8884: name: /Length  
204 -8892: integer: 58  
205 -8895: integer: 0  
206 -8897: word: R  
207 -8899: dict_close: >>  
208 -8902: word: stream 192 +8845: word: endstream
  193 +8855: word: endobj
  194 +8863: integer: 56
  195 +8866: integer: 0
  196 +8868: word: obj
  197 +8872: integer: 44
  198 +8875: word: endobj
  199 +8935: integer: 57
  200 +8938: integer: 0
  201 +8940: word: obj
  202 +8944: dict_open: <<
  203 +8949: name: /Length
  204 +8957: integer: 58
  205 +8960: integer: 0
  206 +8962: word: R
  207 +8964: dict_close: >>
  208 +8967: word: stream
209 skipping to endstream 209 skipping to endstream
210 -8953: word: endstream  
211 -8963: word: endobj  
212 -8971: integer: 58  
213 -8974: integer: 0  
214 -8976: word: obj  
215 -8980: integer: 44  
216 -8983: word: endobj  
217 -8991: integer: 59  
218 -8994: integer: 0  
219 -8996: word: obj  
220 -9000: dict_open: <<  
221 -9005: name: /Type  
222 -9011: name: /XRef  
223 -9019: name: /Length  
224 -9027: integer: 240  
225 -9033: name: /W  
226 -9036: array_open: [  
227 -9038: integer: 1  
228 -9040: integer: 2  
229 -9042: integer: 1  
230 -9044: array_close: ]  
231 -9048: name: /Root  
232 -9054: integer: 2  
233 -9056: integer: 0  
234 -9058: word: R  
235 -9062: name: /Size  
236 -9068: integer: 60  
237 -9073: name: /ID  
238 -9077: array_open: [  
239 -9078: string: \x88\x04\x8e\x17\xc9a\xe0\x94\xff\xec\xe9\x8c\xb8\x8cF\xd0 (raw: <88048e17c961e094ffece98cb88c46d0>)  
240 -9112: string: \xed\xd6\x0f\xe8\xee\x87\xf8\x871\xa8o\x81\x9f\xe6Q\x99 (raw: <edd60fe8ee87f88731a86f819fe65199>)  
241 -9146: array_close: ]  
242 -9148: dict_close: >>  
243 -9151: word: stream 210 +9018: word: endstream
  211 +9028: word: endobj
  212 +9036: integer: 58
  213 +9039: integer: 0
  214 +9041: word: obj
  215 +9045: integer: 44
  216 +9048: word: endobj
  217 +9056: integer: 59
  218 +9059: integer: 0
  219 +9061: word: obj
  220 +9065: dict_open: <<
  221 +9070: name: /Type
  222 +9076: name: /XRef
  223 +9084: name: /Length
  224 +9092: integer: 240
  225 +9098: name: /W
  226 +9101: array_open: [
  227 +9103: integer: 1
  228 +9105: integer: 2
  229 +9107: integer: 1
  230 +9109: array_close: ]
  231 +9113: name: /Root
  232 +9119: integer: 2
  233 +9121: integer: 0
  234 +9123: word: R
  235 +9127: name: /Size
  236 +9133: integer: 60
  237 +9138: name: /ID
  238 +9142: array_open: [
  239 +9143: string: \x88\x04\x8e\x17\xc9a\xe0\x94\xff\xec\xe9\x8c\xb8\x8cF\xd0 (raw: <88048e17c961e094ffece98cb88c46d0>)
  240 +9177: string: \xed\xd6\x0f\xe8\xee\x87\xf8\x871\xa8o\x81\x9f\xe6Q\x99 (raw: <edd60fe8ee87f88731a86f819fe65199>)
  241 +9211: array_close: ]
  242 +9213: dict_close: >>
  243 +9216: word: stream
244 skipping to endstream 244 skipping to endstream
245 -9399: word: endstream  
246 -9409: word: endobj  
247 -9417: word: startxref  
248 -9427: integer: 8991  
249 -9438: eof 245 +9464: word: endstream
  246 +9474: word: endobj
  247 +9482: word: startxref
  248 +9492: integer: 9056
  249 +9503: eof
250 --- END FILE --- 250 --- END FILE ---
251 --- BEGIN PAGE 1 --- 251 --- BEGIN PAGE 1 ---
252 0: word: BT 252 0: word: BT
@@ -325,41 +325,45 @@ skipping to endstream @@ -325,41 +325,45 @@ skipping to endstream
325 36: string: quack (raw: (qu\\x0d\x0aack)) 325 36: string: quack (raw: (qu\\x0d\x0aack))
326 49: string: quack (raw: (qu\\x0aack)) 326 49: string: quack (raw: (qu\\x0aack))
327 61: string: quack (raw: (qu\\x0dack)) 327 61: string: quack (raw: (qu\\x0dack))
328 -73: integer: 72  
329 -76: integer: 720  
330 -80: word: Td  
331 -85: real: 3.14  
332 -92: real: 3.  
333 -97: real: .14  
334 -103: real: +3.14  
335 -111: real: +3.  
336 -117: real: +.14  
337 -124: real: -3.14  
338 -132: real: -3.  
339 -138: real: -.14  
340 -145: integer: +16059  
341 -154: integer: -16059  
342 -163: word: +.  
343 -168: bad: <fade\x0aET (invalid character (T) in hexstring)  
344 -177: bad: ) (unexpected ))  
345 -178: bad: > (unexpected >)  
346 -179: word: quack  
347 -185: bad: /name#oops (invalid name token)  
348 -196: name: /name (raw: /n#61me)  
349 -204: word: one  
350 -208: bool: true  
351 -213: word: two  
352 -217: bool: false  
353 -223: word: three  
354 -229: null: null  
355 -234: word: four  
356 -239: word: !@#$^&  
357 -245: brace_open: {  
358 -246: brace_close: }  
359 -247: word: *-_+=  
360 -253: word: abc123def3.14true  
361 -271: bad: <ff\x0a (EOF while reading token)  
362 -275: eof 328 +73: string: qu\x0aack (raw: (qu\\x0d\x0a\x0dack))
  329 +87: string: qu\x0aack (raw: (qu\\x0d\x0dack))
  330 +100: string: qu\x0a\x0a\x0a\x0a\x0a\x0aack (raw: (qu\\x0a\x0a\x0d\x0a\x0a\x0d\x0d\x0a\x0aack))
  331 +120: string: qu\x0a\x0a\x0a\x0a\x0a\x0aack (raw: (qu\x0a\x0d\x0a\x0a\x0d\x0d\x0a\x0aack))
  332 +138: integer: 72
  333 +141: integer: 720
  334 +145: word: Td
  335 +150: real: 3.14
  336 +157: real: 3.
  337 +162: real: .14
  338 +168: real: +3.14
  339 +176: real: +3.
  340 +182: real: +.14
  341 +189: real: -3.14
  342 +197: real: -3.
  343 +203: real: -.14
  344 +210: integer: +16059
  345 +219: integer: -16059
  346 +228: word: +.
  347 +233: bad: <fade\x0aET (invalid character (T) in hexstring)
  348 +242: bad: ) (unexpected ))
  349 +243: bad: > (unexpected >)
  350 +244: word: quack
  351 +250: bad: /name#oops (invalid name token)
  352 +261: name: /name (raw: /n#61me)
  353 +269: word: one
  354 +273: bool: true
  355 +278: word: two
  356 +282: bool: false
  357 +288: word: three
  358 +294: null: null
  359 +299: word: four
  360 +304: word: !@#$^&
  361 +310: brace_open: {
  362 +311: brace_close: }
  363 +312: word: *-_+=
  364 +318: word: abc123def3.14true
  365 +336: bad: <ff\x0a (EOF while reading token)
  366 +340: eof
363 --- END PAGE 4 --- 367 --- END PAGE 4 ---
364 --- BEGIN PAGE 5 --- 368 --- BEGIN PAGE 5 ---
365 0: word: BT 369 0: word: BT
qpdf/qtest/qpdf/tokens.out
@@ -181,352 +181,352 @@ skipping to endstream @@ -181,352 +181,352 @@ skipping to endstream
181 7121: space: \x0a 181 7121: space: \x0a
182 7122: word: stream 182 7122: word: stream
183 skipping to endstream 183 skipping to endstream
184 -7404: word: endstream  
185 -7413: space: \x0a  
186 -7414: word: endobj  
187 -7420: space: \x0a\x0a  
188 -7422: integer: 44  
189 -7424: space:  
190 -7425: integer: 0  
191 -7426: space:  
192 -7427: word: obj  
193 -7430: space: \x0a  
194 -7431: integer: 275  
195 -7434: space: \x0a  
196 -7435: word: endobj  
197 -7441: space: \x0a\x0a  
198 -7443: comment: %% Contents for page 5  
199 -7465: space: \x0a  
200 -7466: comment: %% Original object ID: 41 0  
201 -7493: space: \x0a  
202 -7494: integer: 45  
203 -7496: space:  
204 -7497: integer: 0  
205 -7498: space:  
206 -7499: word: obj  
207 -7502: space: \x0a  
208 -7503: dict_open: <<  
209 -7505: space: \x0a  
210 -7508: name: /Length  
211 -7515: space:  
212 -7516: integer: 46  
213 -7518: space:  
214 -7519: integer: 0  
215 -7520: space:  
216 -7521: word: R  
217 -7522: space: \x0a  
218 -7523: dict_close: >>  
219 -7525: space: \x0a  
220 -7526: word: stream 184 +7469: word: endstream
  185 +7478: space: \x0a
  186 +7479: word: endobj
  187 +7485: space: \x0a\x0a
  188 +7487: integer: 44
  189 +7489: space:
  190 +7490: integer: 0
  191 +7491: space:
  192 +7492: word: obj
  193 +7495: space: \x0a
  194 +7496: integer: 340
  195 +7499: space: \x0a
  196 +7500: word: endobj
  197 +7506: space: \x0a\x0a
  198 +7508: comment: %% Contents for page 5
  199 +7530: space: \x0a
  200 +7531: comment: %% Original object ID: 41 0
  201 +7558: space: \x0a
  202 +7559: integer: 45
  203 +7561: space:
  204 +7562: integer: 0
  205 +7563: space:
  206 +7564: word: obj
  207 +7567: space: \x0a
  208 +7568: dict_open: <<
  209 +7570: space: \x0a
  210 +7573: name: /Length
  211 +7580: space:
  212 +7581: integer: 46
  213 +7583: space:
  214 +7584: integer: 0
  215 +7585: space:
  216 +7586: word: R
  217 +7587: space: \x0a
  218 +7588: dict_close: >>
  219 +7590: space: \x0a
  220 +7591: word: stream
221 skipping to endstream 221 skipping to endstream
222 -7601: word: endstream  
223 -7610: space: \x0a  
224 -7611: word: endobj  
225 -7617: space: \x0a  
226 -7618: comment: %QDF: ignore_newline  
227 -7638: space: \x0a\x0a  
228 -7640: integer: 46  
229 -7642: space:  
230 -7643: integer: 0  
231 -7644: space:  
232 -7645: word: obj  
233 -7648: space: \x0a  
234 -7649: integer: 67  
235 -7651: space: \x0a  
236 -7652: word: endobj  
237 -7658: space: \x0a\x0a  
238 -7660: comment: %% Contents for page 6 222 +7666: word: endstream
  223 +7675: space: \x0a
  224 +7676: word: endobj
239 7682: space: \x0a 225 7682: space: \x0a
240 -7683: comment: %% Original object ID: 42 0  
241 -7710: space: \x0a  
242 -7711: integer: 47  
243 -7713: space:  
244 -7714: integer: 0  
245 -7715: space:  
246 -7716: word: obj  
247 -7719: space: \x0a  
248 -7720: dict_open: <<  
249 -7722: space: \x0a  
250 -7725: name: /Length  
251 -7732: space:  
252 -7733: integer: 48  
253 -7735: space:  
254 -7736: integer: 0  
255 -7737: space:  
256 -7738: word: R  
257 -7739: space: \x0a  
258 -7740: dict_close: >>  
259 -7742: space: \x0a  
260 -7743: word: stream 226 +7683: comment: %QDF: ignore_newline
  227 +7703: space: \x0a\x0a
  228 +7705: integer: 46
  229 +7707: space:
  230 +7708: integer: 0
  231 +7709: space:
  232 +7710: word: obj
  233 +7713: space: \x0a
  234 +7714: integer: 67
  235 +7716: space: \x0a
  236 +7717: word: endobj
  237 +7723: space: \x0a\x0a
  238 +7725: comment: %% Contents for page 6
  239 +7747: space: \x0a
  240 +7748: comment: %% Original object ID: 42 0
  241 +7775: space: \x0a
  242 +7776: integer: 47
  243 +7778: space:
  244 +7779: integer: 0
  245 +7780: space:
  246 +7781: word: obj
  247 +7784: space: \x0a
  248 +7785: dict_open: <<
  249 +7787: space: \x0a
  250 +7790: name: /Length
  251 +7797: space:
  252 +7798: integer: 48
  253 +7800: space:
  254 +7801: integer: 0
  255 +7802: space:
  256 +7803: word: R
  257 +7804: space: \x0a
  258 +7805: dict_close: >>
  259 +7807: space: \x0a
  260 +7808: word: stream
261 skipping to endstream 261 skipping to endstream
262 -7794: word: endstream  
263 -7803: space: \x0a  
264 -7804: word: endobj  
265 -7810: space: \x0a\x0a  
266 -7812: integer: 48  
267 -7814: space:  
268 -7815: integer: 0  
269 -7816: space:  
270 -7817: word: obj  
271 -7820: space: \x0a  
272 -7821: integer: 44  
273 -7823: space: \x0a  
274 -7824: word: endobj  
275 -7830: space: \x0a\x0a  
276 -7832: comment: %% Contents for page 7  
277 -7854: space: \x0a  
278 -7855: comment: %% Original object ID: 43 0  
279 -7882: space: \x0a  
280 -7883: integer: 49  
281 -7885: space:  
282 -7886: integer: 0  
283 -7887: space:  
284 -7888: word: obj  
285 -7891: space: \x0a  
286 -7892: dict_open: <<  
287 -7894: space: \x0a  
288 -7897: name: /Length  
289 -7904: space:  
290 -7905: integer: 50  
291 -7907: space:  
292 -7908: integer: 0  
293 -7909: space:  
294 -7910: word: R  
295 -7911: space: \x0a  
296 -7912: dict_close: >>  
297 -7914: space: \x0a  
298 -7915: word: stream 262 +7859: word: endstream
  263 +7868: space: \x0a
  264 +7869: word: endobj
  265 +7875: space: \x0a\x0a
  266 +7877: integer: 48
  267 +7879: space:
  268 +7880: integer: 0
  269 +7881: space:
  270 +7882: word: obj
  271 +7885: space: \x0a
  272 +7886: integer: 44
  273 +7888: space: \x0a
  274 +7889: word: endobj
  275 +7895: space: \x0a\x0a
  276 +7897: comment: %% Contents for page 7
  277 +7919: space: \x0a
  278 +7920: comment: %% Original object ID: 43 0
  279 +7947: space: \x0a
  280 +7948: integer: 49
  281 +7950: space:
  282 +7951: integer: 0
  283 +7952: space:
  284 +7953: word: obj
  285 +7956: space: \x0a
  286 +7957: dict_open: <<
  287 +7959: space: \x0a
  288 +7962: name: /Length
  289 +7969: space:
  290 +7970: integer: 50
  291 +7972: space:
  292 +7973: integer: 0
  293 +7974: space:
  294 +7975: word: R
  295 +7976: space: \x0a
  296 +7977: dict_close: >>
  297 +7979: space: \x0a
  298 +7980: word: stream
299 skipping to endstream 299 skipping to endstream
300 -8241: word: endstream  
301 -8250: space: \x0a  
302 -8251: word: endobj  
303 -8257: space: \x0a  
304 -8258: comment: %QDF: ignore_newline  
305 -8278: space: \x0a\x0a  
306 -8280: integer: 50  
307 -8282: space:  
308 -8283: integer: 0  
309 -8284: space:  
310 -8285: word: obj  
311 -8288: space: \x0a  
312 -8289: integer: 318  
313 -8292: space: \x0a  
314 -8293: word: endobj  
315 -8299: space: \x0a\x0a  
316 -8301: comment: %% Contents for page 8  
317 -8323: space: \x0a  
318 -8324: comment: %% Original object ID: 44 0  
319 -8351: space: \x0a  
320 -8352: integer: 51  
321 -8354: space:  
322 -8355: integer: 0  
323 -8356: space:  
324 -8357: word: obj  
325 -8360: space: \x0a  
326 -8361: dict_open: <<  
327 -8363: space: \x0a  
328 -8366: name: /Length  
329 -8373: space:  
330 -8374: integer: 52  
331 -8376: space:  
332 -8377: integer: 0  
333 -8378: space:  
334 -8379: word: R  
335 -8380: space: \x0a  
336 -8381: dict_close: >>  
337 -8383: space: \x0a  
338 -8384: word: stream 300 +8306: word: endstream
  301 +8315: space: \x0a
  302 +8316: word: endobj
  303 +8322: space: \x0a
  304 +8323: comment: %QDF: ignore_newline
  305 +8343: space: \x0a\x0a
  306 +8345: integer: 50
  307 +8347: space:
  308 +8348: integer: 0
  309 +8349: space:
  310 +8350: word: obj
  311 +8353: space: \x0a
  312 +8354: integer: 318
  313 +8357: space: \x0a
  314 +8358: word: endobj
  315 +8364: space: \x0a\x0a
  316 +8366: comment: %% Contents for page 8
  317 +8388: space: \x0a
  318 +8389: comment: %% Original object ID: 44 0
  319 +8416: space: \x0a
  320 +8417: integer: 51
  321 +8419: space:
  322 +8420: integer: 0
  323 +8421: space:
  324 +8422: word: obj
  325 +8425: space: \x0a
  326 +8426: dict_open: <<
  327 +8428: space: \x0a
  328 +8431: name: /Length
  329 +8438: space:
  330 +8439: integer: 52
  331 +8441: space:
  332 +8442: integer: 0
  333 +8443: space:
  334 +8444: word: R
  335 +8445: space: \x0a
  336 +8446: dict_close: >>
  337 +8448: space: \x0a
  338 +8449: word: stream
339 skipping to endstream 339 skipping to endstream
340 -8435: word: endstream  
341 -8444: space: \x0a  
342 -8445: word: endobj  
343 -8451: space: \x0a\x0a  
344 -8453: integer: 52  
345 -8455: space:  
346 -8456: integer: 0  
347 -8457: space:  
348 -8458: word: obj  
349 -8461: space: \x0a  
350 -8462: integer: 44  
351 -8464: space: \x0a  
352 -8465: word: endobj  
353 -8471: space: \x0a\x0a  
354 -8473: comment: %% Contents for page 9  
355 -8495: space: \x0a  
356 -8496: comment: %% Original object ID: 45 0  
357 -8523: space: \x0a  
358 -8524: integer: 53  
359 -8526: space:  
360 -8527: integer: 0  
361 -8528: space:  
362 -8529: word: obj  
363 -8532: space: \x0a  
364 -8533: dict_open: <<  
365 -8535: space: \x0a  
366 -8538: name: /Length  
367 -8545: space:  
368 -8546: integer: 54  
369 -8548: space:  
370 -8549: integer: 0  
371 -8550: space:  
372 -8551: word: R  
373 -8552: space: \x0a  
374 -8553: dict_close: >>  
375 -8555: space: \x0a  
376 -8556: word: stream 340 +8500: word: endstream
  341 +8509: space: \x0a
  342 +8510: word: endobj
  343 +8516: space: \x0a\x0a
  344 +8518: integer: 52
  345 +8520: space:
  346 +8521: integer: 0
  347 +8522: space:
  348 +8523: word: obj
  349 +8526: space: \x0a
  350 +8527: integer: 44
  351 +8529: space: \x0a
  352 +8530: word: endobj
  353 +8536: space: \x0a\x0a
  354 +8538: comment: %% Contents for page 9
  355 +8560: space: \x0a
  356 +8561: comment: %% Original object ID: 45 0
  357 +8588: space: \x0a
  358 +8589: integer: 53
  359 +8591: space:
  360 +8592: integer: 0
  361 +8593: space:
  362 +8594: word: obj
  363 +8597: space: \x0a
  364 +8598: dict_open: <<
  365 +8600: space: \x0a
  366 +8603: name: /Length
  367 +8610: space:
  368 +8611: integer: 54
  369 +8613: space:
  370 +8614: integer: 0
  371 +8615: space:
  372 +8616: word: R
  373 +8617: space: \x0a
  374 +8618: dict_close: >>
  375 +8620: space: \x0a
  376 +8621: word: stream
377 skipping to endstream 377 skipping to endstream
378 -8607: word: endstream  
379 -8616: space: \x0a  
380 -8617: word: endobj  
381 -8623: space: \x0a\x0a  
382 -8625: integer: 54  
383 -8627: space:  
384 -8628: integer: 0  
385 -8629: space:  
386 -8630: word: obj  
387 -8633: space: \x0a  
388 -8634: integer: 44  
389 -8636: space: \x0a  
390 -8637: word: endobj  
391 -8643: space: \x0a\x0a  
392 -8645: comment: %% Contents for page 10  
393 -8668: space: \x0a  
394 -8669: comment: %% Original object ID: 46 0  
395 -8696: space: \x0a  
396 -8697: integer: 55  
397 -8699: space:  
398 -8700: integer: 0  
399 -8701: space:  
400 -8702: word: obj  
401 -8705: space: \x0a  
402 -8706: dict_open: <<  
403 -8708: space: \x0a  
404 -8711: name: /Length  
405 -8718: space:  
406 -8719: integer: 56  
407 -8721: space:  
408 -8722: integer: 0  
409 -8723: space:  
410 -8724: word: R  
411 -8725: space: \x0a  
412 -8726: dict_close: >>  
413 -8728: space: \x0a  
414 -8729: word: stream 378 +8672: word: endstream
  379 +8681: space: \x0a
  380 +8682: word: endobj
  381 +8688: space: \x0a\x0a
  382 +8690: integer: 54
  383 +8692: space:
  384 +8693: integer: 0
  385 +8694: space:
  386 +8695: word: obj
  387 +8698: space: \x0a
  388 +8699: integer: 44
  389 +8701: space: \x0a
  390 +8702: word: endobj
  391 +8708: space: \x0a\x0a
  392 +8710: comment: %% Contents for page 10
  393 +8733: space: \x0a
  394 +8734: comment: %% Original object ID: 46 0
  395 +8761: space: \x0a
  396 +8762: integer: 55
  397 +8764: space:
  398 +8765: integer: 0
  399 +8766: space:
  400 +8767: word: obj
  401 +8770: space: \x0a
  402 +8771: dict_open: <<
  403 +8773: space: \x0a
  404 +8776: name: /Length
  405 +8783: space:
  406 +8784: integer: 56
  407 +8786: space:
  408 +8787: integer: 0
  409 +8788: space:
  410 +8789: word: R
  411 +8790: space: \x0a
  412 +8791: dict_close: >>
  413 +8793: space: \x0a
  414 +8794: word: stream
415 skipping to endstream 415 skipping to endstream
416 -8780: word: endstream  
417 -8789: space: \x0a  
418 -8790: word: endobj  
419 -8796: space: \x0a\x0a  
420 -8798: integer: 56  
421 -8800: space:  
422 -8801: integer: 0  
423 -8802: space:  
424 -8803: word: obj  
425 -8806: space: \x0a  
426 -8807: integer: 44  
427 -8809: space: \x0a  
428 -8810: word: endobj  
429 -8816: space: \x0a\x0a  
430 -8818: comment: %% Contents for page 11  
431 -8841: space: \x0a  
432 -8842: comment: %% Original object ID: 47 0  
433 -8869: space: \x0a  
434 -8870: integer: 57  
435 -8872: space:  
436 -8873: integer: 0  
437 -8874: space:  
438 -8875: word: obj  
439 -8878: space: \x0a  
440 -8879: dict_open: <<  
441 -8881: space: \x0a  
442 -8884: name: /Length  
443 -8891: space:  
444 -8892: integer: 58  
445 -8894: space:  
446 -8895: integer: 0  
447 -8896: space:  
448 -8897: word: R  
449 -8898: space: \x0a  
450 -8899: dict_close: >>  
451 -8901: space: \x0a  
452 -8902: word: stream 416 +8845: word: endstream
  417 +8854: space: \x0a
  418 +8855: word: endobj
  419 +8861: space: \x0a\x0a
  420 +8863: integer: 56
  421 +8865: space:
  422 +8866: integer: 0
  423 +8867: space:
  424 +8868: word: obj
  425 +8871: space: \x0a
  426 +8872: integer: 44
  427 +8874: space: \x0a
  428 +8875: word: endobj
  429 +8881: space: \x0a\x0a
  430 +8883: comment: %% Contents for page 11
  431 +8906: space: \x0a
  432 +8907: comment: %% Original object ID: 47 0
  433 +8934: space: \x0a
  434 +8935: integer: 57
  435 +8937: space:
  436 +8938: integer: 0
  437 +8939: space:
  438 +8940: word: obj
  439 +8943: space: \x0a
  440 +8944: dict_open: <<
  441 +8946: space: \x0a
  442 +8949: name: /Length
  443 +8956: space:
  444 +8957: integer: 58
  445 +8959: space:
  446 +8960: integer: 0
  447 +8961: space:
  448 +8962: word: R
  449 +8963: space: \x0a
  450 +8964: dict_close: >>
  451 +8966: space: \x0a
  452 +8967: word: stream
453 skipping to endstream 453 skipping to endstream
454 -8953: word: endstream  
455 -8962: space: \x0a  
456 -8963: word: endobj  
457 -8969: space: \x0a\x0a  
458 -8971: integer: 58  
459 -8973: space:  
460 -8974: integer: 0  
461 -8975: space:  
462 -8976: word: obj  
463 -8979: space: \x0a  
464 -8980: integer: 44  
465 -8982: space: \x0a  
466 -8983: word: endobj  
467 -8989: space: \x0a\x0a  
468 -8991: integer: 59  
469 -8993: space:  
470 -8994: integer: 0  
471 -8995: space:  
472 -8996: word: obj  
473 -8999: space: \x0a  
474 -9000: dict_open: <<  
475 -9002: space: \x0a  
476 -9005: name: /Type  
477 -9010: space:  
478 -9011: name: /XRef  
479 -9016: space: \x0a  
480 -9019: name: /Length  
481 -9026: space:  
482 -9027: integer: 240  
483 -9030: space: \x0a  
484 -9033: name: /W  
485 -9035: space:  
486 -9036: array_open: [  
487 -9037: space:  
488 -9038: integer: 1  
489 -9039: space:  
490 -9040: integer: 2  
491 -9041: space:  
492 -9042: integer: 1  
493 -9043: space:  
494 -9044: array_close: ]  
495 -9045: space: \x0a  
496 -9048: name: /Root  
497 -9053: space:  
498 -9054: integer: 2  
499 -9055: space:  
500 -9056: integer: 0  
501 -9057: space:  
502 -9058: word: R  
503 -9059: space: \x0a  
504 -9062: name: /Size  
505 -9067: space:  
506 -9068: integer: 60  
507 -9070: space: \x0a  
508 -9073: name: /ID  
509 -9076: space:  
510 -9077: array_open: [  
511 -9078: string: \x88\x04\x8e\x17\xc9a\xe0\x94\xff\xec\xe9\x8c\xb8\x8cF\xd0 (raw: <88048e17c961e094ffece98cb88c46d0>)  
512 -9112: string: \xed\xd6\x0f\xe8\xee\x87\xf8\x871\xa8o\x81\x9f\xe6Q\x99 (raw: <edd60fe8ee87f88731a86f819fe65199>)  
513 -9146: array_close: ]  
514 -9147: space: \x0a  
515 -9148: dict_close: >>  
516 -9150: space: \x0a  
517 -9151: word: stream 454 +9018: word: endstream
  455 +9027: space: \x0a
  456 +9028: word: endobj
  457 +9034: space: \x0a\x0a
  458 +9036: integer: 58
  459 +9038: space:
  460 +9039: integer: 0
  461 +9040: space:
  462 +9041: word: obj
  463 +9044: space: \x0a
  464 +9045: integer: 44
  465 +9047: space: \x0a
  466 +9048: word: endobj
  467 +9054: space: \x0a\x0a
  468 +9056: integer: 59
  469 +9058: space:
  470 +9059: integer: 0
  471 +9060: space:
  472 +9061: word: obj
  473 +9064: space: \x0a
  474 +9065: dict_open: <<
  475 +9067: space: \x0a
  476 +9070: name: /Type
  477 +9075: space:
  478 +9076: name: /XRef
  479 +9081: space: \x0a
  480 +9084: name: /Length
  481 +9091: space:
  482 +9092: integer: 240
  483 +9095: space: \x0a
  484 +9098: name: /W
  485 +9100: space:
  486 +9101: array_open: [
  487 +9102: space:
  488 +9103: integer: 1
  489 +9104: space:
  490 +9105: integer: 2
  491 +9106: space:
  492 +9107: integer: 1
  493 +9108: space:
  494 +9109: array_close: ]
  495 +9110: space: \x0a
  496 +9113: name: /Root
  497 +9118: space:
  498 +9119: integer: 2
  499 +9120: space:
  500 +9121: integer: 0
  501 +9122: space:
  502 +9123: word: R
  503 +9124: space: \x0a
  504 +9127: name: /Size
  505 +9132: space:
  506 +9133: integer: 60
  507 +9135: space: \x0a
  508 +9138: name: /ID
  509 +9141: space:
  510 +9142: array_open: [
  511 +9143: string: \x88\x04\x8e\x17\xc9a\xe0\x94\xff\xec\xe9\x8c\xb8\x8cF\xd0 (raw: <88048e17c961e094ffece98cb88c46d0>)
  512 +9177: string: \xed\xd6\x0f\xe8\xee\x87\xf8\x871\xa8o\x81\x9f\xe6Q\x99 (raw: <edd60fe8ee87f88731a86f819fe65199>)
  513 +9211: array_close: ]
  514 +9212: space: \x0a
  515 +9213: dict_close: >>
  516 +9215: space: \x0a
  517 +9216: word: stream
518 skipping to endstream 518 skipping to endstream
519 -9399: word: endstream  
520 -9408: space: \x0a  
521 -9409: word: endobj  
522 -9415: space: \x0a\x0a  
523 -9417: word: startxref  
524 -9426: space: \x0a  
525 -9427: integer: 8991  
526 -9431: space: \x0a  
527 -9432: comment: %%EOF  
528 -9437: space: \x0a  
529 -9438: eof 519 +9464: word: endstream
  520 +9473: space: \x0a
  521 +9474: word: endobj
  522 +9480: space: \x0a\x0a
  523 +9482: word: startxref
  524 +9491: space: \x0a
  525 +9492: integer: 9056
  526 +9496: space: \x0a
  527 +9497: comment: %%EOF
  528 +9502: space: \x0a
  529 +9503: eof
530 --- END FILE --- 530 --- END FILE ---
531 --- BEGIN PAGE 1 --- 531 --- BEGIN PAGE 1 ---
532 0: word: BT 532 0: word: BT
@@ -659,69 +659,77 @@ skipping to endstream @@ -659,69 +659,77 @@ skipping to endstream
659 58: space: \x0a 659 58: space: \x0a
660 61: string: quack (raw: (qu\\x0dack)) 660 61: string: quack (raw: (qu\\x0dack))
661 70: space: \x0a 661 70: space: \x0a
662 -73: integer: 72  
663 -75: space:  
664 -76: integer: 720  
665 -79: space:  
666 -80: word: Td  
667 -82: space: \x0a  
668 -85: real: 3.14  
669 -89: space: \x0a  
670 -92: real: 3.  
671 -94: space: \x0a  
672 -97: real: .14  
673 -100: space: \x0a  
674 -103: real: +3.14  
675 -108: space: \x0a  
676 -111: real: +3.  
677 -114: space: \x0a  
678 -117: real: +.14  
679 -121: space: \x0a  
680 -124: real: -3.14  
681 -129: space: \x0a  
682 -132: real: -3. 662 +73: string: qu\x0aack (raw: (qu\\x0d\x0a\x0dack))
  663 +84: space: \x0a
  664 +87: string: qu\x0aack (raw: (qu\\x0d\x0dack))
  665 +97: space: \x0a
  666 +100: string: qu\x0a\x0a\x0a\x0a\x0a\x0aack (raw: (qu\\x0a\x0a\x0d\x0a\x0a\x0d\x0d\x0a\x0aack))
  667 +117: space: \x0a
  668 +120: string: qu\x0a\x0a\x0a\x0a\x0a\x0aack (raw: (qu\x0a\x0d\x0a\x0a\x0d\x0d\x0a\x0aack))
683 135: space: \x0a 669 135: space: \x0a
684 -138: real: -.14  
685 -142: space: \x0a  
686 -145: integer: +16059  
687 -151: space: \x0a  
688 -154: integer: -16059  
689 -160: space: \x0a  
690 -163: word: +. 670 +138: integer: 72
  671 +140: space:
  672 +141: integer: 720
  673 +144: space:
  674 +145: word: Td
  675 +147: space: \x0a
  676 +150: real: 3.14
  677 +154: space: \x0a
  678 +157: real: 3.
  679 +159: space: \x0a
  680 +162: real: .14
691 165: space: \x0a 681 165: space: \x0a
692 -168: bad: <fade\x0aET (invalid character (T) in hexstring)  
693 -176: space: \x0a  
694 -177: bad: ) (unexpected ))  
695 -178: bad: > (unexpected >)  
696 -179: word: quack  
697 -184: space:  
698 -185: bad: /name#oops (invalid name token)  
699 -195: space:  
700 -196: name: /name (raw: /n#61me)  
701 -203: space:  
702 -204: word: one  
703 -207: space:  
704 -208: bool: true  
705 -212: space:  
706 -213: word: two  
707 -216: space:  
708 -217: bool: false  
709 -222: space:  
710 -223: word: three  
711 -228: space:  
712 -229: null: null  
713 -233: space:  
714 -234: word: four  
715 -238: space: \x0a  
716 -239: word: !@#$^&  
717 -245: brace_open: {  
718 -246: brace_close: }  
719 -247: word: *-_+=  
720 -252: space: \x0a  
721 -253: word: abc123def3.14true  
722 -270: space: \x0a  
723 -271: bad: <ff\x0a (EOF while reading token)  
724 -275: eof 682 +168: real: +3.14
  683 +173: space: \x0a
  684 +176: real: +3.
  685 +179: space: \x0a
  686 +182: real: +.14
  687 +186: space: \x0a
  688 +189: real: -3.14
  689 +194: space: \x0a
  690 +197: real: -3.
  691 +200: space: \x0a
  692 +203: real: -.14
  693 +207: space: \x0a
  694 +210: integer: +16059
  695 +216: space: \x0a
  696 +219: integer: -16059
  697 +225: space: \x0a
  698 +228: word: +.
  699 +230: space: \x0a
  700 +233: bad: <fade\x0aET (invalid character (T) in hexstring)
  701 +241: space: \x0a
  702 +242: bad: ) (unexpected ))
  703 +243: bad: > (unexpected >)
  704 +244: word: quack
  705 +249: space:
  706 +250: bad: /name#oops (invalid name token)
  707 +260: space:
  708 +261: name: /name (raw: /n#61me)
  709 +268: space:
  710 +269: word: one
  711 +272: space:
  712 +273: bool: true
  713 +277: space:
  714 +278: word: two
  715 +281: space:
  716 +282: bool: false
  717 +287: space:
  718 +288: word: three
  719 +293: space:
  720 +294: null: null
  721 +298: space:
  722 +299: word: four
  723 +303: space: \x0a
  724 +304: word: !@#$^&
  725 +310: brace_open: {
  726 +311: brace_close: }
  727 +312: word: *-_+=
  728 +317: space: \x0a
  729 +318: word: abc123def3.14true
  730 +335: space: \x0a
  731 +336: bad: <ff\x0a (EOF while reading token)
  732 +340: eof
725 --- END PAGE 4 --- 733 --- END PAGE 4 ---
726 --- BEGIN PAGE 5 --- 734 --- BEGIN PAGE 5 ---
727 0: word: BT 735 0: word: BT
qpdf/qtest/qpdf/tokens.pdf
No preview for this file type