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 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 6 * Bug fix: infinite loop on progress reporting for very small
4 7 files. Fixes #230.
5 8  
... ...
include/qpdf/QPDFTokenizer.hh
... ... @@ -229,6 +229,7 @@ class QPDFTokenizer
229 229 bool string_ignoring_newline;
230 230 char bs_num_register[4];
231 231 bool last_char_was_bs;
  232 + bool last_char_was_cr;
232 233 };
233 234 PointerHolder<Members> m;
234 235 };
... ...
libqpdf/QPDFTokenizer.cc
... ... @@ -34,6 +34,7 @@ QPDFTokenizer::Members::reset()
34 34 string_depth = 0;
35 35 string_ignoring_newline = false;
36 36 last_char_was_bs = false;
  37 + last_char_was_cr = false;
37 38 }
38 39  
39 40 QPDFTokenizer::Members::~Members()
... ... @@ -217,6 +218,7 @@ QPDFTokenizer::presentCharacter(char ch)
217 218 memset(this->m->bs_num_register, '\0',
218 219 sizeof(this->m->bs_num_register));
219 220 this->m->last_char_was_bs = false;
  221 + this->m->last_char_was_cr = false;
220 222 this->m->state = st_in_string;
221 223 }
222 224 else if (ch == '<')
... ... @@ -334,8 +336,7 @@ QPDFTokenizer::presentCharacter(char ch)
334 336 }
335 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 341 this->m->string_ignoring_newline = false;
341 342 }
... ... @@ -353,9 +354,10 @@ QPDFTokenizer::presentCharacter(char ch)
353 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 359 // ignore
  360 + this->m->string_ignoring_newline = false;
359 361 }
360 362 else if (ch_is_octal &&
361 363 (this->m->last_char_was_bs || (bs_num_count > 0)))
... ... @@ -386,8 +388,10 @@ QPDFTokenizer::presentCharacter(char ch)
386 388 this->m->val += '\f';
387 389 break;
388 390  
389   - case '\r':
390 391 case '\n':
  392 + break;
  393 +
  394 + case '\r':
391 395 this->m->string_ignoring_newline = true;
392 396 break;
393 397  
... ... @@ -417,11 +421,26 @@ QPDFTokenizer::presentCharacter(char ch)
417 421 this->m->type = tt_string;
418 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 437 else
421 438 {
422 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 444 this->m->last_char_was_bs =
426 445 ((! this->m->last_char_was_bs) && (ch == '\\'));
427 446 }
... ...
qpdf/qtest/qpdf/good14.out
... ... @@ -6,7 +6,7 @@ A B
6 6 one
7 7 two
8 8 three lines
9   -(string with \r\nCRNL)
  9 +(string with \nCRLF and\nCR and\nLF)
10 10 and another
11 11 indentation
12 12 (\001B%DEF)<01>
... ... @@ -21,7 +21,7 @@ This stream does end with a newline.
21 21 // bad tokens preserved
22 22 // comments
23 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 25 // whitespace in hexstring (removed)
26 26 // strings normalized
27 27 // newlines normalized
... ... @@ -33,17 +33,17 @@ This stream does end with a newline.
33 33  
34 34 /good name
35 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 38 -- stream 2 --
39 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 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 47 -- stream 4 --
48 48 (ends with a name)
49 49 /ThisMustBeLast-- stream 5 --
... ... @@ -54,7 +54,7 @@ BI
54 54 ID
55 55 <506f7
56 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 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 181 7121: space: \x0a
182 182 7122: word: stream
183 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 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 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 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 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 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 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 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 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 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 530 --- END FILE ---
531 531 --- BEGIN PAGE 1 ---
532 532 0: word: BT
... ... @@ -659,69 +659,77 @@ skipping to endstream
659 659 58: space: \x0a
660 660 61: string: quack (raw: (qu\\x0dack))
661 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 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 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 733 --- END PAGE 4 ---
726 734 --- BEGIN PAGE 5 ---
727 735 0: word: BT
... ...
qpdf/qtest/qpdf/tokens-no-ignorable.out
... ... @@ -81,172 +81,172 @@ skipping to endstream
81 81 7119: dict_close: >>
82 82 7122: word: stream
83 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 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 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 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 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 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 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 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 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 250 --- END FILE ---
251 251 --- BEGIN PAGE 1 ---
252 252 0: word: BT
... ... @@ -325,41 +325,45 @@ skipping to endstream
325 325 36: string: quack (raw: (qu\\x0d\x0aack))
326 326 49: string: quack (raw: (qu\\x0aack))
327 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 367 --- END PAGE 4 ---
364 368 --- BEGIN PAGE 5 ---
365 369 0: word: BT
... ...
qpdf/qtest/qpdf/tokens.out
... ... @@ -181,352 +181,352 @@ skipping to endstream
181 181 7121: space: \x0a
182 182 7122: word: stream
183 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 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 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 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 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 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 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 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 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 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 530 --- END FILE ---
531 531 --- BEGIN PAGE 1 ---
532 532 0: word: BT
... ... @@ -659,69 +659,77 @@ skipping to endstream
659 659 58: space: \x0a
660 660 61: string: quack (raw: (qu\\x0dack))
661 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 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 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 733 --- END PAGE 4 ---
726 734 --- BEGIN PAGE 5 ---
727 735 0: word: BT
... ...
qpdf/qtest/qpdf/tokens.pdf
No preview for this file type