2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-12-22 02:49:00 +00:00

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.
This commit is contained in:
Jay Berkenbilt 2018-08-05 18:59:41 -04:00
parent 1619cad1e8
commit 4a4736c695
10 changed files with 1084 additions and 1039 deletions

View File

@ -1,5 +1,8 @@
2018-08-05 Jay Berkenbilt <ejb@ql.org>
* 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.

View File

@ -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<Members> m;
};

View File

@ -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 == '\\'));
}

View File

@ -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 --
<AB XWARNING: good14.pdf (offset 1406): content normalization encountered bad tokens
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
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.
<AB XWARNING: good14.pdf (offset 1405): content normalization encountered bad tokens
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
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.
-- stream 4 --
(ends with a name)
/ThisMustBeLast-- stream 5 --
@ -54,7 +54,7 @@ BI
ID
<506f7
461746f>
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

View File

@ -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

View File

@ -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

View File

@ -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: <edd60fe8ee87f88731a86f819fe65199>)
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: <edd60fe8ee87f88731a86f819fe65199>)
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: <fade\x0aET (invalid character (T) in hexstring)
176: space: \x0a
177: bad: ) (unexpected ))
178: 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: <ff\x0a (EOF while reading token)
275: eof
168: real: +3.14
173: space: \x0a
176: real: +3.
179: space: \x0a
182: real: +.14
186: space: \x0a
189: real: -3.14
194: space: \x0a
197: real: -3.
200: space: \x0a
203: real: -.14
207: space: \x0a
210: integer: +16059
216: space: \x0a
219: integer: -16059
225: space: \x0a
228: word: +.
230: space: \x0a
233: bad: <fade\x0aET (invalid character (T) in hexstring)
241: space: \x0a
242: bad: ) (unexpected ))
243: 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: <ff\x0a (EOF while reading token)
340: eof
--- END PAGE 4 ---
--- BEGIN PAGE 5 ---
0: word: BT

View File

@ -81,172 +81,172 @@ skipping to endstream
7119: dict_close: >>
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: <edd60fe8ee87f88731a86f819fe65199>)
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: <edd60fe8ee87f88731a86f819fe65199>)
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: <fade\x0aET (invalid character (T) in hexstring)
177: bad: ) (unexpected ))
178: 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: <ff\x0a (EOF while reading token)
275: eof
73: string: qu\x0aack (raw: (qu\\x0d\x0a\x0dack))
87: string: qu\x0aack (raw: (qu\\x0d\x0dack))
100: string: qu\x0a\x0a\x0a\x0a\x0a\x0aack (raw: (qu\\x0a\x0a\x0d\x0a\x0a\x0d\x0d\x0a\x0aack))
120: string: qu\x0a\x0a\x0a\x0a\x0a\x0aack (raw: (qu\x0a\x0d\x0a\x0a\x0d\x0d\x0a\x0aack))
138: integer: 72
141: integer: 720
145: word: Td
150: real: 3.14
157: real: 3.
162: real: .14
168: real: +3.14
176: real: +3.
182: real: +.14
189: real: -3.14
197: real: -3.
203: real: -.14
210: integer: +16059
219: integer: -16059
228: word: +.
233: bad: <fade\x0aET (invalid character (T) in hexstring)
242: bad: ) (unexpected ))
243: 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: <ff\x0a (EOF while reading token)
340: eof
--- END PAGE 4 ---
--- BEGIN PAGE 5 ---
0: word: BT

View File

@ -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: <edd60fe8ee87f88731a86f819fe65199>)
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: <edd60fe8ee87f88731a86f819fe65199>)
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: <fade\x0aET (invalid character (T) in hexstring)
176: space: \x0a
177: bad: ) (unexpected ))
178: 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: <ff\x0a (EOF while reading token)
275: eof
168: real: +3.14
173: space: \x0a
176: real: +3.
179: space: \x0a
182: real: +.14
186: space: \x0a
189: real: -3.14
194: space: \x0a
197: real: -3.
200: space: \x0a
203: real: -.14
207: space: \x0a
210: integer: +16059
216: space: \x0a
219: integer: -16059
225: space: \x0a
228: word: +.
230: space: \x0a
233: bad: <fade\x0aET (invalid character (T) in hexstring)
241: space: \x0a
242: bad: ) (unexpected ))
243: 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: <ff\x0a (EOF while reading token)
340: eof
--- END PAGE 4 ---
--- BEGIN PAGE 5 ---
0: word: BT

Binary file not shown.