diff --git a/ChangeLog b/ChangeLog index 42598e8a..0fa9d10b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2018-08-05 Jay Berkenbilt + * Bug fix: end of line characters were not properly handled inside + strings in some cases. Fixes #226. + * Bug fix: infinite loop on progress reporting for very small files. Fixes #230. diff --git a/include/qpdf/QPDFTokenizer.hh b/include/qpdf/QPDFTokenizer.hh index eb9215aa..09205052 100644 --- a/include/qpdf/QPDFTokenizer.hh +++ b/include/qpdf/QPDFTokenizer.hh @@ -229,6 +229,7 @@ class QPDFTokenizer bool string_ignoring_newline; char bs_num_register[4]; bool last_char_was_bs; + bool last_char_was_cr; }; PointerHolder m; }; diff --git a/libqpdf/QPDFTokenizer.cc b/libqpdf/QPDFTokenizer.cc index 9c2a1e05..e1399d82 100644 --- a/libqpdf/QPDFTokenizer.cc +++ b/libqpdf/QPDFTokenizer.cc @@ -34,6 +34,7 @@ QPDFTokenizer::Members::reset() string_depth = 0; string_ignoring_newline = false; last_char_was_bs = false; + last_char_was_cr = false; } QPDFTokenizer::Members::~Members() @@ -217,6 +218,7 @@ QPDFTokenizer::presentCharacter(char ch) memset(this->m->bs_num_register, '\0', sizeof(this->m->bs_num_register)); this->m->last_char_was_bs = false; + this->m->last_char_was_cr = false; this->m->state = st_in_string; } else if (ch == '<') @@ -334,8 +336,7 @@ QPDFTokenizer::presentCharacter(char ch) } else if (this->m->state == st_in_string) { - if (this->m->string_ignoring_newline && - (! ((ch == '\r') || (ch == '\n')))) + if (this->m->string_ignoring_newline && (ch != '\n')) { this->m->string_ignoring_newline = false; } @@ -353,9 +354,10 @@ QPDFTokenizer::presentCharacter(char ch) bs_num_count = 0; } - if (this->m->string_ignoring_newline && ((ch == '\r') || (ch == '\n'))) + if (this->m->string_ignoring_newline && (ch == '\n')) { // ignore + this->m->string_ignoring_newline = false; } else if (ch_is_octal && (this->m->last_char_was_bs || (bs_num_count > 0))) @@ -386,8 +388,10 @@ QPDFTokenizer::presentCharacter(char ch) this->m->val += '\f'; break; - case '\r': case '\n': + break; + + case '\r': this->m->string_ignoring_newline = true; break; @@ -417,11 +421,26 @@ QPDFTokenizer::presentCharacter(char ch) this->m->type = tt_string; this->m->state = st_token_ready; } + else if (ch == '\r') + { + // CR by itself is converted to LF + this->m->val += '\n'; + } + else if (ch == '\n') + { + // CR LF is converted to LF + if (! this->m->last_char_was_cr) + { + this->m->val += ch; + } + } else { this->m->val += ch; } + this->m->last_char_was_cr = + ((! this->m->string_ignoring_newline) && (ch == '\r')); this->m->last_char_was_bs = ((! this->m->last_char_was_bs) && (ch == '\\')); } diff --git a/qpdf/qtest/qpdf/good14.out b/qpdf/qtest/qpdf/good14.out index 73181721..2ac91d53 100644 --- a/qpdf/qtest/qpdf/good14.out +++ b/qpdf/qtest/qpdf/good14.out @@ -6,7 +6,7 @@ A B one two three lines -(string with \r\nCRNL) +(string with \nCRLF and\nCR and\nLF) and another indentation (\001B%DEF)<01> @@ -21,7 +21,7 @@ This stream does end with a newline. // bad tokens preserved // comments // indentation -// CR/NL inside string literal -- changed to \r or \n, newline follows +// CR, CR/LF, LF inside string literal -- changed to \n // whitespace in hexstring (removed) // strings normalized // newlines normalized @@ -33,17 +33,17 @@ This stream does end with a newline. /good name /bad#00name -WARNING: good14.pdf (offset 860): content normalization encountered bad tokens -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. +WARNING: good14.pdf (offset 874): content normalization encountered bad tokens +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. -- stream 2 -- (This stream ends with a \001 bad token -WARNING: good14.pdf (offset 1316): content normalization encountered bad tokens -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 -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. +WARNING: good14.pdf (offset 1315): content normalization encountered bad tokens +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 +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. -- stream 3 -- - -WARNING: good14.pdf (offset 1549): content normalization encountered bad tokens -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 -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. +WARNING: good14.pdf (offset 1548): content normalization encountered bad tokens +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 +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. test 3 done diff --git a/qpdf/qtest/qpdf/good14.pdf b/qpdf/qtest/qpdf/good14.pdf index da70e82f..e4d1cc83 100644 --- a/qpdf/qtest/qpdf/good14.pdf +++ b/qpdf/qtest/qpdf/good14.pdf @@ -70,7 +70,8 @@ B % here is another with CR A B one two three lines (string with -CRNL) and another +CRLF and CR and +LF) and another indentation (B%DEF)() <8A @@ -78,14 +79,14 @@ CRNL) and another (a\000b) <4D4F4F>endstream endobj 8 0 obj -<< /Length 385 >> +<< /Length 370 >> stream This stream does end with a newline. // tests: // bad tokens preserved // comments // indentation -// CR/NL inside string literal -- changed to \r or \n, newline follows +// CR, CR/LF, LF inside string literal -- changed to \n // whitespace in hexstring (removed) // strings normalized // newlines normalized @@ -101,7 +102,7 @@ endstream endobj 9 0 obj -181 +195 endobj 10 0 obj @@ -148,17 +149,17 @@ xref 0000000439 00000 n 0000000474 00000 n 0000000592 00000 n -0000000827 00000 n -0000001263 00000 n -0000001283 00000 n -0000001374 00000 n -0000001430 00000 n -0000001515 00000 n +0000000841 00000 n +0000001262 00000 n +0000001282 00000 n +0000001373 00000 n +0000001429 00000 n +0000001514 00000 n trailer << /Size 14 /Root 1 0 R /QStreams [ 7 0 R 8 0 R 10 0 R 11 0 R 12 0 R 13 0 R ] >> startxref -1670 +1669 %%EOF diff --git a/qpdf/qtest/qpdf/good14.qdf b/qpdf/qtest/qpdf/good14.qdf index c1e5d3c6..cb386198 100644 --- a/qpdf/qtest/qpdf/good14.qdf +++ b/qpdf/qtest/qpdf/good14.qdf @@ -21,7 +21,8 @@ B % here is another with CR A B one two three lines (string with -CRNL) and another +CRLF and CR and +LF) and another indentation (B%DEF)() <8A @@ -32,7 +33,7 @@ endobj %QDF: ignore_newline 3 0 obj -181 +195 endobj %% Original object ID: 8 0 @@ -46,7 +47,7 @@ This stream does end with a newline. // bad tokens preserved // comments // indentation -// CR/NL inside string literal -- changed to \r or \n, newline follows +// CR, CR/LF, LF inside string literal -- changed to \n // whitespace in hexstring (removed) // strings normalized // newlines normalized @@ -62,7 +63,7 @@ endstream endobj 5 0 obj -385 +370 endobj %% Original object ID: 10 0 @@ -206,23 +207,23 @@ xref 0000000000 65535 f 0000000052 00000 n 0000000134 00000 n -0000000392 00000 n -0000000439 00000 n -0000000879 00000 n -0000000927 00000 n -0000001022 00000 n -0000001069 00000 n -0000001151 00000 n -0000001197 00000 n -0000001310 00000 n -0000001358 00000 n -0000001518 00000 n -0000001566 00000 n -0000001677 00000 n -0000001924 00000 n -0000002025 00000 n -0000002072 00000 n -0000002218 00000 n +0000000406 00000 n +0000000453 00000 n +0000000878 00000 n +0000000926 00000 n +0000001021 00000 n +0000001068 00000 n +0000001150 00000 n +0000001196 00000 n +0000001309 00000 n +0000001357 00000 n +0000001517 00000 n +0000001565 00000 n +0000001676 00000 n +0000001923 00000 n +0000002024 00000 n +0000002071 00000 n +0000002217 00000 n trailer << /QStreams [ 2 0 R @@ -237,5 +238,5 @@ trailer << /ID [<31415926535897932384626433832795><31415926535897932384626433832795>] >> startxref -2254 +2253 %%EOF diff --git a/qpdf/qtest/qpdf/tokens-maxlen.out b/qpdf/qtest/qpdf/tokens-maxlen.out index 6eb8072b..eb5dd8d7 100644 --- a/qpdf/qtest/qpdf/tokens-maxlen.out +++ b/qpdf/qtest/qpdf/tokens-maxlen.out @@ -181,352 +181,352 @@ skipping to endstream 7121: space: \x0a 7122: word: stream skipping to endstream -7404: word: endstream -7413: space: \x0a -7414: word: endobj -7420: space: \x0a\x0a -7422: integer: 44 -7424: space: -7425: integer: 0 -7426: space: -7427: word: obj -7430: space: \x0a -7431: integer: 275 -7434: space: \x0a -7435: word: endobj -7441: space: \x0a\x0a -7443: comment: %% Contents for page 5 -7465: space: \x0a -7466: comment: %% Original object ID: 41 0 -7493: space: \x0a -7494: integer: 45 -7496: space: -7497: integer: 0 -7498: space: -7499: word: obj -7502: space: \x0a -7503: dict_open: << -7505: space: \x0a -7508: name: /Length -7515: space: -7516: integer: 46 -7518: space: -7519: integer: 0 -7520: space: -7521: word: R -7522: space: \x0a -7523: dict_close: >> -7525: space: \x0a -7526: word: stream +7469: word: endstream +7478: space: \x0a +7479: word: endobj +7485: space: \x0a\x0a +7487: integer: 44 +7489: space: +7490: integer: 0 +7491: space: +7492: word: obj +7495: space: \x0a +7496: integer: 340 +7499: space: \x0a +7500: word: endobj +7506: space: \x0a\x0a +7508: comment: %% Contents for page 5 +7530: space: \x0a +7531: comment: %% Original object ID: 41 0 +7558: space: \x0a +7559: integer: 45 +7561: space: +7562: integer: 0 +7563: space: +7564: word: obj +7567: space: \x0a +7568: dict_open: << +7570: space: \x0a +7573: name: /Length +7580: space: +7581: integer: 46 +7583: space: +7584: integer: 0 +7585: space: +7586: word: R +7587: space: \x0a +7588: dict_close: >> +7590: space: \x0a +7591: word: stream skipping to endstream -7601: word: endstream -7610: space: \x0a -7611: word: endobj -7617: space: \x0a -7618: comment: %QDF: ignore_newline -7638: space: \x0a\x0a -7640: integer: 46 -7642: space: -7643: integer: 0 -7644: space: -7645: word: obj -7648: space: \x0a -7649: integer: 67 -7651: space: \x0a -7652: word: endobj -7658: space: \x0a\x0a -7660: comment: %% Contents for page 6 +7666: word: endstream +7675: space: \x0a +7676: word: endobj 7682: space: \x0a -7683: comment: %% Original object ID: 42 0 -7710: space: \x0a -7711: integer: 47 -7713: space: -7714: integer: 0 -7715: space: -7716: word: obj -7719: space: \x0a -7720: dict_open: << -7722: space: \x0a -7725: name: /Length -7732: space: -7733: integer: 48 -7735: space: -7736: integer: 0 -7737: space: -7738: word: R -7739: space: \x0a -7740: dict_close: >> -7742: space: \x0a -7743: word: stream +7683: comment: %QDF: ignore_newline +7703: space: \x0a\x0a +7705: integer: 46 +7707: space: +7708: integer: 0 +7709: space: +7710: word: obj +7713: space: \x0a +7714: integer: 67 +7716: space: \x0a +7717: word: endobj +7723: space: \x0a\x0a +7725: comment: %% Contents for page 6 +7747: space: \x0a +7748: comment: %% Original object ID: 42 0 +7775: space: \x0a +7776: integer: 47 +7778: space: +7779: integer: 0 +7780: space: +7781: word: obj +7784: space: \x0a +7785: dict_open: << +7787: space: \x0a +7790: name: /Length +7797: space: +7798: integer: 48 +7800: space: +7801: integer: 0 +7802: space: +7803: word: R +7804: space: \x0a +7805: dict_close: >> +7807: space: \x0a +7808: word: stream skipping to endstream -7794: word: endstream -7803: space: \x0a -7804: word: endobj -7810: space: \x0a\x0a -7812: integer: 48 -7814: space: -7815: integer: 0 -7816: space: -7817: word: obj -7820: space: \x0a -7821: integer: 44 -7823: space: \x0a -7824: word: endobj -7830: space: \x0a\x0a -7832: comment: %% Contents for page 7 -7854: space: \x0a -7855: comment: %% Original object ID: 43 0 -7882: space: \x0a -7883: integer: 49 -7885: space: -7886: integer: 0 -7887: space: -7888: word: obj -7891: space: \x0a -7892: dict_open: << -7894: space: \x0a -7897: name: /Length -7904: space: -7905: integer: 50 -7907: space: -7908: integer: 0 -7909: space: -7910: word: R -7911: space: \x0a -7912: dict_close: >> -7914: space: \x0a -7915: word: stream +7859: word: endstream +7868: space: \x0a +7869: word: endobj +7875: space: \x0a\x0a +7877: integer: 48 +7879: space: +7880: integer: 0 +7881: space: +7882: word: obj +7885: space: \x0a +7886: integer: 44 +7888: space: \x0a +7889: word: endobj +7895: space: \x0a\x0a +7897: comment: %% Contents for page 7 +7919: space: \x0a +7920: comment: %% Original object ID: 43 0 +7947: space: \x0a +7948: integer: 49 +7950: space: +7951: integer: 0 +7952: space: +7953: word: obj +7956: space: \x0a +7957: dict_open: << +7959: space: \x0a +7962: name: /Length +7969: space: +7970: integer: 50 +7972: space: +7973: integer: 0 +7974: space: +7975: word: R +7976: space: \x0a +7977: dict_close: >> +7979: space: \x0a +7980: word: stream skipping to endstream -8241: word: endstream -8250: space: \x0a -8251: word: endobj -8257: space: \x0a -8258: comment: %QDF: ignore_newline -8278: space: \x0a\x0a -8280: integer: 50 -8282: space: -8283: integer: 0 -8284: space: -8285: word: obj -8288: space: \x0a -8289: integer: 318 -8292: space: \x0a -8293: word: endobj -8299: space: \x0a\x0a -8301: comment: %% Contents for page 8 -8323: space: \x0a -8324: comment: %% Original object ID: 44 0 -8351: space: \x0a -8352: integer: 51 -8354: space: -8355: integer: 0 -8356: space: -8357: word: obj -8360: space: \x0a -8361: dict_open: << -8363: space: \x0a -8366: name: /Length -8373: space: -8374: integer: 52 -8376: space: -8377: integer: 0 -8378: space: -8379: word: R -8380: space: \x0a -8381: dict_close: >> -8383: space: \x0a -8384: word: stream +8306: word: endstream +8315: space: \x0a +8316: word: endobj +8322: space: \x0a +8323: comment: %QDF: ignore_newline +8343: space: \x0a\x0a +8345: integer: 50 +8347: space: +8348: integer: 0 +8349: space: +8350: word: obj +8353: space: \x0a +8354: integer: 318 +8357: space: \x0a +8358: word: endobj +8364: space: \x0a\x0a +8366: comment: %% Contents for page 8 +8388: space: \x0a +8389: comment: %% Original object ID: 44 0 +8416: space: \x0a +8417: integer: 51 +8419: space: +8420: integer: 0 +8421: space: +8422: word: obj +8425: space: \x0a +8426: dict_open: << +8428: space: \x0a +8431: name: /Length +8438: space: +8439: integer: 52 +8441: space: +8442: integer: 0 +8443: space: +8444: word: R +8445: space: \x0a +8446: dict_close: >> +8448: space: \x0a +8449: word: stream skipping to endstream -8435: word: endstream -8444: space: \x0a -8445: word: endobj -8451: space: \x0a\x0a -8453: integer: 52 -8455: space: -8456: integer: 0 -8457: space: -8458: word: obj -8461: space: \x0a -8462: integer: 44 -8464: space: \x0a -8465: word: endobj -8471: space: \x0a\x0a -8473: comment: %% Contents for page 9 -8495: space: \x0a -8496: comment: %% Original object ID: 45 0 -8523: space: \x0a -8524: integer: 53 -8526: space: -8527: integer: 0 -8528: space: -8529: word: obj -8532: space: \x0a -8533: dict_open: << -8535: space: \x0a -8538: name: /Length -8545: space: -8546: integer: 54 -8548: space: -8549: integer: 0 -8550: space: -8551: word: R -8552: space: \x0a -8553: dict_close: >> -8555: space: \x0a -8556: word: stream +8500: word: endstream +8509: space: \x0a +8510: word: endobj +8516: space: \x0a\x0a +8518: integer: 52 +8520: space: +8521: integer: 0 +8522: space: +8523: word: obj +8526: space: \x0a +8527: integer: 44 +8529: space: \x0a +8530: word: endobj +8536: space: \x0a\x0a +8538: comment: %% Contents for page 9 +8560: space: \x0a +8561: comment: %% Original object ID: 45 0 +8588: space: \x0a +8589: integer: 53 +8591: space: +8592: integer: 0 +8593: space: +8594: word: obj +8597: space: \x0a +8598: dict_open: << +8600: space: \x0a +8603: name: /Length +8610: space: +8611: integer: 54 +8613: space: +8614: integer: 0 +8615: space: +8616: word: R +8617: space: \x0a +8618: dict_close: >> +8620: space: \x0a +8621: word: stream skipping to endstream -8607: word: endstream -8616: space: \x0a -8617: word: endobj -8623: space: \x0a\x0a -8625: integer: 54 -8627: space: -8628: integer: 0 -8629: space: -8630: word: obj -8633: space: \x0a -8634: integer: 44 -8636: space: \x0a -8637: word: endobj -8643: space: \x0a\x0a -8645: comment: %% Contents for page 10 -8668: space: \x0a -8669: comment: %% Original object ID: 46 0 -8696: space: \x0a -8697: integer: 55 -8699: space: -8700: integer: 0 -8701: space: -8702: word: obj -8705: space: \x0a -8706: dict_open: << -8708: space: \x0a -8711: name: /Length -8718: space: -8719: integer: 56 -8721: space: -8722: integer: 0 -8723: space: -8724: word: R -8725: space: \x0a -8726: dict_close: >> -8728: space: \x0a -8729: word: stream +8672: word: endstream +8681: space: \x0a +8682: word: endobj +8688: space: \x0a\x0a +8690: integer: 54 +8692: space: +8693: integer: 0 +8694: space: +8695: word: obj +8698: space: \x0a +8699: integer: 44 +8701: space: \x0a +8702: word: endobj +8708: space: \x0a\x0a +8710: comment: %% Contents for page 10 +8733: space: \x0a +8734: comment: %% Original object ID: 46 0 +8761: space: \x0a +8762: integer: 55 +8764: space: +8765: integer: 0 +8766: space: +8767: word: obj +8770: space: \x0a +8771: dict_open: << +8773: space: \x0a +8776: name: /Length +8783: space: +8784: integer: 56 +8786: space: +8787: integer: 0 +8788: space: +8789: word: R +8790: space: \x0a +8791: dict_close: >> +8793: space: \x0a +8794: word: stream skipping to endstream -8780: word: endstream -8789: space: \x0a -8790: word: endobj -8796: space: \x0a\x0a -8798: integer: 56 -8800: space: -8801: integer: 0 -8802: space: -8803: word: obj -8806: space: \x0a -8807: integer: 44 -8809: space: \x0a -8810: word: endobj -8816: space: \x0a\x0a -8818: comment: %% Contents for page 11 -8841: space: \x0a -8842: comment: %% Original object ID: 47 0 -8869: space: \x0a -8870: integer: 57 -8872: space: -8873: integer: 0 -8874: space: -8875: word: obj -8878: space: \x0a -8879: dict_open: << -8881: space: \x0a -8884: name: /Length -8891: space: -8892: integer: 58 -8894: space: -8895: integer: 0 -8896: space: -8897: word: R -8898: space: \x0a -8899: dict_close: >> -8901: space: \x0a -8902: word: stream +8845: word: endstream +8854: space: \x0a +8855: word: endobj +8861: space: \x0a\x0a +8863: integer: 56 +8865: space: +8866: integer: 0 +8867: space: +8868: word: obj +8871: space: \x0a +8872: integer: 44 +8874: space: \x0a +8875: word: endobj +8881: space: \x0a\x0a +8883: comment: %% Contents for page 11 +8906: space: \x0a +8907: comment: %% Original object ID: 47 0 +8934: space: \x0a +8935: integer: 57 +8937: space: +8938: integer: 0 +8939: space: +8940: word: obj +8943: space: \x0a +8944: dict_open: << +8946: space: \x0a +8949: name: /Length +8956: space: +8957: integer: 58 +8959: space: +8960: integer: 0 +8961: space: +8962: word: R +8963: space: \x0a +8964: dict_close: >> +8966: space: \x0a +8967: word: stream skipping to endstream -8953: word: endstream -8962: space: \x0a -8963: word: endobj -8969: space: \x0a\x0a -8971: integer: 58 -8973: space: -8974: integer: 0 -8975: space: -8976: word: obj -8979: space: \x0a -8980: integer: 44 -8982: space: \x0a -8983: word: endobj -8989: space: \x0a\x0a -8991: integer: 59 -8993: space: -8994: integer: 0 -8995: space: -8996: word: obj -8999: space: \x0a -9000: dict_open: << -9002: space: \x0a -9005: name: /Type -9010: space: -9011: name: /XRef -9016: space: \x0a -9019: name: /Length -9026: space: -9027: integer: 240 -9030: space: \x0a -9033: name: /W -9035: space: -9036: array_open: [ -9037: space: -9038: integer: 1 -9039: space: -9040: integer: 2 -9041: space: -9042: integer: 1 -9043: space: -9044: array_close: ] -9045: space: \x0a -9048: name: /Root -9053: space: -9054: integer: 2 -9055: space: -9056: integer: 0 -9057: space: -9058: word: R -9059: space: \x0a -9062: name: /Size -9067: space: -9068: integer: 60 -9070: space: \x0a -9073: name: /ID -9076: space: -9077: array_open: [ -9078: string: \x88\x04\x8e\x17\xc9a\xe0\x94\xff\xec\xe9\x8c\xb8\x8cF\xd0 (raw: <88048e17c961e094ffece98cb88c46d0>) -9112: string: \xed\xd6\x0f\xe8\xee\x87\xf8\x871\xa8o\x81\x9f\xe6Q\x99 (raw: ) -9146: array_close: ] -9147: space: \x0a -9148: dict_close: >> -9150: space: \x0a -9151: word: stream +9018: word: endstream +9027: space: \x0a +9028: word: endobj +9034: space: \x0a\x0a +9036: integer: 58 +9038: space: +9039: integer: 0 +9040: space: +9041: word: obj +9044: space: \x0a +9045: integer: 44 +9047: space: \x0a +9048: word: endobj +9054: space: \x0a\x0a +9056: integer: 59 +9058: space: +9059: integer: 0 +9060: space: +9061: word: obj +9064: space: \x0a +9065: dict_open: << +9067: space: \x0a +9070: name: /Type +9075: space: +9076: name: /XRef +9081: space: \x0a +9084: name: /Length +9091: space: +9092: integer: 240 +9095: space: \x0a +9098: name: /W +9100: space: +9101: array_open: [ +9102: space: +9103: integer: 1 +9104: space: +9105: integer: 2 +9106: space: +9107: integer: 1 +9108: space: +9109: array_close: ] +9110: space: \x0a +9113: name: /Root +9118: space: +9119: integer: 2 +9120: space: +9121: integer: 0 +9122: space: +9123: word: R +9124: space: \x0a +9127: name: /Size +9132: space: +9133: integer: 60 +9135: space: \x0a +9138: name: /ID +9141: space: +9142: array_open: [ +9143: string: \x88\x04\x8e\x17\xc9a\xe0\x94\xff\xec\xe9\x8c\xb8\x8cF\xd0 (raw: <88048e17c961e094ffece98cb88c46d0>) +9177: string: \xed\xd6\x0f\xe8\xee\x87\xf8\x871\xa8o\x81\x9f\xe6Q\x99 (raw: ) +9211: array_close: ] +9212: space: \x0a +9213: dict_close: >> +9215: space: \x0a +9216: word: stream skipping to endstream -9399: word: endstream -9408: space: \x0a -9409: word: endobj -9415: space: \x0a\x0a -9417: word: startxref -9426: space: \x0a -9427: integer: 8991 -9431: space: \x0a -9432: comment: %%EOF -9437: space: \x0a -9438: eof +9464: word: endstream +9473: space: \x0a +9474: word: endobj +9480: space: \x0a\x0a +9482: word: startxref +9491: space: \x0a +9492: integer: 9056 +9496: space: \x0a +9497: comment: %%EOF +9502: space: \x0a +9503: eof --- END FILE --- --- BEGIN PAGE 1 --- 0: word: BT @@ -659,69 +659,77 @@ skipping to endstream 58: space: \x0a 61: string: quack (raw: (qu\\x0dack)) 70: space: \x0a -73: integer: 72 -75: space: -76: integer: 720 -79: space: -80: word: Td -82: space: \x0a -85: real: 3.14 -89: space: \x0a -92: real: 3. -94: space: \x0a -97: real: .14 -100: space: \x0a -103: real: +3.14 -108: space: \x0a -111: real: +3. -114: space: \x0a -117: real: +.14 -121: space: \x0a -124: real: -3.14 -129: space: \x0a -132: real: -3. +73: string: qu\x0aack (raw: (qu\\x0d\x0a\x0dack)) +84: space: \x0a +87: string: qu\x0aack (raw: (qu\\x0d\x0dack)) +97: space: \x0a +100: string: qu\x0a\x0a\x0a\x0a\x0a\x0aack (raw: (qu\\x0a\x0a\x0d\x0a\x0a\x0d\x0d\x0a\x0aack)) +117: space: \x0a +120: string: qu\x0a\x0a\x0a\x0a\x0a\x0aack (raw: (qu\x0a\x0d\x0a\x0a\x0d\x0d\x0a\x0aack)) 135: space: \x0a -138: real: -.14 -142: space: \x0a -145: integer: +16059 -151: space: \x0a -154: integer: -16059 -160: space: \x0a -163: word: +. +138: integer: 72 +140: space: +141: integer: 720 +144: space: +145: word: Td +147: space: \x0a +150: real: 3.14 +154: space: \x0a +157: real: 3. +159: space: \x0a +162: real: .14 165: space: \x0a -168: bad: (unexpected >) -179: word: quack -184: space: -185: bad: /name#oops (invalid name token) -195: space: -196: name: /name (raw: /n#61me) -203: space: -204: word: one -207: space: -208: bool: true -212: space: -213: word: two -216: space: -217: bool: false -222: space: -223: word: three -228: space: -229: null: null -233: space: -234: word: four -238: space: \x0a -239: word: !@#$^& -245: brace_open: { -246: brace_close: } -247: word: *-_+= -252: space: \x0a -253: word: abc123def3.14true -270: space: \x0a -271: bad: (unexpected >) +244: word: quack +249: space: +250: bad: /name#oops (invalid name token) +260: space: +261: name: /name (raw: /n#61me) +268: space: +269: word: one +272: space: +273: bool: true +277: space: +278: word: two +281: space: +282: bool: false +287: space: +288: word: three +293: space: +294: null: null +298: space: +299: word: four +303: space: \x0a +304: word: !@#$^& +310: brace_open: { +311: brace_close: } +312: word: *-_+= +317: space: \x0a +318: word: abc123def3.14true +335: space: \x0a +336: bad: > 7122: word: stream skipping to endstream -7404: word: endstream -7414: word: endobj -7422: integer: 44 -7425: integer: 0 -7427: word: obj -7431: integer: 275 -7435: word: endobj -7494: integer: 45 -7497: integer: 0 -7499: word: obj -7503: dict_open: << -7508: name: /Length -7516: integer: 46 -7519: integer: 0 -7521: word: R -7523: dict_close: >> -7526: word: stream +7469: word: endstream +7479: word: endobj +7487: integer: 44 +7490: integer: 0 +7492: word: obj +7496: integer: 340 +7500: word: endobj +7559: integer: 45 +7562: integer: 0 +7564: word: obj +7568: dict_open: << +7573: name: /Length +7581: integer: 46 +7584: integer: 0 +7586: word: R +7588: dict_close: >> +7591: word: stream skipping to endstream -7601: word: endstream -7611: word: endobj -7640: integer: 46 -7643: integer: 0 -7645: word: obj -7649: integer: 67 -7652: word: endobj -7711: integer: 47 -7714: integer: 0 -7716: word: obj -7720: dict_open: << -7725: name: /Length -7733: integer: 48 -7736: integer: 0 -7738: word: R -7740: dict_close: >> -7743: word: stream +7666: word: endstream +7676: word: endobj +7705: integer: 46 +7708: integer: 0 +7710: word: obj +7714: integer: 67 +7717: word: endobj +7776: integer: 47 +7779: integer: 0 +7781: word: obj +7785: dict_open: << +7790: name: /Length +7798: integer: 48 +7801: integer: 0 +7803: word: R +7805: dict_close: >> +7808: word: stream skipping to endstream -7794: word: endstream -7804: word: endobj -7812: integer: 48 -7815: integer: 0 -7817: word: obj -7821: integer: 44 -7824: word: endobj -7883: integer: 49 -7886: integer: 0 -7888: word: obj -7892: dict_open: << -7897: name: /Length -7905: integer: 50 -7908: integer: 0 -7910: word: R -7912: dict_close: >> -7915: word: stream +7859: word: endstream +7869: word: endobj +7877: integer: 48 +7880: integer: 0 +7882: word: obj +7886: integer: 44 +7889: word: endobj +7948: integer: 49 +7951: integer: 0 +7953: word: obj +7957: dict_open: << +7962: name: /Length +7970: integer: 50 +7973: integer: 0 +7975: word: R +7977: dict_close: >> +7980: word: stream skipping to endstream -8241: word: endstream -8251: word: endobj -8280: integer: 50 -8283: integer: 0 -8285: word: obj -8289: integer: 318 -8293: word: endobj -8352: integer: 51 -8355: integer: 0 -8357: word: obj -8361: dict_open: << -8366: name: /Length -8374: integer: 52 -8377: integer: 0 -8379: word: R -8381: dict_close: >> -8384: word: stream +8306: word: endstream +8316: word: endobj +8345: integer: 50 +8348: integer: 0 +8350: word: obj +8354: integer: 318 +8358: word: endobj +8417: integer: 51 +8420: integer: 0 +8422: word: obj +8426: dict_open: << +8431: name: /Length +8439: integer: 52 +8442: integer: 0 +8444: word: R +8446: dict_close: >> +8449: word: stream skipping to endstream -8435: word: endstream -8445: word: endobj -8453: integer: 52 -8456: integer: 0 -8458: word: obj -8462: integer: 44 -8465: word: endobj -8524: integer: 53 -8527: integer: 0 -8529: word: obj -8533: dict_open: << -8538: name: /Length -8546: integer: 54 -8549: integer: 0 -8551: word: R -8553: dict_close: >> -8556: word: stream +8500: word: endstream +8510: word: endobj +8518: integer: 52 +8521: integer: 0 +8523: word: obj +8527: integer: 44 +8530: word: endobj +8589: integer: 53 +8592: integer: 0 +8594: word: obj +8598: dict_open: << +8603: name: /Length +8611: integer: 54 +8614: integer: 0 +8616: word: R +8618: dict_close: >> +8621: word: stream skipping to endstream -8607: word: endstream -8617: word: endobj -8625: integer: 54 -8628: integer: 0 -8630: word: obj -8634: integer: 44 -8637: word: endobj -8697: integer: 55 -8700: integer: 0 -8702: word: obj -8706: dict_open: << -8711: name: /Length -8719: integer: 56 -8722: integer: 0 -8724: word: R -8726: dict_close: >> -8729: word: stream +8672: word: endstream +8682: word: endobj +8690: integer: 54 +8693: integer: 0 +8695: word: obj +8699: integer: 44 +8702: word: endobj +8762: integer: 55 +8765: integer: 0 +8767: word: obj +8771: dict_open: << +8776: name: /Length +8784: integer: 56 +8787: integer: 0 +8789: word: R +8791: dict_close: >> +8794: word: stream skipping to endstream -8780: word: endstream -8790: word: endobj -8798: integer: 56 -8801: integer: 0 -8803: word: obj -8807: integer: 44 -8810: word: endobj -8870: integer: 57 -8873: integer: 0 -8875: word: obj -8879: dict_open: << -8884: name: /Length -8892: integer: 58 -8895: integer: 0 -8897: word: R -8899: dict_close: >> -8902: word: stream +8845: word: endstream +8855: word: endobj +8863: integer: 56 +8866: integer: 0 +8868: word: obj +8872: integer: 44 +8875: word: endobj +8935: integer: 57 +8938: integer: 0 +8940: word: obj +8944: dict_open: << +8949: name: /Length +8957: integer: 58 +8960: integer: 0 +8962: word: R +8964: dict_close: >> +8967: word: stream skipping to endstream -8953: word: endstream -8963: word: endobj -8971: integer: 58 -8974: integer: 0 -8976: word: obj -8980: integer: 44 -8983: word: endobj -8991: integer: 59 -8994: integer: 0 -8996: word: obj -9000: dict_open: << -9005: name: /Type -9011: name: /XRef -9019: name: /Length -9027: integer: 240 -9033: name: /W -9036: array_open: [ -9038: integer: 1 -9040: integer: 2 -9042: integer: 1 -9044: array_close: ] -9048: name: /Root -9054: integer: 2 -9056: integer: 0 -9058: word: R -9062: name: /Size -9068: integer: 60 -9073: name: /ID -9077: array_open: [ -9078: string: \x88\x04\x8e\x17\xc9a\xe0\x94\xff\xec\xe9\x8c\xb8\x8cF\xd0 (raw: <88048e17c961e094ffece98cb88c46d0>) -9112: string: \xed\xd6\x0f\xe8\xee\x87\xf8\x871\xa8o\x81\x9f\xe6Q\x99 (raw: ) -9146: array_close: ] -9148: dict_close: >> -9151: word: stream +9018: word: endstream +9028: word: endobj +9036: integer: 58 +9039: integer: 0 +9041: word: obj +9045: integer: 44 +9048: word: endobj +9056: integer: 59 +9059: integer: 0 +9061: word: obj +9065: dict_open: << +9070: name: /Type +9076: name: /XRef +9084: name: /Length +9092: integer: 240 +9098: name: /W +9101: array_open: [ +9103: integer: 1 +9105: integer: 2 +9107: integer: 1 +9109: array_close: ] +9113: name: /Root +9119: integer: 2 +9121: integer: 0 +9123: word: R +9127: name: /Size +9133: integer: 60 +9138: name: /ID +9142: array_open: [ +9143: string: \x88\x04\x8e\x17\xc9a\xe0\x94\xff\xec\xe9\x8c\xb8\x8cF\xd0 (raw: <88048e17c961e094ffece98cb88c46d0>) +9177: string: \xed\xd6\x0f\xe8\xee\x87\xf8\x871\xa8o\x81\x9f\xe6Q\x99 (raw: ) +9211: array_close: ] +9213: dict_close: >> +9216: word: stream skipping to endstream -9399: word: endstream -9409: word: endobj -9417: word: startxref -9427: integer: 8991 -9438: eof +9464: word: endstream +9474: word: endobj +9482: word: startxref +9492: integer: 9056 +9503: eof --- END FILE --- --- BEGIN PAGE 1 --- 0: word: BT @@ -325,41 +325,45 @@ skipping to endstream 36: string: quack (raw: (qu\\x0d\x0aack)) 49: string: quack (raw: (qu\\x0aack)) 61: string: quack (raw: (qu\\x0dack)) -73: integer: 72 -76: integer: 720 -80: word: Td -85: real: 3.14 -92: real: 3. -97: real: .14 -103: real: +3.14 -111: real: +3. -117: real: +.14 -124: real: -3.14 -132: real: -3. -138: real: -.14 -145: integer: +16059 -154: integer: -16059 -163: word: +. -168: bad: (unexpected >) -179: word: quack -185: bad: /name#oops (invalid name token) -196: name: /name (raw: /n#61me) -204: word: one -208: bool: true -213: word: two -217: bool: false -223: word: three -229: null: null -234: word: four -239: word: !@#$^& -245: brace_open: { -246: brace_close: } -247: word: *-_+= -253: word: abc123def3.14true -271: bad: (unexpected >) +244: word: quack +250: bad: /name#oops (invalid name token) +261: name: /name (raw: /n#61me) +269: word: one +273: bool: true +278: word: two +282: bool: false +288: word: three +294: null: null +299: word: four +304: word: !@#$^& +310: brace_open: { +311: brace_close: } +312: word: *-_+= +318: word: abc123def3.14true +336: bad: > -7525: space: \x0a -7526: word: stream +7469: word: endstream +7478: space: \x0a +7479: word: endobj +7485: space: \x0a\x0a +7487: integer: 44 +7489: space: +7490: integer: 0 +7491: space: +7492: word: obj +7495: space: \x0a +7496: integer: 340 +7499: space: \x0a +7500: word: endobj +7506: space: \x0a\x0a +7508: comment: %% Contents for page 5 +7530: space: \x0a +7531: comment: %% Original object ID: 41 0 +7558: space: \x0a +7559: integer: 45 +7561: space: +7562: integer: 0 +7563: space: +7564: word: obj +7567: space: \x0a +7568: dict_open: << +7570: space: \x0a +7573: name: /Length +7580: space: +7581: integer: 46 +7583: space: +7584: integer: 0 +7585: space: +7586: word: R +7587: space: \x0a +7588: dict_close: >> +7590: space: \x0a +7591: word: stream skipping to endstream -7601: word: endstream -7610: space: \x0a -7611: word: endobj -7617: space: \x0a -7618: comment: %QDF: ignore_newline -7638: space: \x0a\x0a -7640: integer: 46 -7642: space: -7643: integer: 0 -7644: space: -7645: word: obj -7648: space: \x0a -7649: integer: 67 -7651: space: \x0a -7652: word: endobj -7658: space: \x0a\x0a -7660: comment: %% Contents for page 6 +7666: word: endstream +7675: space: \x0a +7676: word: endobj 7682: space: \x0a -7683: comment: %% Original object ID: 42 0 -7710: space: \x0a -7711: integer: 47 -7713: space: -7714: integer: 0 -7715: space: -7716: word: obj -7719: space: \x0a -7720: dict_open: << -7722: space: \x0a -7725: name: /Length -7732: space: -7733: integer: 48 -7735: space: -7736: integer: 0 -7737: space: -7738: word: R -7739: space: \x0a -7740: dict_close: >> -7742: space: \x0a -7743: word: stream +7683: comment: %QDF: ignore_newline +7703: space: \x0a\x0a +7705: integer: 46 +7707: space: +7708: integer: 0 +7709: space: +7710: word: obj +7713: space: \x0a +7714: integer: 67 +7716: space: \x0a +7717: word: endobj +7723: space: \x0a\x0a +7725: comment: %% Contents for page 6 +7747: space: \x0a +7748: comment: %% Original object ID: 42 0 +7775: space: \x0a +7776: integer: 47 +7778: space: +7779: integer: 0 +7780: space: +7781: word: obj +7784: space: \x0a +7785: dict_open: << +7787: space: \x0a +7790: name: /Length +7797: space: +7798: integer: 48 +7800: space: +7801: integer: 0 +7802: space: +7803: word: R +7804: space: \x0a +7805: dict_close: >> +7807: space: \x0a +7808: word: stream skipping to endstream -7794: word: endstream -7803: space: \x0a -7804: word: endobj -7810: space: \x0a\x0a -7812: integer: 48 -7814: space: -7815: integer: 0 -7816: space: -7817: word: obj -7820: space: \x0a -7821: integer: 44 -7823: space: \x0a -7824: word: endobj -7830: space: \x0a\x0a -7832: comment: %% Contents for page 7 -7854: space: \x0a -7855: comment: %% Original object ID: 43 0 -7882: space: \x0a -7883: integer: 49 -7885: space: -7886: integer: 0 -7887: space: -7888: word: obj -7891: space: \x0a -7892: dict_open: << -7894: space: \x0a -7897: name: /Length -7904: space: -7905: integer: 50 -7907: space: -7908: integer: 0 -7909: space: -7910: word: R -7911: space: \x0a -7912: dict_close: >> -7914: space: \x0a -7915: word: stream +7859: word: endstream +7868: space: \x0a +7869: word: endobj +7875: space: \x0a\x0a +7877: integer: 48 +7879: space: +7880: integer: 0 +7881: space: +7882: word: obj +7885: space: \x0a +7886: integer: 44 +7888: space: \x0a +7889: word: endobj +7895: space: \x0a\x0a +7897: comment: %% Contents for page 7 +7919: space: \x0a +7920: comment: %% Original object ID: 43 0 +7947: space: \x0a +7948: integer: 49 +7950: space: +7951: integer: 0 +7952: space: +7953: word: obj +7956: space: \x0a +7957: dict_open: << +7959: space: \x0a +7962: name: /Length +7969: space: +7970: integer: 50 +7972: space: +7973: integer: 0 +7974: space: +7975: word: R +7976: space: \x0a +7977: dict_close: >> +7979: space: \x0a +7980: word: stream skipping to endstream -8241: word: endstream -8250: space: \x0a -8251: word: endobj -8257: space: \x0a -8258: comment: %QDF: ignore_newline -8278: space: \x0a\x0a -8280: integer: 50 -8282: space: -8283: integer: 0 -8284: space: -8285: word: obj -8288: space: \x0a -8289: integer: 318 -8292: space: \x0a -8293: word: endobj -8299: space: \x0a\x0a -8301: comment: %% Contents for page 8 -8323: space: \x0a -8324: comment: %% Original object ID: 44 0 -8351: space: \x0a -8352: integer: 51 -8354: space: -8355: integer: 0 -8356: space: -8357: word: obj -8360: space: \x0a -8361: dict_open: << -8363: space: \x0a -8366: name: /Length -8373: space: -8374: integer: 52 -8376: space: -8377: integer: 0 -8378: space: -8379: word: R -8380: space: \x0a -8381: dict_close: >> -8383: space: \x0a -8384: word: stream +8306: word: endstream +8315: space: \x0a +8316: word: endobj +8322: space: \x0a +8323: comment: %QDF: ignore_newline +8343: space: \x0a\x0a +8345: integer: 50 +8347: space: +8348: integer: 0 +8349: space: +8350: word: obj +8353: space: \x0a +8354: integer: 318 +8357: space: \x0a +8358: word: endobj +8364: space: \x0a\x0a +8366: comment: %% Contents for page 8 +8388: space: \x0a +8389: comment: %% Original object ID: 44 0 +8416: space: \x0a +8417: integer: 51 +8419: space: +8420: integer: 0 +8421: space: +8422: word: obj +8425: space: \x0a +8426: dict_open: << +8428: space: \x0a +8431: name: /Length +8438: space: +8439: integer: 52 +8441: space: +8442: integer: 0 +8443: space: +8444: word: R +8445: space: \x0a +8446: dict_close: >> +8448: space: \x0a +8449: word: stream skipping to endstream -8435: word: endstream -8444: space: \x0a -8445: word: endobj -8451: space: \x0a\x0a -8453: integer: 52 -8455: space: -8456: integer: 0 -8457: space: -8458: word: obj -8461: space: \x0a -8462: integer: 44 -8464: space: \x0a -8465: word: endobj -8471: space: \x0a\x0a -8473: comment: %% Contents for page 9 -8495: space: \x0a -8496: comment: %% Original object ID: 45 0 -8523: space: \x0a -8524: integer: 53 -8526: space: -8527: integer: 0 -8528: space: -8529: word: obj -8532: space: \x0a -8533: dict_open: << -8535: space: \x0a -8538: name: /Length -8545: space: -8546: integer: 54 -8548: space: -8549: integer: 0 -8550: space: -8551: word: R -8552: space: \x0a -8553: dict_close: >> -8555: space: \x0a -8556: word: stream +8500: word: endstream +8509: space: \x0a +8510: word: endobj +8516: space: \x0a\x0a +8518: integer: 52 +8520: space: +8521: integer: 0 +8522: space: +8523: word: obj +8526: space: \x0a +8527: integer: 44 +8529: space: \x0a +8530: word: endobj +8536: space: \x0a\x0a +8538: comment: %% Contents for page 9 +8560: space: \x0a +8561: comment: %% Original object ID: 45 0 +8588: space: \x0a +8589: integer: 53 +8591: space: +8592: integer: 0 +8593: space: +8594: word: obj +8597: space: \x0a +8598: dict_open: << +8600: space: \x0a +8603: name: /Length +8610: space: +8611: integer: 54 +8613: space: +8614: integer: 0 +8615: space: +8616: word: R +8617: space: \x0a +8618: dict_close: >> +8620: space: \x0a +8621: word: stream skipping to endstream -8607: word: endstream -8616: space: \x0a -8617: word: endobj -8623: space: \x0a\x0a -8625: integer: 54 -8627: space: -8628: integer: 0 -8629: space: -8630: word: obj -8633: space: \x0a -8634: integer: 44 -8636: space: \x0a -8637: word: endobj -8643: space: \x0a\x0a -8645: comment: %% Contents for page 10 -8668: space: \x0a -8669: comment: %% Original object ID: 46 0 -8696: space: \x0a -8697: integer: 55 -8699: space: -8700: integer: 0 -8701: space: -8702: word: obj -8705: space: \x0a -8706: dict_open: << -8708: space: \x0a -8711: name: /Length -8718: space: -8719: integer: 56 -8721: space: -8722: integer: 0 -8723: space: -8724: word: R -8725: space: \x0a -8726: dict_close: >> -8728: space: \x0a -8729: word: stream +8672: word: endstream +8681: space: \x0a +8682: word: endobj +8688: space: \x0a\x0a +8690: integer: 54 +8692: space: +8693: integer: 0 +8694: space: +8695: word: obj +8698: space: \x0a +8699: integer: 44 +8701: space: \x0a +8702: word: endobj +8708: space: \x0a\x0a +8710: comment: %% Contents for page 10 +8733: space: \x0a +8734: comment: %% Original object ID: 46 0 +8761: space: \x0a +8762: integer: 55 +8764: space: +8765: integer: 0 +8766: space: +8767: word: obj +8770: space: \x0a +8771: dict_open: << +8773: space: \x0a +8776: name: /Length +8783: space: +8784: integer: 56 +8786: space: +8787: integer: 0 +8788: space: +8789: word: R +8790: space: \x0a +8791: dict_close: >> +8793: space: \x0a +8794: word: stream skipping to endstream -8780: word: endstream -8789: space: \x0a -8790: word: endobj -8796: space: \x0a\x0a -8798: integer: 56 -8800: space: -8801: integer: 0 -8802: space: -8803: word: obj -8806: space: \x0a -8807: integer: 44 -8809: space: \x0a -8810: word: endobj -8816: space: \x0a\x0a -8818: comment: %% Contents for page 11 -8841: space: \x0a -8842: comment: %% Original object ID: 47 0 -8869: space: \x0a -8870: integer: 57 -8872: space: -8873: integer: 0 -8874: space: -8875: word: obj -8878: space: \x0a -8879: dict_open: << -8881: space: \x0a -8884: name: /Length -8891: space: -8892: integer: 58 -8894: space: -8895: integer: 0 -8896: space: -8897: word: R -8898: space: \x0a -8899: dict_close: >> -8901: space: \x0a -8902: word: stream +8845: word: endstream +8854: space: \x0a +8855: word: endobj +8861: space: \x0a\x0a +8863: integer: 56 +8865: space: +8866: integer: 0 +8867: space: +8868: word: obj +8871: space: \x0a +8872: integer: 44 +8874: space: \x0a +8875: word: endobj +8881: space: \x0a\x0a +8883: comment: %% Contents for page 11 +8906: space: \x0a +8907: comment: %% Original object ID: 47 0 +8934: space: \x0a +8935: integer: 57 +8937: space: +8938: integer: 0 +8939: space: +8940: word: obj +8943: space: \x0a +8944: dict_open: << +8946: space: \x0a +8949: name: /Length +8956: space: +8957: integer: 58 +8959: space: +8960: integer: 0 +8961: space: +8962: word: R +8963: space: \x0a +8964: dict_close: >> +8966: space: \x0a +8967: word: stream skipping to endstream -8953: word: endstream -8962: space: \x0a -8963: word: endobj -8969: space: \x0a\x0a -8971: integer: 58 -8973: space: -8974: integer: 0 -8975: space: -8976: word: obj -8979: space: \x0a -8980: integer: 44 -8982: space: \x0a -8983: word: endobj -8989: space: \x0a\x0a -8991: integer: 59 -8993: space: -8994: integer: 0 -8995: space: -8996: word: obj -8999: space: \x0a -9000: dict_open: << -9002: space: \x0a -9005: name: /Type -9010: space: -9011: name: /XRef -9016: space: \x0a -9019: name: /Length -9026: space: -9027: integer: 240 -9030: space: \x0a -9033: name: /W -9035: space: -9036: array_open: [ -9037: space: -9038: integer: 1 -9039: space: -9040: integer: 2 -9041: space: -9042: integer: 1 -9043: space: -9044: array_close: ] -9045: space: \x0a -9048: name: /Root -9053: space: -9054: integer: 2 -9055: space: -9056: integer: 0 -9057: space: -9058: word: R -9059: space: \x0a -9062: name: /Size -9067: space: -9068: integer: 60 -9070: space: \x0a -9073: name: /ID -9076: space: -9077: array_open: [ -9078: string: \x88\x04\x8e\x17\xc9a\xe0\x94\xff\xec\xe9\x8c\xb8\x8cF\xd0 (raw: <88048e17c961e094ffece98cb88c46d0>) -9112: string: \xed\xd6\x0f\xe8\xee\x87\xf8\x871\xa8o\x81\x9f\xe6Q\x99 (raw: ) -9146: array_close: ] -9147: space: \x0a -9148: dict_close: >> -9150: space: \x0a -9151: word: stream +9018: word: endstream +9027: space: \x0a +9028: word: endobj +9034: space: \x0a\x0a +9036: integer: 58 +9038: space: +9039: integer: 0 +9040: space: +9041: word: obj +9044: space: \x0a +9045: integer: 44 +9047: space: \x0a +9048: word: endobj +9054: space: \x0a\x0a +9056: integer: 59 +9058: space: +9059: integer: 0 +9060: space: +9061: word: obj +9064: space: \x0a +9065: dict_open: << +9067: space: \x0a +9070: name: /Type +9075: space: +9076: name: /XRef +9081: space: \x0a +9084: name: /Length +9091: space: +9092: integer: 240 +9095: space: \x0a +9098: name: /W +9100: space: +9101: array_open: [ +9102: space: +9103: integer: 1 +9104: space: +9105: integer: 2 +9106: space: +9107: integer: 1 +9108: space: +9109: array_close: ] +9110: space: \x0a +9113: name: /Root +9118: space: +9119: integer: 2 +9120: space: +9121: integer: 0 +9122: space: +9123: word: R +9124: space: \x0a +9127: name: /Size +9132: space: +9133: integer: 60 +9135: space: \x0a +9138: name: /ID +9141: space: +9142: array_open: [ +9143: string: \x88\x04\x8e\x17\xc9a\xe0\x94\xff\xec\xe9\x8c\xb8\x8cF\xd0 (raw: <88048e17c961e094ffece98cb88c46d0>) +9177: string: \xed\xd6\x0f\xe8\xee\x87\xf8\x871\xa8o\x81\x9f\xe6Q\x99 (raw: ) +9211: array_close: ] +9212: space: \x0a +9213: dict_close: >> +9215: space: \x0a +9216: word: stream skipping to endstream -9399: word: endstream -9408: space: \x0a -9409: word: endobj -9415: space: \x0a\x0a -9417: word: startxref -9426: space: \x0a -9427: integer: 8991 -9431: space: \x0a -9432: comment: %%EOF -9437: space: \x0a -9438: eof +9464: word: endstream +9473: space: \x0a +9474: word: endobj +9480: space: \x0a\x0a +9482: word: startxref +9491: space: \x0a +9492: integer: 9056 +9496: space: \x0a +9497: comment: %%EOF +9502: space: \x0a +9503: eof --- END FILE --- --- BEGIN PAGE 1 --- 0: word: BT @@ -659,69 +659,77 @@ skipping to endstream 58: space: \x0a 61: string: quack (raw: (qu\\x0dack)) 70: space: \x0a -73: integer: 72 -75: space: -76: integer: 720 -79: space: -80: word: Td -82: space: \x0a -85: real: 3.14 -89: space: \x0a -92: real: 3. -94: space: \x0a -97: real: .14 -100: space: \x0a -103: real: +3.14 -108: space: \x0a -111: real: +3. -114: space: \x0a -117: real: +.14 -121: space: \x0a -124: real: -3.14 -129: space: \x0a -132: real: -3. +73: string: qu\x0aack (raw: (qu\\x0d\x0a\x0dack)) +84: space: \x0a +87: string: qu\x0aack (raw: (qu\\x0d\x0dack)) +97: space: \x0a +100: string: qu\x0a\x0a\x0a\x0a\x0a\x0aack (raw: (qu\\x0a\x0a\x0d\x0a\x0a\x0d\x0d\x0a\x0aack)) +117: space: \x0a +120: string: qu\x0a\x0a\x0a\x0a\x0a\x0aack (raw: (qu\x0a\x0d\x0a\x0a\x0d\x0d\x0a\x0aack)) 135: space: \x0a -138: real: -.14 -142: space: \x0a -145: integer: +16059 -151: space: \x0a -154: integer: -16059 -160: space: \x0a -163: word: +. +138: integer: 72 +140: space: +141: integer: 720 +144: space: +145: word: Td +147: space: \x0a +150: real: 3.14 +154: space: \x0a +157: real: 3. +159: space: \x0a +162: real: .14 165: space: \x0a -168: bad: (unexpected >) -179: word: quack -184: space: -185: bad: /name#oops (invalid name token) -195: space: -196: name: /name (raw: /n#61me) -203: space: -204: word: one -207: space: -208: bool: true -212: space: -213: word: two -216: space: -217: bool: false -222: space: -223: word: three -228: space: -229: null: null -233: space: -234: word: four -238: space: \x0a -239: word: !@#$^& -245: brace_open: { -246: brace_close: } -247: word: *-_+= -252: space: \x0a -253: word: abc123def3.14true -270: space: \x0a -271: bad: (unexpected >) +244: word: quack +249: space: +250: bad: /name#oops (invalid name token) +260: space: +261: name: /name (raw: /n#61me) +268: space: +269: word: one +272: space: +273: bool: true +277: space: +278: word: two +281: space: +282: bool: false +287: space: +288: word: three +293: space: +294: null: null +298: space: +299: word: four +303: space: \x0a +304: word: !@#$^& +310: brace_open: { +311: brace_close: } +312: word: *-_+= +317: space: \x0a +318: word: abc123def3.14true +335: space: \x0a +336: bad: