From 45dac410b5f427bc8c8ea39cc04cc55ddb825671 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Fri, 21 Jun 2019 18:49:09 -0400 Subject: [PATCH] Remove broken QPDFTokenizer::expectInlineImage --- ChangeLog | 4 + TODO | 3 - include/qpdf/QPDFTokenizer.hh | 6 - libqpdf/QPDFTokenizer.cc | 34 - qpdf/qpdf.testcov | 2 - qpdf/qtest/qpdf.test | 7 +- qpdf/qtest/qpdf/tokens-old-ei.out | 2320 ----------------------------- qpdf/test_tokenizer.cc | 28 +- 8 files changed, 13 insertions(+), 2391 deletions(-) delete mode 100644 qpdf/qtest/qpdf/tokens-old-ei.out diff --git a/ChangeLog b/ChangeLog index 895a3431..e555a10a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,10 @@ QPDF::copyForeignObject with an unused boolean parameter. If you were, for some reason, calling this, just take the parameter away. + * Source-level incompatibility: remove the version + QPDF::copyForeignObject with an unused boolean parameter. If you + were, for some reason, calling this, just take the parameter away. + * Source-level incompatibility: rename QUtil::strcasecmp to QUtil::str_compare_nocase. This is a non-compatible change, but QUtil::strcasecmp is hardly the most important part of qpdf's API. diff --git a/TODO b/TODO index 6a6f0ea9..6fc5c1ac 100644 --- a/TODO +++ b/TODO @@ -1,9 +1,6 @@ Next ABI ======== - * Remove version of QPDFTokenizer::expectInlineImage with no - arguments. - * Build with -fvisibility=hidden by default. Fix QPDF_DLL. See #302 for discussion. See also https://gcc.gnu.org/wiki/Visibility diff --git a/include/qpdf/QPDFTokenizer.hh b/include/qpdf/QPDFTokenizer.hh index ed33e13c..c28d3c89 100644 --- a/include/qpdf/QPDFTokenizer.hh +++ b/include/qpdf/QPDFTokenizer.hh @@ -190,12 +190,6 @@ class QPDFTokenizer QPDF_DLL void expectInlineImage(PointerHolder input); - // Legacy version. New code should not call this. The token - // returned will include the EI keyword. The recipient of the - // token will have to remove it. - QPDF_DLL - void expectInlineImage(); - private: // Do not implement copy or assignment QPDFTokenizer(QPDFTokenizer const&); diff --git a/libqpdf/QPDFTokenizer.cc b/libqpdf/QPDFTokenizer.cc index 3c40ed00..54c9825e 100644 --- a/libqpdf/QPDFTokenizer.cc +++ b/libqpdf/QPDFTokenizer.cc @@ -542,20 +542,6 @@ QPDFTokenizer::presentCharacter(char ch) this->m->inline_image_bytes = 0; this->m->state = st_token_ready; } - else if ((this->m->inline_image_bytes == 0) && - (len >= 4) && - isDelimiter(this->m->val.at(len-4)) && - (this->m->val.at(len-3) == 'E') && - (this->m->val.at(len-2) == 'I') && - isDelimiter(this->m->val.at(len-1))) - { - QTC::TC("qpdf", "QPDFTokenizer found EI the old way"); - this->m->val.erase(len - 1); - this->m->type = tt_inline_image; - this->m->unread_char = true; - this->m->char_to_unread = ch; - this->m->state = st_token_ready; - } } else { @@ -628,20 +614,6 @@ QPDFTokenizer::presentCharacter(char ch) void QPDFTokenizer::presentEOF() { - if (this->m->state == st_inline_image) - { - size_t len = this->m->val.length(); - if ((len >= 3) && - isDelimiter(this->m->val.at(len-3)) && - (this->m->val.at(len-2) == 'E') && - (this->m->val.at(len-1) == 'I')) - { - QTC::TC("qpdf", "QPDFTokenizer inline image at EOF the old way"); - this->m->type = tt_inline_image; - this->m->state = st_token_ready; - } - } - if (this->m->state == st_literal) { QTC::TC("qpdf", "QPDFTokenizer EOF reading appendable token"); @@ -669,12 +641,6 @@ QPDFTokenizer::presentEOF() this->m->state = st_token_ready; } -void -QPDFTokenizer::expectInlineImage() -{ - expectInlineImage(PointerHolder()); -} - void QPDFTokenizer::expectInlineImage(PointerHolder input) { diff --git a/qpdf/qpdf.testcov b/qpdf/qpdf.testcov index b0d15984..4182b9e3 100644 --- a/qpdf/qpdf.testcov +++ b/qpdf/qpdf.testcov @@ -431,9 +431,7 @@ qpdf from_nr from repeat_nr 0 QPDF resolve duplicated page object 0 QPDF handle direct page object 0 QPDFTokenizer finder found wrong word 0 -QPDFTokenizer found EI the old way 0 QPDFTokenizer found EI by byte count 0 -QPDFTokenizer inline image at EOF the old way 0 QPDFTokenizer found EI after more than one try 0 QPDFPageObjectHelper externalize inline image 0 QPDFPageObjectHelper keep inline image 0 diff --git a/qpdf/qtest/qpdf.test b/qpdf/qtest/qpdf.test index 7e7b733d..0069fe4a 100644 --- a/qpdf/qtest/qpdf.test +++ b/qpdf/qtest/qpdf.test @@ -796,7 +796,7 @@ foreach my $d (@eii_tests) show_ntests(); # ---------- $td->notify("--- Tokenizer ---"); -$n_tests += 5; +$n_tests += 4; $td->runtest("tokenizer with no ignorable", {$td->COMMAND => "test_tokenizer -no-ignorable tokens.pdf"}, @@ -808,11 +808,6 @@ $td->runtest("tokenizer", {$td->FILE => "tokens.out", $td->EXIT_STATUS => 0}, $td->NORMALIZE_NEWLINES); -$td->runtest("tokenizer with old inline image code", - {$td->COMMAND => "test_tokenizer -old-ei tokens.pdf"}, - {$td->FILE => "tokens-old-ei.out", $td->EXIT_STATUS => 0}, - $td->NORMALIZE_NEWLINES); - $td->runtest("tokenizer with max_len", {$td->COMMAND => "test_tokenizer -maxlen 50 tokens.pdf"}, {$td->FILE => "tokens-maxlen.out", $td->EXIT_STATUS => 0}, diff --git a/qpdf/qtest/qpdf/tokens-old-ei.out b/qpdf/qtest/qpdf/tokens-old-ei.out deleted file mode 100644 index bf30fc09..00000000 --- a/qpdf/qtest/qpdf/tokens-old-ei.out +++ /dev/null @@ -1,2320 +0,0 @@ ---- BEGIN FILE --- -0: comment: %PDF-1.5 -8: space: \x0a -9: comment: %\xbf\xf7\xa2\xfe -14: space: \x0a -15: comment: %QDF-1.0 -23: space: \x0a\x0a -25: comment: %comment 1 -35: space: \x0d -36: comment: %comment 2 -46: space: \x0d\x0a -48: comment: %comment 3 -58: space: \x0a\x0a -60: integer: 1 -61: space: -62: integer: 0 -63: space: -64: word: obj -67: space: \x0a -68: dict_open: << -70: space: \x0a -73: name: /Type -78: space: -79: name: /ObjStm -86: space: \x0a -89: name: /Length -96: space: -97: integer: 6020 -101: space: \x0a -104: name: /N -106: space: -107: integer: 35 -109: space: \x0a -112: name: /First -118: space: -119: integer: 323 -122: space: \x0a -123: dict_close: >> -125: space: \x0a -126: word: stream -skipping to endstream -6153: word: endstream -6162: space: \x0a -6163: word: endobj -6169: space: \x0a\x0a -6171: comment: %% Contents for page 1 -6193: space: \x0a -6194: comment: %% Original object ID: 37 0 -6221: space: \x0a -6222: integer: 37 -6224: space: -6225: integer: 0 -6226: space: -6227: word: obj -6230: space: \x0a -6231: dict_open: << -6233: space: \x0a -6236: name: /Length -6243: space: -6244: integer: 38 -6246: space: -6247: integer: 0 -6248: space: -6249: word: R -6250: space: \x0a -6251: dict_close: >> -6253: space: \x0a -6254: word: stream -skipping to endstream -6305: word: endstream -6314: space: \x0a -6315: word: endobj -6321: space: \x0a\x0a -6323: integer: 38 -6325: space: -6326: integer: 0 -6327: space: -6328: word: obj -6331: space: \x0a -6332: integer: 44 -6334: space: \x0a -6335: word: endobj -6341: space: \x0a\x0a -6343: comment: %% Contents for page 2 -6365: space: \x0a -6366: comment: %% Original object ID: 38 0 -6393: space: \x0a -6394: integer: 39 -6396: space: -6397: integer: 0 -6398: space: -6399: word: obj -6402: space: \x0a -6403: dict_open: << -6405: space: \x0a -6408: name: /Length -6415: space: -6416: integer: 40 -6418: space: -6419: integer: 0 -6420: space: -6421: word: R -6422: space: \x0a -6423: dict_close: >> -6425: space: \x0a -6426: word: stream -skipping to endstream -6832: word: endstream -6841: space: \x0a -6842: word: endobj -6848: space: \x0a\x0a -6850: integer: 40 -6852: space: -6853: integer: 0 -6854: space: -6855: word: obj -6858: space: \x0a -6859: integer: 399 -6862: space: \x0a -6863: word: endobj -6869: space: \x0a\x0a -6871: comment: %% Contents for page 3 -6893: space: \x0a -6894: comment: %% Original object ID: 39 0 -6921: space: \x0a -6922: integer: 41 -6924: space: -6925: integer: 0 -6926: space: -6927: word: obj -6930: space: \x0a -6931: dict_open: << -6933: space: \x0a -6936: name: /Length -6943: space: -6944: integer: 42 -6946: space: -6947: integer: 0 -6948: space: -6949: word: R -6950: space: \x0a -6951: dict_close: >> -6953: space: \x0a -6954: word: stream -skipping to endstream -7001: word: endstream -7010: space: \x0a -7011: word: endobj -7017: space: \x0a\x0a -7019: integer: 42 -7021: space: -7022: integer: 0 -7023: space: -7024: word: obj -7027: space: \x0a -7028: integer: 40 -7030: space: \x0a -7031: word: endobj -7037: space: \x0a\x0a -7039: comment: %% Contents for page 4 -7061: space: \x0a -7062: comment: %% Original object ID: 40 0 -7089: space: \x0a -7090: integer: 43 -7092: space: -7093: integer: 0 -7094: space: -7095: word: obj -7098: space: \x0a -7099: dict_open: << -7101: space: \x0a -7104: name: /Length -7111: space: -7112: integer: 44 -7114: space: -7115: integer: 0 -7116: space: -7117: word: R -7118: space: \x0a -7119: dict_close: >> -7121: space: \x0a -7122: word: stream -skipping to endstream -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 -7666: word: endstream -7675: space: \x0a -7676: word: endobj -7682: space: \x0a -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 -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 -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 -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 -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 -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 -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 -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 -2: space: \x0a -5: name: /F1 -8: space: -9: integer: 24 -11: space: -12: word: Tf -14: space: \x0a -17: integer: 72 -19: space: -20: integer: 720 -23: space: -24: word: Td -26: space: \x0a -29: string: Potato (raw: (Potato)) -37: space: -38: word: Tj -40: space: \x0a -41: word: ET -43: space: \x0a -44: eof ---- END PAGE 1 --- ---- BEGIN PAGE 2 --- -0: word: BT -2: space: \x0a -5: name: /F1 -8: space: -9: integer: 24 -11: space: -12: word: Tf -14: space: \x0a -17: integer: 72 -19: space: -20: integer: 720 -23: space: -24: word: Td -26: space: \x0a -29: string: Potato (raw: (Potato)) -37: space: -38: word: Tj -40: space: \x0a -41: word: ET -43: space: \x0a -44: word: BI -46: space: \x0a -47: name: /CS -50: space: -51: name: /G -53: name: /W -55: space: -56: integer: 66 -58: name: /H -60: space: -61: integer: 47 -63: name: /BPC -67: space: -68: integer: 8 -69: name: /F -71: name: /Fl -74: name: /DP -77: dict_open: << -79: name: /Predictor -89: space: -90: integer: 15 -92: name: /Columns -100: space: -101: integer: 66 -103: dict_close: >> -105: space: \x0a -106: word: ID -109: inline-image: x\x9c\xc5\xd6I\x0e\xc3 \x0c\x05P|\xffC;U\xc8`\xc0\xd37\x91Z\xa9\x0b\xa6\x17\x02\xc4\x98\xda\xe6\x8f\x1b}D\xf0\xef_\xb4\xf8\x1c\xc9W\xa9\x84\x9c\xc4-\x94\x88>\xff\x87\xc0\x8d>\x94^\x01&\xae\xa1u\xe2]\x80"!\x87\x95\x08\x96\x05*\xac&\x8fE|Sy\xae \xf0d-\x80<\x9d\x19B\x010B\x05\xfa@N\x11\xea+<\x1fhl\xe8K\xd0\xee/56L\xa0\x89\x90\xe3\x19\x1e \xa3\x96\xb9\xa6>0\x06>\x15Y\x81\xf9!c\xec\\x0eY\x0c\xd8\x0f%Y\xf0\x01\xa5\xd68?&\xa0\xd6\xeb\x88}j\x92\xfb\xe8\x1d;\xab\x8d3\x9d\xc2\xd6l\x14p\xdbsH\xf6\xfbt\xfa\x01Q\x02\xd8Tt*h\xccU\xfa\xe3w\x07\xcd\xd5\xd0%\xa8)p\x96\xb3"\x95DiRj\xb9\x96D\x18YNU\x11\xd3\xd9Av\x92F\xe0&\x0d\x90\xcd\xd4u#c\x95\xc6W\x09\xf4\xdf\x89\x03W\x93O\x0d\x0aEI -354: space: \x0a -355: word: BT -357: space: \x0a -360: name: /F1 -363: space: -364: integer: 24 -366: space: -367: word: Tf -369: space: \x0a -372: integer: 72 -374: space: -375: integer: 720 -378: space: -379: word: Td -381: space: \x0a -384: string: Potato (raw: (Potato)) -392: space: -393: word: Tj -395: space: \x0a -396: word: ET -398: space: \x0a -399: eof ---- END PAGE 2 --- ---- BEGIN PAGE 3 --- -0: word: BT -2: space: \x0a -5: name: /F1 -8: space: -9: integer: 24 -11: space: -12: word: Tf -14: space: \x0a -17: integer: 72 -19: space: -20: integer: 720 -23: space: -24: word: Td -26: space: \x0a -29: bad: (Potato\x0aET\x0a (EOF while reading token) -40: eof ---- END PAGE 3 --- ---- BEGIN PAGE 4 --- -0: word: BT -2: space: \x0a -5: name: /F1 -8: space: -9: integer: 24 -11: space: -12: word: Tf -14: space: \x0a -17: string: \xfe\xeb (raw: ) -23: space: \x0a -26: string: \xab\xcd (raw: ) -33: space: \x0a -36: string: quack (raw: (qu\\x0d\x0aack)) -46: space: \x0a -49: string: quack (raw: (qu\\x0aack)) -58: space: \x0a -61: string: quack (raw: (qu\\x0dack)) -70: space: \x0a -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: 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: 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: (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: > -69: space: \x0a -70: word: ID -73: inline-image: x\x9c\xc5\xd6I\x0e\xc3 \x0c\x05P|\xffC;U\xc8`\xc0\xd37\x91Z\xa9\x0b\xa6\x17\x02\xc4\x98\xda\xe6\x8f\x1b}D\xf0\xef_\xb4\xf8\x1c\xc9W\xa9\x84\x9c\xc4-\x94\x88>\xff\x87\xc0\x8d>\x94^\x01&\xae\xa1u\xe2]\x80"!\x87\x95\x08\x96\x05*\xac&\x8fE|Sy\xae \xf0d-\x80<\x9d\x19B\x010B\x05\xfa@N\x11\xea+<\x1fhl\xe8K\xd0\xee/56L\xa0\x89\x90\xe3\x19\x1e \xa3\x96\xb9\xa6>0\x06>\x15Y\x81\xf9!c\xec\\x0eY\x0c\xd8\x0f%Y\xf0\x01\xa5\xd68?&\xa0\xd6\xeb\x88}j\x92\xfb\xe8\x1d;\xab\x8d3\x9d\xc2\xd6l\x14p\xdbsH\xf6\xfbt\xfa\x01Q\x02\xd8Tt*h\xccU\xfa\xe3w\x07\xcd\xd5\xd0%\xa8)p\x96\xb3"\x95DiRj\xb9\x96D\x18YNU\x11\xd3\xd9Av\x92F\xe0&\x0d\x90\xcd\xd4u#c\x95\xc6W\x09\xf4\xdf\x89\x03W\x93O\x0d\x0aEI -318: eof ---- END PAGE 7 --- ---- BEGIN PAGE 8 --- -0: word: BT -2: space: \x0a -5: name: /F1 -8: space: -9: integer: 24 -11: space: -12: word: Tf -14: space: \x0a -17: integer: 72 -19: space: -20: integer: 720 -23: space: -24: word: Td -26: space: \x0a -29: string: Potato (raw: (Potato)) -37: space: -38: word: Tj -40: space: \x0a -41: word: ET -43: space: \x0a -44: eof ---- END PAGE 8 --- ---- BEGIN PAGE 9 --- -0: word: BT -2: space: \x0a -5: name: /F1 -8: space: -9: integer: 24 -11: space: -12: word: Tf -14: space: \x0a -17: integer: 72 -19: space: -20: integer: 720 -23: space: -24: word: Td -26: space: \x0a -29: string: Potato (raw: (Potato)) -37: space: -38: word: Tj -40: space: \x0a -41: word: ET -43: space: \x0a -44: eof ---- END PAGE 9 --- ---- BEGIN PAGE 10 --- -0: word: BT -2: space: \x0a -5: name: /F1 -8: space: -9: integer: 24 -11: space: -12: word: Tf -14: space: \x0a -17: integer: 72 -19: space: -20: integer: 720 -23: space: -24: word: Td -26: space: \x0a -29: string: Potato (raw: (Potato)) -37: space: -38: word: Tj -40: space: \x0a -41: word: ET -43: space: \x0a -44: eof ---- END PAGE 10 --- ---- BEGIN PAGE 11 --- -0: word: BT -2: space: \x0a -5: name: /F1 -8: space: -9: integer: 24 -11: space: -12: word: Tf -14: space: \x0a -17: integer: 72 -19: space: -20: integer: 720 -23: space: -24: word: Td -26: space: \x0a -29: string: Potato (raw: (Potato)) -37: space: -38: word: Tj -40: space: \x0a -41: word: ET -43: space: \x0a -44: eof ---- END PAGE 11 --- ---- BEGIN OBJECT STREAM 1 --- -0: integer: 2 -1: space: -2: integer: 0 -3: space: \x0a -4: integer: 3 -5: space: -6: integer: 97 -8: space: \x0a -9: integer: 4 -10: space: -11: integer: 318 -14: space: \x0a -15: integer: 5 -16: space: -17: integer: 566 -20: space: \x0a -21: integer: 6 -22: space: -23: integer: 814 -26: space: \x0a -27: integer: 7 -28: space: -29: integer: 1062 -33: space: \x0a -34: integer: 8 -35: space: -36: integer: 1310 -40: space: \x0a -41: integer: 9 -42: space: -43: integer: 1558 -47: space: \x0a -48: integer: 10 -50: space: -51: integer: 1808 -55: space: \x0a -56: integer: 11 -58: space: -59: integer: 2058 -63: space: \x0a -64: integer: 12 -66: space: -67: integer: 2309 -71: space: \x0a -72: integer: 13 -74: space: -75: integer: 2560 -79: space: \x0a -80: integer: 14 -82: space: -83: integer: 2812 -87: space: \x0a -88: integer: 15 -90: space: -91: integer: 3064 -95: space: \x0a -96: integer: 16 -98: space: -99: integer: 3228 -103: space: \x0a -104: integer: 17 -106: space: -107: integer: 3309 -111: space: \x0a -112: integer: 18 -114: space: -115: integer: 3473 -119: space: \x0a -120: integer: 19 -122: space: -123: integer: 3554 -127: space: \x0a -128: integer: 20 -130: space: -131: integer: 3718 -135: space: \x0a -136: integer: 21 -138: space: -139: integer: 3799 -143: space: \x0a -144: integer: 22 -146: space: -147: integer: 3963 -151: space: \x0a -152: integer: 23 -154: space: -155: integer: 4044 -159: space: \x0a -160: integer: 24 -162: space: -163: integer: 4208 -167: space: \x0a -168: integer: 25 -170: space: -171: integer: 4289 -175: space: \x0a -176: integer: 26 -178: space: -179: integer: 4453 -183: space: \x0a -184: integer: 27 -186: space: -187: integer: 4534 -191: space: \x0a -192: integer: 28 -194: space: -195: integer: 4698 -199: space: \x0a -200: integer: 29 -202: space: -203: integer: 4779 -207: space: \x0a -208: integer: 30 -210: space: -211: integer: 4943 -215: space: \x0a -216: integer: 31 -218: space: -219: integer: 5024 -223: space: \x0a -224: integer: 32 -226: space: -227: integer: 5188 -231: space: \x0a -232: integer: 33 -234: space: -235: integer: 5269 -239: space: \x0a -240: integer: 34 -242: space: -243: integer: 5433 -247: space: \x0a -248: integer: 35 -250: space: -251: integer: 5514 -255: space: \x0a -256: integer: 36 -258: space: -259: integer: 5678 -263: space: \x0a -264: comment: %% Object stream: object 2, index 0; original object ID: 2 -322: space: \x0a -323: dict_open: << -325: space: \x0a -328: name: /Pages -334: space: -335: integer: 3 -336: space: -337: integer: 0 -338: space: -339: word: R -340: space: \x0a -343: name: /Type -348: space: -349: name: /Catalog -357: space: \x0a -358: dict_close: >> -360: space: \x0a -361: comment: %% Object stream: object 3, index 1; original object ID: 3 -419: space: \x0a -420: dict_open: << -422: space: \x0a -425: name: /Count -431: space: -432: integer: 11 -434: space: \x0a -437: name: /Kids -442: space: -443: array_open: [ -444: space: \x0a -449: integer: 4 -450: space: -451: integer: 0 -452: space: -453: word: R -454: space: \x0a -459: integer: 5 -460: space: -461: integer: 0 -462: space: -463: word: R -464: space: \x0a -469: integer: 6 -470: space: -471: integer: 0 -472: space: -473: word: R -474: space: \x0a -479: integer: 7 -480: space: -481: integer: 0 -482: space: -483: word: R -484: space: \x0a -489: integer: 8 -490: space: -491: integer: 0 -492: space: -493: word: R -494: space: \x0a -499: integer: 9 -500: space: -501: integer: 0 -502: space: -503: word: R -504: space: \x0a -509: integer: 10 -511: space: -512: integer: 0 -513: space: -514: word: R -515: space: \x0a -520: integer: 11 -522: space: -523: integer: 0 -524: space: -525: word: R -526: space: \x0a -531: integer: 12 -533: space: -534: integer: 0 -535: space: -536: word: R -537: space: \x0a -542: integer: 13 -544: space: -545: integer: 0 -546: space: -547: word: R -548: space: \x0a -553: integer: 14 -555: space: -556: integer: 0 -557: space: -558: word: R -559: space: \x0a -562: array_close: ] -563: space: \x0a -566: name: /Type -571: space: -572: name: /Pages -578: space: \x0a -579: dict_close: >> -581: space: \x0a -582: comment: %% Object stream: object 4, index 2; original object ID: 4 -640: space: \x0a -641: comment: %% Page 1 -650: space: \x0a -651: dict_open: << -653: space: \x0a -656: name: /Contents -665: space: -666: integer: 37 -668: space: -669: integer: 0 -670: space: -671: word: R -672: space: \x0a -675: name: /MediaBox -684: space: -685: array_open: [ -686: space: \x0a -691: integer: 0 -692: space: \x0a -697: integer: 0 -698: space: \x0a -703: integer: 612 -706: space: \x0a -711: integer: 792 -714: space: \x0a -717: array_close: ] -718: space: \x0a -721: name: /Parent -728: space: -729: integer: 3 -730: space: -731: integer: 0 -732: space: -733: word: R -734: space: \x0a -737: name: /Resources -747: space: -748: dict_open: << -750: space: \x0a -755: name: /Font -760: space: -761: dict_open: << -763: space: \x0a -770: name: /F1 -773: space: -774: integer: 15 -776: space: -777: integer: 0 -778: space: -779: word: R -780: space: \x0a -785: dict_close: >> -787: space: \x0a -792: name: /ProcSet -800: space: -801: integer: 16 -803: space: -804: integer: 0 -805: space: -806: word: R -807: space: \x0a -810: dict_close: >> -812: space: \x0a -815: name: /Type -820: space: -821: name: /Page -826: space: \x0a -827: dict_close: >> -829: space: \x0a -830: comment: %% Object stream: object 5, index 3; original object ID: 5 -888: space: \x0a -889: comment: %% Page 2 -898: space: \x0a -899: dict_open: << -901: space: \x0a -904: name: /Contents -913: space: -914: integer: 39 -916: space: -917: integer: 0 -918: space: -919: word: R -920: space: \x0a -923: name: /MediaBox -932: space: -933: array_open: [ -934: space: \x0a -939: integer: 0 -940: space: \x0a -945: integer: 0 -946: space: \x0a -951: integer: 612 -954: space: \x0a -959: integer: 792 -962: space: \x0a -965: array_close: ] -966: space: \x0a -969: name: /Parent -976: space: -977: integer: 3 -978: space: -979: integer: 0 -980: space: -981: word: R -982: space: \x0a -985: name: /Resources -995: space: -996: dict_open: << -998: space: \x0a -1003: name: /Font -1008: space: -1009: dict_open: << -1011: space: \x0a -1018: name: /F1 -1021: space: -1022: integer: 17 -1024: space: -1025: integer: 0 -1026: space: -1027: word: R -1028: space: \x0a -1033: dict_close: >> -1035: space: \x0a -1040: name: /ProcSet -1048: space: -1049: integer: 18 -1051: space: -1052: integer: 0 -1053: space: -1054: word: R -1055: space: \x0a -1058: dict_close: >> -1060: space: \x0a -1063: name: /Type -1068: space: -1069: name: /Page -1074: space: \x0a -1075: dict_close: >> -1077: space: \x0a -1078: comment: %% Object stream: object 6, index 4; original object ID: 6 -1136: space: \x0a -1137: comment: %% Page 3 -1146: space: \x0a -1147: dict_open: << -1149: space: \x0a -1152: name: /Contents -1161: space: -1162: integer: 41 -1164: space: -1165: integer: 0 -1166: space: -1167: word: R -1168: space: \x0a -1171: name: /MediaBox -1180: space: -1181: array_open: [ -1182: space: \x0a -1187: integer: 0 -1188: space: \x0a -1193: integer: 0 -1194: space: \x0a -1199: integer: 612 -1202: space: \x0a -1207: integer: 792 -1210: space: \x0a -1213: array_close: ] -1214: space: \x0a -1217: name: /Parent -1224: space: -1225: integer: 3 -1226: space: -1227: integer: 0 -1228: space: -1229: word: R -1230: space: \x0a -1233: name: /Resources -1243: space: -1244: dict_open: << -1246: space: \x0a -1251: name: /Font -1256: space: -1257: dict_open: << -1259: space: \x0a -1266: name: /F1 -1269: space: -1270: integer: 19 -1272: space: -1273: integer: 0 -1274: space: -1275: word: R -1276: space: \x0a -1281: dict_close: >> -1283: space: \x0a -1288: name: /ProcSet -1296: space: -1297: integer: 20 -1299: space: -1300: integer: 0 -1301: space: -1302: word: R -1303: space: \x0a -1306: dict_close: >> -1308: space: \x0a -1311: name: /Type -1316: space: -1317: name: /Page -1322: space: \x0a -1323: dict_close: >> -1325: space: \x0a -1326: comment: %% Object stream: object 7, index 5; original object ID: 7 -1384: space: \x0a -1385: comment: %% Page 4 -1394: space: \x0a -1395: dict_open: << -1397: space: \x0a -1400: name: /Contents -1409: space: -1410: integer: 43 -1412: space: -1413: integer: 0 -1414: space: -1415: word: R -1416: space: \x0a -1419: name: /MediaBox -1428: space: -1429: array_open: [ -1430: space: \x0a -1435: integer: 0 -1436: space: \x0a -1441: integer: 0 -1442: space: \x0a -1447: integer: 612 -1450: space: \x0a -1455: integer: 792 -1458: space: \x0a -1461: array_close: ] -1462: space: \x0a -1465: name: /Parent -1472: space: -1473: integer: 3 -1474: space: -1475: integer: 0 -1476: space: -1477: word: R -1478: space: \x0a -1481: name: /Resources -1491: space: -1492: dict_open: << -1494: space: \x0a -1499: name: /Font -1504: space: -1505: dict_open: << -1507: space: \x0a -1514: name: /F1 -1517: space: -1518: integer: 21 -1520: space: -1521: integer: 0 -1522: space: -1523: word: R -1524: space: \x0a -1529: dict_close: >> -1531: space: \x0a -1536: name: /ProcSet -1544: space: -1545: integer: 22 -1547: space: -1548: integer: 0 -1549: space: -1550: word: R -1551: space: \x0a -1554: dict_close: >> -1556: space: \x0a -1559: name: /Type -1564: space: -1565: name: /Page -1570: space: \x0a -1571: dict_close: >> -1573: space: \x0a -1574: comment: %% Object stream: object 8, index 6; original object ID: 8 -1632: space: \x0a -1633: comment: %% Page 5 -1642: space: \x0a -1643: dict_open: << -1645: space: \x0a -1648: name: /Contents -1657: space: -1658: integer: 45 -1660: space: -1661: integer: 0 -1662: space: -1663: word: R -1664: space: \x0a -1667: name: /MediaBox -1676: space: -1677: array_open: [ -1678: space: \x0a -1683: integer: 0 -1684: space: \x0a -1689: integer: 0 -1690: space: \x0a -1695: integer: 612 -1698: space: \x0a -1703: integer: 792 -1706: space: \x0a -1709: array_close: ] -1710: space: \x0a -1713: name: /Parent -1720: space: -1721: integer: 3 -1722: space: -1723: integer: 0 -1724: space: -1725: word: R -1726: space: \x0a -1729: name: /Resources -1739: space: -1740: dict_open: << -1742: space: \x0a -1747: name: /Font -1752: space: -1753: dict_open: << -1755: space: \x0a -1762: name: /F1 -1765: space: -1766: integer: 23 -1768: space: -1769: integer: 0 -1770: space: -1771: word: R -1772: space: \x0a -1777: dict_close: >> -1779: space: \x0a -1784: name: /ProcSet -1792: space: -1793: integer: 24 -1795: space: -1796: integer: 0 -1797: space: -1798: word: R -1799: space: \x0a -1802: dict_close: >> -1804: space: \x0a -1807: name: /Type -1812: space: -1813: name: /Page -1818: space: \x0a -1819: dict_close: >> -1821: space: \x0a -1822: comment: %% Object stream: object 9, index 7; original object ID: 9 -1880: space: \x0a -1881: comment: %% Page 6 -1890: space: \x0a -1891: dict_open: << -1893: space: \x0a -1896: name: /Contents -1905: space: -1906: integer: 47 -1908: space: -1909: integer: 0 -1910: space: -1911: word: R -1912: space: \x0a -1915: name: /MediaBox -1924: space: -1925: array_open: [ -1926: space: \x0a -1931: integer: 0 -1932: space: \x0a -1937: integer: 0 -1938: space: \x0a -1943: integer: 612 -1946: space: \x0a -1951: integer: 792 -1954: space: \x0a -1957: array_close: ] -1958: space: \x0a -1961: name: /Parent -1968: space: -1969: integer: 3 -1970: space: -1971: integer: 0 -1972: space: -1973: word: R -1974: space: \x0a -1977: name: /Resources -1987: space: -1988: dict_open: << -1990: space: \x0a -1995: name: /Font -2000: space: -2001: dict_open: << -2003: space: \x0a -2010: name: /F1 -2013: space: -2014: integer: 25 -2016: space: -2017: integer: 0 -2018: space: -2019: word: R -2020: space: \x0a -2025: dict_close: >> -2027: space: \x0a -2032: name: /ProcSet -2040: space: -2041: integer: 26 -2043: space: -2044: integer: 0 -2045: space: -2046: word: R -2047: space: \x0a -2050: dict_close: >> -2052: space: \x0a -2055: name: /Type -2060: space: -2061: name: /Page -2066: space: \x0a -2067: dict_close: >> -2069: space: \x0a -2070: comment: %% Object stream: object 10, index 8; original object ID: 10 -2130: space: \x0a -2131: comment: %% Page 7 -2140: space: \x0a -2141: dict_open: << -2143: space: \x0a -2146: name: /Contents -2155: space: -2156: integer: 49 -2158: space: -2159: integer: 0 -2160: space: -2161: word: R -2162: space: \x0a -2165: name: /MediaBox -2174: space: -2175: array_open: [ -2176: space: \x0a -2181: integer: 0 -2182: space: \x0a -2187: integer: 0 -2188: space: \x0a -2193: integer: 612 -2196: space: \x0a -2201: integer: 792 -2204: space: \x0a -2207: array_close: ] -2208: space: \x0a -2211: name: /Parent -2218: space: -2219: integer: 3 -2220: space: -2221: integer: 0 -2222: space: -2223: word: R -2224: space: \x0a -2227: name: /Resources -2237: space: -2238: dict_open: << -2240: space: \x0a -2245: name: /Font -2250: space: -2251: dict_open: << -2253: space: \x0a -2260: name: /F1 -2263: space: -2264: integer: 27 -2266: space: -2267: integer: 0 -2268: space: -2269: word: R -2270: space: \x0a -2275: dict_close: >> -2277: space: \x0a -2282: name: /ProcSet -2290: space: -2291: integer: 28 -2293: space: -2294: integer: 0 -2295: space: -2296: word: R -2297: space: \x0a -2300: dict_close: >> -2302: space: \x0a -2305: name: /Type -2310: space: -2311: name: /Page -2316: space: \x0a -2317: dict_close: >> -2319: space: \x0a -2320: comment: %% Object stream: object 11, index 9; original object ID: 11 -2380: space: \x0a -2381: comment: %% Page 8 -2390: space: \x0a -2391: dict_open: << -2393: space: \x0a -2396: name: /Contents -2405: space: -2406: integer: 51 -2408: space: -2409: integer: 0 -2410: space: -2411: word: R -2412: space: \x0a -2415: name: /MediaBox -2424: space: -2425: array_open: [ -2426: space: \x0a -2431: integer: 0 -2432: space: \x0a -2437: integer: 0 -2438: space: \x0a -2443: integer: 612 -2446: space: \x0a -2451: integer: 792 -2454: space: \x0a -2457: array_close: ] -2458: space: \x0a -2461: name: /Parent -2468: space: -2469: integer: 3 -2470: space: -2471: integer: 0 -2472: space: -2473: word: R -2474: space: \x0a -2477: name: /Resources -2487: space: -2488: dict_open: << -2490: space: \x0a -2495: name: /Font -2500: space: -2501: dict_open: << -2503: space: \x0a -2510: name: /F1 -2513: space: -2514: integer: 29 -2516: space: -2517: integer: 0 -2518: space: -2519: word: R -2520: space: \x0a -2525: dict_close: >> -2527: space: \x0a -2532: name: /ProcSet -2540: space: -2541: integer: 30 -2543: space: -2544: integer: 0 -2545: space: -2546: word: R -2547: space: \x0a -2550: dict_close: >> -2552: space: \x0a -2555: name: /Type -2560: space: -2561: name: /Page -2566: space: \x0a -2567: dict_close: >> -2569: space: \x0a -2570: comment: %% Object stream: object 12, index 10; original object ID: 12 -2631: space: \x0a -2632: comment: %% Page 9 -2641: space: \x0a -2642: dict_open: << -2644: space: \x0a -2647: name: /Contents -2656: space: -2657: integer: 53 -2659: space: -2660: integer: 0 -2661: space: -2662: word: R -2663: space: \x0a -2666: name: /MediaBox -2675: space: -2676: array_open: [ -2677: space: \x0a -2682: integer: 0 -2683: space: \x0a -2688: integer: 0 -2689: space: \x0a -2694: integer: 612 -2697: space: \x0a -2702: integer: 792 -2705: space: \x0a -2708: array_close: ] -2709: space: \x0a -2712: name: /Parent -2719: space: -2720: integer: 3 -2721: space: -2722: integer: 0 -2723: space: -2724: word: R -2725: space: \x0a -2728: name: /Resources -2738: space: -2739: dict_open: << -2741: space: \x0a -2746: name: /Font -2751: space: -2752: dict_open: << -2754: space: \x0a -2761: name: /F1 -2764: space: -2765: integer: 31 -2767: space: -2768: integer: 0 -2769: space: -2770: word: R -2771: space: \x0a -2776: dict_close: >> -2778: space: \x0a -2783: name: /ProcSet -2791: space: -2792: integer: 32 -2794: space: -2795: integer: 0 -2796: space: -2797: word: R -2798: space: \x0a -2801: dict_close: >> -2803: space: \x0a -2806: name: /Type -2811: space: -2812: name: /Page -2817: space: \x0a -2818: dict_close: >> -2820: space: \x0a -2821: comment: %% Object stream: object 13, index 11; original object ID: 13 -2882: space: \x0a -2883: comment: %% Page 10 -2893: space: \x0a -2894: dict_open: << -2896: space: \x0a -2899: name: /Contents -2908: space: -2909: integer: 55 -2911: space: -2912: integer: 0 -2913: space: -2914: word: R -2915: space: \x0a -2918: name: /MediaBox -2927: space: -2928: array_open: [ -2929: space: \x0a -2934: integer: 0 -2935: space: \x0a -2940: integer: 0 -2941: space: \x0a -2946: integer: 612 -2949: space: \x0a -2954: integer: 792 -2957: space: \x0a -2960: array_close: ] -2961: space: \x0a -2964: name: /Parent -2971: space: -2972: integer: 3 -2973: space: -2974: integer: 0 -2975: space: -2976: word: R -2977: space: \x0a -2980: name: /Resources -2990: space: -2991: dict_open: << -2993: space: \x0a -2998: name: /Font -3003: space: -3004: dict_open: << -3006: space: \x0a -3013: name: /F1 -3016: space: -3017: integer: 33 -3019: space: -3020: integer: 0 -3021: space: -3022: word: R -3023: space: \x0a -3028: dict_close: >> -3030: space: \x0a -3035: name: /ProcSet -3043: space: -3044: integer: 34 -3046: space: -3047: integer: 0 -3048: space: -3049: word: R -3050: space: \x0a -3053: dict_close: >> -3055: space: \x0a -3058: name: /Type -3063: space: -3064: name: /Page -3069: space: \x0a -3070: dict_close: >> -3072: space: \x0a -3073: comment: %% Object stream: object 14, index 12; original object ID: 14 -3134: space: \x0a -3135: comment: %% Page 11 -3145: space: \x0a -3146: dict_open: << -3148: space: \x0a -3151: name: /Contents -3160: space: -3161: integer: 57 -3163: space: -3164: integer: 0 -3165: space: -3166: word: R -3167: space: \x0a -3170: name: /MediaBox -3179: space: -3180: array_open: [ -3181: space: \x0a -3186: integer: 0 -3187: space: \x0a -3192: integer: 0 -3193: space: \x0a -3198: integer: 612 -3201: space: \x0a -3206: integer: 792 -3209: space: \x0a -3212: array_close: ] -3213: space: \x0a -3216: name: /Parent -3223: space: -3224: integer: 3 -3225: space: -3226: integer: 0 -3227: space: -3228: word: R -3229: space: \x0a -3232: name: /Resources -3242: space: -3243: dict_open: << -3245: space: \x0a -3250: name: /Font -3255: space: -3256: dict_open: << -3258: space: \x0a -3265: name: /F1 -3268: space: -3269: integer: 35 -3271: space: -3272: integer: 0 -3273: space: -3274: word: R -3275: space: \x0a -3280: dict_close: >> -3282: space: \x0a -3287: name: /ProcSet -3295: space: -3296: integer: 36 -3298: space: -3299: integer: 0 -3300: space: -3301: word: R -3302: space: \x0a -3305: dict_close: >> -3307: space: \x0a -3310: name: /Type -3315: space: -3316: name: /Page -3321: space: \x0a -3322: dict_close: >> -3324: space: \x0a -3325: comment: %% Object stream: object 15, index 13; original object ID: 15 -3386: space: \x0a -3387: dict_open: << -3389: space: \x0a -3392: name: /BaseFont -3401: space: -3402: name: /Helvetica -3412: space: \x0a -3415: name: /Encoding -3424: space: -3425: name: /WinAnsiEncoding -3441: space: \x0a -3444: name: /Name -3449: space: -3450: name: /F1 -3453: space: \x0a -3456: name: /Subtype -3464: space: -3465: name: /Type1 -3471: space: \x0a -3474: name: /Type -3479: space: -3480: name: /Font -3485: space: \x0a -3486: dict_close: >> -3488: space: \x0a -3489: comment: %% Object stream: object 16, index 14; original object ID: 16 -3550: space: \x0a -3551: array_open: [ -3552: space: \x0a -3555: name: /PDF -3559: space: \x0a -3562: name: /Text -3567: space: \x0a -3568: array_close: ] -3569: space: \x0a -3570: comment: %% Object stream: object 17, index 15; original object ID: 17 -3631: space: \x0a -3632: dict_open: << -3634: space: \x0a -3637: name: /BaseFont -3646: space: -3647: name: /Helvetica -3657: space: \x0a -3660: name: /Encoding -3669: space: -3670: name: /WinAnsiEncoding -3686: space: \x0a -3689: name: /Name -3694: space: -3695: name: /F1 -3698: space: \x0a -3701: name: /Subtype -3709: space: -3710: name: /Type1 -3716: space: \x0a -3719: name: /Type -3724: space: -3725: name: /Font -3730: space: \x0a -3731: dict_close: >> -3733: space: \x0a -3734: comment: %% Object stream: object 18, index 16; original object ID: 18 -3795: space: \x0a -3796: array_open: [ -3797: space: \x0a -3800: name: /PDF -3804: space: \x0a -3807: name: /Text -3812: space: \x0a -3813: array_close: ] -3814: space: \x0a -3815: comment: %% Object stream: object 19, index 17; original object ID: 19 -3876: space: \x0a -3877: dict_open: << -3879: space: \x0a -3882: name: /BaseFont -3891: space: -3892: name: /Helvetica -3902: space: \x0a -3905: name: /Encoding -3914: space: -3915: name: /WinAnsiEncoding -3931: space: \x0a -3934: name: /Name -3939: space: -3940: name: /F1 -3943: space: \x0a -3946: name: /Subtype -3954: space: -3955: name: /Type1 -3961: space: \x0a -3964: name: /Type -3969: space: -3970: name: /Font -3975: space: \x0a -3976: dict_close: >> -3978: space: \x0a -3979: comment: %% Object stream: object 20, index 18; original object ID: 20 -4040: space: \x0a -4041: array_open: [ -4042: space: \x0a -4045: name: /PDF -4049: space: \x0a -4052: name: /Text -4057: space: \x0a -4058: array_close: ] -4059: space: \x0a -4060: comment: %% Object stream: object 21, index 19; original object ID: 21 -4121: space: \x0a -4122: dict_open: << -4124: space: \x0a -4127: name: /BaseFont -4136: space: -4137: name: /Helvetica -4147: space: \x0a -4150: name: /Encoding -4159: space: -4160: name: /WinAnsiEncoding -4176: space: \x0a -4179: name: /Name -4184: space: -4185: name: /F1 -4188: space: \x0a -4191: name: /Subtype -4199: space: -4200: name: /Type1 -4206: space: \x0a -4209: name: /Type -4214: space: -4215: name: /Font -4220: space: \x0a -4221: dict_close: >> -4223: space: \x0a -4224: comment: %% Object stream: object 22, index 20; original object ID: 22 -4285: space: \x0a -4286: array_open: [ -4287: space: \x0a -4290: name: /PDF -4294: space: \x0a -4297: name: /Text -4302: space: \x0a -4303: array_close: ] -4304: space: \x0a -4305: comment: %% Object stream: object 23, index 21; original object ID: 23 -4366: space: \x0a -4367: dict_open: << -4369: space: \x0a -4372: name: /BaseFont -4381: space: -4382: name: /Helvetica -4392: space: \x0a -4395: name: /Encoding -4404: space: -4405: name: /WinAnsiEncoding -4421: space: \x0a -4424: name: /Name -4429: space: -4430: name: /F1 -4433: space: \x0a -4436: name: /Subtype -4444: space: -4445: name: /Type1 -4451: space: \x0a -4454: name: /Type -4459: space: -4460: name: /Font -4465: space: \x0a -4466: dict_close: >> -4468: space: \x0a -4469: comment: %% Object stream: object 24, index 22; original object ID: 24 -4530: space: \x0a -4531: array_open: [ -4532: space: \x0a -4535: name: /PDF -4539: space: \x0a -4542: name: /Text -4547: space: \x0a -4548: array_close: ] -4549: space: \x0a -4550: comment: %% Object stream: object 25, index 23; original object ID: 25 -4611: space: \x0a -4612: dict_open: << -4614: space: \x0a -4617: name: /BaseFont -4626: space: -4627: name: /Helvetica -4637: space: \x0a -4640: name: /Encoding -4649: space: -4650: name: /WinAnsiEncoding -4666: space: \x0a -4669: name: /Name -4674: space: -4675: name: /F1 -4678: space: \x0a -4681: name: /Subtype -4689: space: -4690: name: /Type1 -4696: space: \x0a -4699: name: /Type -4704: space: -4705: name: /Font -4710: space: \x0a -4711: dict_close: >> -4713: space: \x0a -4714: comment: %% Object stream: object 26, index 24; original object ID: 26 -4775: space: \x0a -4776: array_open: [ -4777: space: \x0a -4780: name: /PDF -4784: space: \x0a -4787: name: /Text -4792: space: \x0a -4793: array_close: ] -4794: space: \x0a -4795: comment: %% Object stream: object 27, index 25; original object ID: 27 -4856: space: \x0a -4857: dict_open: << -4859: space: \x0a -4862: name: /BaseFont -4871: space: -4872: name: /Helvetica -4882: space: \x0a -4885: name: /Encoding -4894: space: -4895: name: /WinAnsiEncoding -4911: space: \x0a -4914: name: /Name -4919: space: -4920: name: /F1 -4923: space: \x0a -4926: name: /Subtype -4934: space: -4935: name: /Type1 -4941: space: \x0a -4944: name: /Type -4949: space: -4950: name: /Font -4955: space: \x0a -4956: dict_close: >> -4958: space: \x0a -4959: comment: %% Object stream: object 28, index 26; original object ID: 28 -5020: space: \x0a -5021: array_open: [ -5022: space: \x0a -5025: name: /PDF -5029: space: \x0a -5032: name: /Text -5037: space: \x0a -5038: array_close: ] -5039: space: \x0a -5040: comment: %% Object stream: object 29, index 27; original object ID: 29 -5101: space: \x0a -5102: dict_open: << -5104: space: \x0a -5107: name: /BaseFont -5116: space: -5117: name: /Helvetica -5127: space: \x0a -5130: name: /Encoding -5139: space: -5140: name: /WinAnsiEncoding -5156: space: \x0a -5159: name: /Name -5164: space: -5165: name: /F1 -5168: space: \x0a -5171: name: /Subtype -5179: space: -5180: name: /Type1 -5186: space: \x0a -5189: name: /Type -5194: space: -5195: name: /Font -5200: space: \x0a -5201: dict_close: >> -5203: space: \x0a -5204: comment: %% Object stream: object 30, index 28; original object ID: 30 -5265: space: \x0a -5266: array_open: [ -5267: space: \x0a -5270: name: /PDF -5274: space: \x0a -5277: name: /Text -5282: space: \x0a -5283: array_close: ] -5284: space: \x0a -5285: comment: %% Object stream: object 31, index 29; original object ID: 31 -5346: space: \x0a -5347: dict_open: << -5349: space: \x0a -5352: name: /BaseFont -5361: space: -5362: name: /Helvetica -5372: space: \x0a -5375: name: /Encoding -5384: space: -5385: name: /WinAnsiEncoding -5401: space: \x0a -5404: name: /Name -5409: space: -5410: name: /F1 -5413: space: \x0a -5416: name: /Subtype -5424: space: -5425: name: /Type1 -5431: space: \x0a -5434: name: /Type -5439: space: -5440: name: /Font -5445: space: \x0a -5446: dict_close: >> -5448: space: \x0a -5449: comment: %% Object stream: object 32, index 30; original object ID: 32 -5510: space: \x0a -5511: array_open: [ -5512: space: \x0a -5515: name: /PDF -5519: space: \x0a -5522: name: /Text -5527: space: \x0a -5528: array_close: ] -5529: space: \x0a -5530: comment: %% Object stream: object 33, index 31; original object ID: 33 -5591: space: \x0a -5592: dict_open: << -5594: space: \x0a -5597: name: /BaseFont -5606: space: -5607: name: /Helvetica -5617: space: \x0a -5620: name: /Encoding -5629: space: -5630: name: /WinAnsiEncoding -5646: space: \x0a -5649: name: /Name -5654: space: -5655: name: /F1 -5658: space: \x0a -5661: name: /Subtype -5669: space: -5670: name: /Type1 -5676: space: \x0a -5679: name: /Type -5684: space: -5685: name: /Font -5690: space: \x0a -5691: dict_close: >> -5693: space: \x0a -5694: comment: %% Object stream: object 34, index 32; original object ID: 34 -5755: space: \x0a -5756: array_open: [ -5757: space: \x0a -5760: name: /PDF -5764: space: \x0a -5767: name: /Text -5772: space: \x0a -5773: array_close: ] -5774: space: \x0a -5775: comment: %% Object stream: object 35, index 33; original object ID: 35 -5836: space: \x0a -5837: dict_open: << -5839: space: \x0a -5842: name: /BaseFont -5851: space: -5852: name: /Helvetica -5862: space: \x0a -5865: name: /Encoding -5874: space: -5875: name: /WinAnsiEncoding -5891: space: \x0a -5894: name: /Name -5899: space: -5900: name: /F1 -5903: space: \x0a -5906: name: /Subtype -5914: space: -5915: name: /Type1 -5921: space: \x0a -5924: name: /Type -5929: space: -5930: name: /Font -5935: space: \x0a -5936: dict_close: >> -5938: space: \x0a -5939: comment: %% Object stream: object 36, index 34; original object ID: 36 -6000: space: \x0a -6001: array_open: [ -6002: space: \x0a -6005: name: /PDF -6009: space: \x0a -6012: name: /Text -6017: space: \x0a -6018: array_close: ] -6019: space: \x0a -6020: eof ---- END OBJECT STREAM 1 --- diff --git a/qpdf/test_tokenizer.cc b/qpdf/test_tokenizer.cc index d0ddf8a1..5e68eb88 100644 --- a/qpdf/test_tokenizer.cc +++ b/qpdf/test_tokenizer.cc @@ -17,7 +17,7 @@ static char const* whoami = 0; void usage() { std::cerr << "Usage: " << whoami - << " [-maxlen len | -no-ignorable | -old-ei] filename" + << " [-maxlen len | -no-ignorable] filename" << std::endl; exit(2); } @@ -133,7 +133,7 @@ try_skipping(QPDFTokenizer& tokenizer, PointerHolder is, static void dump_tokens(PointerHolder is, std::string const& label, size_t max_len, bool include_ignorable, - bool skip_streams, bool skip_inline_images, bool old_ei) + bool skip_streams, bool skip_inline_images) { Finder f1(is, "endstream"); std::cout << "--- BEGIN " << label << " ---" << std::endl; @@ -186,14 +186,7 @@ dump_tokens(PointerHolder is, std::string const& label, { char ch; is->read(&ch, 1); - if (old_ei) - { - tokenizer.expectInlineImage(); - } - else - { - tokenizer.expectInlineImage(is); - } + tokenizer.expectInlineImage(is); inline_image_offset = is->tell(); } else if (token.getType() == QPDFTokenizer::tt_eof) @@ -205,7 +198,7 @@ dump_tokens(PointerHolder is, std::string const& label, } static void process(char const* filename, bool include_ignorable, - size_t max_len, bool old_ei) + size_t max_len) { PointerHolder is; @@ -213,7 +206,7 @@ static void process(char const* filename, bool include_ignorable, FileInputSource* fis = new FileInputSource(); fis->setFilename(filename); is = fis; - dump_tokens(is, "FILE", max_len, include_ignorable, true, false, false); + dump_tokens(is, "FILE", max_len, include_ignorable, true, false); // Tokenize content streams, skipping inline images QPDF qpdf; @@ -232,7 +225,7 @@ static void process(char const* filename, bool include_ignorable, "content data", content_data.getPointer()); is = bis; dump_tokens(is, "PAGE " + QUtil::int_to_string(pageno), - max_len, include_ignorable, false, true, old_ei); + max_len, include_ignorable, false, true); } // Tokenize object streams @@ -251,7 +244,7 @@ static void process(char const* filename, bool include_ignorable, is = bis; dump_tokens(is, "OBJECT STREAM " + QUtil::int_to_string((*iter).getObjectID()), - max_len, include_ignorable, false, false, false); + max_len, include_ignorable, false, false); } } } @@ -276,7 +269,6 @@ int main(int argc, char* argv[]) char const* filename = 0; size_t max_len = 0; bool include_ignorable = true; - bool old_ei = false; for (int i = 1; i < argc; ++i) { if (argv[i][0] == '-') @@ -293,10 +285,6 @@ int main(int argc, char* argv[]) { include_ignorable = false; } - else if (strcmp(argv[i], "-old-ei") == 0) - { - old_ei = true; - } else { usage(); @@ -318,7 +306,7 @@ int main(int argc, char* argv[]) try { - process(filename, include_ignorable, max_len, old_ei); + process(filename, include_ignorable, max_len); } catch (std::exception& e) {