Commit 7f8c4b183da4d2d177ee08c3be848110361f43f0

Authored by Jay Berkenbilt
1 parent 6c7326b2

Add tests for --json-input

qpdf/qtest/qpdf-json.test
... ... @@ -46,5 +46,76 @@ foreach my $f (@badfiles)
46 46 $td->NORMALIZE_NEWLINES);
47 47 }
48 48  
  49 +my @goodfiles = (
  50 + 'good1.pdf',
  51 + 'good9.pdf',
  52 + 'good13.pdf',
  53 + 'good15.pdf',
  54 + 'inline-images.pdf',
  55 + ['20-pages.pdf', '--password=user'],
  56 + 'outlines-with-actions.pdf',
  57 + 'form-fields-and-annotations.pdf',
  58 + 'need-appearances.pdf',
  59 + 'fxo-blue.pdf',
  60 + );
  61 +$n_tests += 6 * scalar(@goodfiles);
  62 +
  63 +foreach my $i (@goodfiles)
  64 +{
  65 + my $f = $i;
  66 + my $xargs = "";
  67 + if (ref($i) eq 'ARRAY') {
  68 + ($f, $xargs) = @$i;
  69 + }
  70 + $td->runtest("good: $f -> json",
  71 + {$td->COMMAND => "qpdf $xargs --decode-level=none" .
  72 + " --json-output=latest $f a.json"},
  73 + {$td->STRING => "", $td->EXIT_STATUS => 0},
  74 + $td->NORMALIZE_NEWLINES);
  75 + $td->runtest("good: $f json -> json",
  76 + {$td->COMMAND =>
  77 + "qpdf --decode-level=none" .
  78 + " --json-input --json-output=latest a.json b.json"},
  79 + {$td->STRING => "", $td->EXIT_STATUS => 0},
  80 + $td->NORMALIZE_NEWLINES);
  81 + $td->runtest("good: $f json -> qdf",
  82 + {$td->COMMAND =>
  83 + "qpdf --qdf --json-input --stream-data=preserve" .
  84 + " --static-id a.json a.pdf"},
  85 + {$td->STRING => "", $td->EXIT_STATUS => 0},
  86 + $td->NORMALIZE_NEWLINES);
  87 + $td->runtest("good: $f compare json",
  88 + {$td->FILE => "a.json"},
  89 + {$td->FILE => "b.json"});
  90 + my $exp = "json-changed-$f";
  91 + if (! -f $exp)
  92 + {
  93 + $td->runtest("good: $f -> qdf",
  94 + {$td->COMMAND =>
  95 + "qpdf $xargs --object-streams=disable --qdf" .
  96 + " --stream-data=preserve --static-id $f b.pdf"},
  97 + {$td->STRING => "", $td->EXIT_STATUS => 0},
  98 + $td->NORMALIZE_NEWLINES);
  99 + $exp = "b.pdf";
  100 + }
  101 + else
  102 + {
  103 + # Sometimes passing through json may make semantically
  104 + # equivalent changes such as
  105 + #
  106 + # * adding leading 0 to a floating point (.1 -> 0.1)
  107 + # * changing the Unicode representation of a string
  108 + # * changing the representation of a name (/n#65st -> /nest)
  109 + $td->runtest("good: json changes $f",
  110 + {$td->STRING => ""},
  111 + {$td->STRING => ""});
  112 + }
  113 + $td->runtest("good: $f compare qdf",
  114 + {$td->FILE => "a.pdf"}, # from json
  115 + {$td->FILE => $exp}); # from original PDF
  116 +}
  117 +
  118 +
  119 +
49 120 cleanup();
50 121 $td->report($n_tests);
... ...
qpdf/qtest/qpdf/json-changed-form-fields-and-annotations.pdf 0 → 100644
  1 +%PDF-1.6
  2 +%¿÷¢þ
  3 +%QDF-1.0
  4 +
  5 +%% Original object ID: 1 0
  6 +1 0 obj
  7 +<<
  8 + /AcroForm <<
  9 + /DR 2 0 R
  10 + /Fields [
  11 + 3 0 R
  12 + 4 0 R
  13 + 5 0 R
  14 + ]
  15 + >>
  16 + /Names <<
  17 + /EmbeddedFiles 6 0 R
  18 + >>
  19 + /Pages 7 0 R
  20 + /Type /Catalog
  21 +>>
  22 +endobj
  23 +
  24 +%% Original object ID: 2 0
  25 +2 0 obj
  26 +<<
  27 + /Font <<
  28 + /F1 8 0 R
  29 + >>
  30 +>>
  31 +endobj
  32 +
  33 +%% Original object ID: 3 0
  34 +3 0 obj
  35 +<<
  36 + /AP <<
  37 + /N 9 0 R
  38 + >>
  39 + /DA (0 0.4 0 rg /F1 18 Tf)
  40 + /DR 2 0 R
  41 + /DV ()
  42 + /FT /Tx
  43 + /Ff 0
  44 + /Rect [
  45 + 72
  46 + 470.774
  47 + 190.8
  48 + 484.922
  49 + ]
  50 + /Subtype /Widget
  51 + /T (Text Box 1)
  52 + /Type /Annot
  53 + /V (Formy field)
  54 +>>
  55 +endobj
  56 +
  57 +%% Original object ID: 4 0
  58 +4 0 obj
  59 +<<
  60 + /AP <<
  61 + /N 11 0 R
  62 + >>
  63 + /DA (0 0.4 0 rg /F1 18 Tf)
  64 + /DR 2 0 R
  65 + /DV ()
  66 + /FT /Tx
  67 + /Ff 0
  68 + /Rect [
  69 + 372
  70 + 330.774
  71 + 386.148
  72 + 470.374
  73 + ]
  74 + /Subtype /Widget
  75 + /T (Text Box 2)
  76 + /Type /Annot
  77 + /V (Rot-ccw field)
  78 +>>
  79 +endobj
  80 +
  81 +%% Original object ID: 5 0
  82 +5 0 obj
  83 +<<
  84 + /DV /1
  85 + /FT /Btn
  86 + /Ff 49152
  87 + /Kids [
  88 + 13 0 R
  89 + 14 0 R
  90 + 15 0 R
  91 + ]
  92 + /T (r1)
  93 + /V /2
  94 +>>
  95 +endobj
  96 +
  97 +%% Original object ID: 6 0
  98 +6 0 obj
  99 +<<
  100 + /Names [
  101 + (attachment1.txt)
  102 + 16 0 R
  103 + ]
  104 +>>
  105 +endobj
  106 +
  107 +%% Original object ID: 7 0
  108 +7 0 obj
  109 +<<
  110 + /Count 1
  111 + /Kids [
  112 + 17 0 R
  113 + ]
  114 + /Type /Pages
  115 +>>
  116 +endobj
  117 +
  118 +%% Original object ID: 8 0
  119 +8 0 obj
  120 +<<
  121 + /BaseFont /Courier
  122 + /Encoding /WinAnsiEncoding
  123 + /Subtype /Type1
  124 + /Type /Font
  125 +>>
  126 +endobj
  127 +
  128 +%% Original object ID: 9 0
  129 +9 0 obj
  130 +<<
  131 + /BBox [
  132 + 0
  133 + -2.826
  134 + 118.8
  135 + 11.322
  136 + ]
  137 + /Resources 2 0 R
  138 + /Subtype /Form
  139 + /Type /XObject
  140 + /Length 10 0 R
  141 +>>
  142 +stream
  143 +/Tx BMC
  144 +q
  145 +BT
  146 + /F1 18 Tf
  147 + (Formy field) Tj
  148 +ET
  149 +Q
  150 +EMC
  151 +endstream
  152 +endobj
  153 +
  154 +10 0 obj
  155 +53
  156 +endobj
  157 +
  158 +%% Original object ID: 11 0
  159 +11 0 obj
  160 +<<
  161 + /BBox [
  162 + 0
  163 + -2.826
  164 + 140.4
  165 + 11.322
  166 + ]
  167 + /Matrix [
  168 + 0
  169 + 1
  170 + -1
  171 + 0
  172 + 0
  173 + 0
  174 + ]
  175 + /Resources 2 0 R
  176 + /Subtype /Form
  177 + /Type /XObject
  178 + /Length 12 0 R
  179 +>>
  180 +stream
  181 +/Tx BMC
  182 +q
  183 +BT
  184 + /F1 18 Tf
  185 + (Rot-ccw field) Tj
  186 +ET
  187 +Q
  188 +EMC
  189 +endstream
  190 +endobj
  191 +
  192 +12 0 obj
  193 +55
  194 +endobj
  195 +
  196 +%% Original object ID: 13 0
  197 +13 0 obj
  198 +<<
  199 + /AP <<
  200 + /N <<
  201 + /1 18 0 R
  202 + /Off 20 0 R
  203 + >>
  204 + >>
  205 + /AS /1
  206 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
  207 + /DR <<
  208 + /Font <<
  209 + /ZaDi 22 0 R
  210 + >>
  211 + >>
  212 + /F 4
  213 + /FT /Btn
  214 + /MK <<
  215 + /CA (l)
  216 + >>
  217 + /Parent 5 0 R
  218 + /Rect [
  219 + 152.749
  220 + 648.501
  221 + 164.801
  222 + 660.549
  223 + ]
  224 + /Subtype /Widget
  225 + /Type /Annot
  226 +>>
  227 +endobj
  228 +
  229 +%% Original object ID: 14 0
  230 +14 0 obj
  231 +<<
  232 + /AP <<
  233 + /N <<
  234 + /2 23 0 R
  235 + /Off 25 0 R
  236 + >>
  237 + >>
  238 + /AS /2
  239 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
  240 + /DR <<
  241 + /Font <<
  242 + /ZaDi 22 0 R
  243 + >>
  244 + >>
  245 + /F 4
  246 + /FT /Btn
  247 + /MK <<
  248 + /CA (l)
  249 + >>
  250 + /Parent 5 0 R
  251 + /Rect [
  252 + 152.749
  253 + 627.301
  254 + 164.801
  255 + 639.349
  256 + ]
  257 + /Subtype /Widget
  258 + /Type /Annot
  259 +>>
  260 +endobj
  261 +
  262 +%% Original object ID: 15 0
  263 +15 0 obj
  264 +<<
  265 + /AP <<
  266 + /N <<
  267 + /3 27 0 R
  268 + /Off 29 0 R
  269 + >>
  270 + >>
  271 + /AS /3
  272 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf)
  273 + /DR <<
  274 + /Font <<
  275 + /ZaDi 22 0 R
  276 + >>
  277 + >>
  278 + /F 4
  279 + /FT /Btn
  280 + /MK <<
  281 + /CA (l)
  282 + >>
  283 + /Parent 5 0 R
  284 + /Rect [
  285 + 151.399
  286 + 606.501
  287 + 163.451
  288 + 618.549
  289 + ]
  290 + /Subtype /Widget
  291 + /Type /Annot
  292 +>>
  293 +endobj
  294 +
  295 +%% Original object ID: 16 0
  296 +16 0 obj
  297 +<<
  298 + /EF <<
  299 + /F 31 0 R
  300 + /UF 31 0 R
  301 + >>
  302 + /F (attachment1.txt)
  303 + /Type /Filespec
  304 + /UF (attachment1.txt)
  305 +>>
  306 +endobj
  307 +
  308 +%% Page 1
  309 +%% Original object ID: 17 0
  310 +17 0 obj
  311 +<<
  312 + /Annots [
  313 + 33 0 R
  314 + 3 0 R
  315 + 34 0 R
  316 + 4 0 R
  317 + 35 0 R
  318 + 36 0 R
  319 + 37 0 R
  320 + 38 0 R
  321 + 13 0 R
  322 + 14 0 R
  323 + 15 0 R
  324 + ]
  325 + /Contents 39 0 R
  326 + /MediaBox [
  327 + 0
  328 + 0
  329 + 612
  330 + 792
  331 + ]
  332 + /Parent 7 0 R
  333 + /Resources 2 0 R
  334 + /Type /Page
  335 +>>
  336 +endobj
  337 +
  338 +%% Original object ID: 18 0
  339 +18 0 obj
  340 +<<
  341 + /BBox [
  342 + 0
  343 + 0
  344 + 12.05
  345 + 12.05
  346 + ]
  347 + /Resources 41 0 R
  348 + /Subtype /Form
  349 + /Type /XObject
  350 + /Length 19 0 R
  351 +>>
  352 +stream
  353 +/Tx BMC
  354 +q BT
  355 +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
  356 +0 0 Td
  357 +ET
  358 +Q
  359 +1 0 0 rg
  360 +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
  361 +8.45 4.65 7.35 3.55 6 3.55 c
  362 +4.65 3.55 3.6 4.65 3.6 6 c
  363 +3.6 7.35 4.65 8.4 6 8.4 c f*
  364 +
  365 +EMC
  366 +endstream
  367 +endobj
  368 +
  369 +19 0 obj
  370 +202
  371 +endobj
  372 +
  373 +%% Original object ID: 20 0
  374 +20 0 obj
  375 +<<
  376 + /BBox [
  377 + 0
  378 + 0
  379 + 12.05
  380 + 12.05
  381 + ]
  382 + /Resources 41 0 R
  383 + /Subtype /Form
  384 + /Type /XObject
  385 + /Length 21 0 R
  386 +>>
  387 +stream
  388 +/Tx BMC
  389 +EMC
  390 +endstream
  391 +endobj
  392 +
  393 +21 0 obj
  394 +12
  395 +endobj
  396 +
  397 +%% Original object ID: 22 0
  398 +22 0 obj
  399 +<<
  400 + /BaseFont /ZapfDingbats
  401 + /Subtype /Type1
  402 + /Type /Font
  403 +>>
  404 +endobj
  405 +
  406 +%% Original object ID: 23 0
  407 +23 0 obj
  408 +<<
  409 + /BBox [
  410 + 0
  411 + 0
  412 + 12.05
  413 + 12.05
  414 + ]
  415 + /Resources 41 0 R
  416 + /Subtype /Form
  417 + /Type /XObject
  418 + /Length 24 0 R
  419 +>>
  420 +stream
  421 +/Tx BMC
  422 +q BT
  423 +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
  424 +0 0 Td
  425 +ET
  426 +Q
  427 +0 1 0 rg
  428 +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
  429 +8.45 4.65 7.35 3.55 6 3.55 c
  430 +4.65 3.55 3.6 4.65 3.6 6 c
  431 +3.6 7.35 4.65 8.4 6 8.4 c f*
  432 +
  433 +EMC
  434 +endstream
  435 +endobj
  436 +
  437 +24 0 obj
  438 +202
  439 +endobj
  440 +
  441 +%% Original object ID: 25 0
  442 +25 0 obj
  443 +<<
  444 + /BBox [
  445 + 0
  446 + 0
  447 + 12.05
  448 + 12.05
  449 + ]
  450 + /Resources 41 0 R
  451 + /Subtype /Form
  452 + /Type /XObject
  453 + /Length 26 0 R
  454 +>>
  455 +stream
  456 +/Tx BMC
  457 +EMC
  458 +endstream
  459 +endobj
  460 +
  461 +26 0 obj
  462 +12
  463 +endobj
  464 +
  465 +%% Original object ID: 27 0
  466 +27 0 obj
  467 +<<
  468 + /BBox [
  469 + 0
  470 + 0
  471 + 12.05
  472 + 12.05
  473 + ]
  474 + /Resources 41 0 R
  475 + /Subtype /Form
  476 + /Type /XObject
  477 + /Length 28 0 R
  478 +>>
  479 +stream
  480 +/Tx BMC
  481 +q BT
  482 +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf
  483 +0 0 Td
  484 +ET
  485 +Q
  486 +0 0 1 rg
  487 +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c
  488 +8.45 4.65 7.35 3.55 6 3.55 c
  489 +4.65 3.55 3.6 4.65 3.6 6 c
  490 +3.6 7.35 4.65 8.4 6 8.4 c f*
  491 +
  492 +EMC
  493 +endstream
  494 +endobj
  495 +
  496 +28 0 obj
  497 +202
  498 +endobj
  499 +
  500 +%% Original object ID: 29 0
  501 +29 0 obj
  502 +<<
  503 + /BBox [
  504 + 0
  505 + 0
  506 + 12.05
  507 + 12.05
  508 + ]
  509 + /Resources 41 0 R
  510 + /Subtype /Form
  511 + /Type /XObject
  512 + /Length 30 0 R
  513 +>>
  514 +stream
  515 +/Tx BMC
  516 +EMC
  517 +endstream
  518 +endobj
  519 +
  520 +30 0 obj
  521 +12
  522 +endobj
  523 +
  524 +%% Original object ID: 31 0
  525 +31 0 obj
  526 +<<
  527 + /Params <<
  528 + /CheckSum <80a33fc110b5a7b8b4d58b8d57e814bc>
  529 + /Size 22
  530 + /Subtype /text#2fplain
  531 + >>
  532 + /Type /EmbeddedFile
  533 + /Length 32 0 R
  534 +>>
  535 +stream
  536 +content of attachment
  537 +endstream
  538 +endobj
  539 +
  540 +32 0 obj
  541 +22
  542 +endobj
  543 +
  544 +%% Original object ID: 33 0
  545 +33 0 obj
  546 +<<
  547 + /A <<
  548 + /S /URI
  549 + /URI (https://www.qbilt.org/)
  550 + >>
  551 + /Border [
  552 + 0
  553 + 0
  554 + 0.4
  555 + ]
  556 + /C [
  557 + 0.8
  558 + 0.6
  559 + 0.6
  560 + ]
  561 + /H /I
  562 + /Rect [
  563 + 72
  564 + 501.832
  565 + 374.4
  566 + 520.696
  567 + ]
  568 + /Subtype /Link
  569 + /Type /Annot
  570 +>>
  571 +endobj
  572 +
  573 +%% Original object ID: 34 0
  574 +34 0 obj
  575 +<<
  576 + /AP <<
  577 + /N 42 0 R
  578 + >>
  579 + /Contents (attachment1.txt)
  580 + /FS 16 0 R
  581 + /NM (attachment1.txt)
  582 + /Rect [
  583 + 72
  584 + 400
  585 + 92
  586 + 420
  587 + ]
  588 + /Subtype /FileAttachment
  589 + /Type /Annot
  590 +>>
  591 +endobj
  592 +
  593 +%% Original object ID: 35 0
  594 +35 0 obj
  595 +<<
  596 + /AP <<
  597 + /N 44 0 R
  598 + >>
  599 + /DA ()
  600 + /Rect [
  601 + 72
  602 + 350
  603 + 92
  604 + 360
  605 + ]
  606 + /Subtype /FreeText
  607 + /Type /Annot
  608 +>>
  609 +endobj
  610 +
  611 +%% Original object ID: 36 0
  612 +36 0 obj
  613 +<<
  614 + /AP <<
  615 + /N 46 0 R
  616 + >>
  617 + /DA ()
  618 + /Rect [
  619 + 102
  620 + 350
  621 + 112
  622 + 370
  623 + ]
  624 + /Subtype /FreeText
  625 + /Type /Annot
  626 +>>
  627 +endobj
  628 +
  629 +%% Original object ID: 37 0
  630 +37 0 obj
  631 +<<
  632 + /AP <<
  633 + /N 48 0 R
  634 + >>
  635 + /DA ()
  636 + /Rect [
  637 + 122
  638 + 350
  639 + 142
  640 + 360
  641 + ]
  642 + /Subtype /FreeText
  643 + /Type /Annot
  644 +>>
  645 +endobj
  646 +
  647 +%% Original object ID: 38 0
  648 +38 0 obj
  649 +<<
  650 + /AP <<
  651 + /N 50 0 R
  652 + >>
  653 + /DA ()
  654 + /Rect [
  655 + 152
  656 + 350
  657 + 162
  658 + 370
  659 + ]
  660 + /Subtype /FreeText
  661 + /Type /Annot
  662 +>>
  663 +endobj
  664 +
  665 +%% Contents for page 1
  666 +%% Original object ID: 39 0
  667 +39 0 obj
  668 +<<
  669 + /Length 40 0 R
  670 +>>
  671 +stream
  672 +q
  673 +1 1 .7 rg
  674 +.5 .5 0 RG
  675 +72 470.77 118.8 14.15 re
  676 +B
  677 +Q
  678 +q
  679 +0 .5 .5 RG
  680 +0 1 1 rg
  681 +372 330.77 14.15 139.4 re
  682 +B
  683 +Q
  684 +q
  685 +1 0 0 RG
  686 +72 310 20 10 re
  687 +72 310 5 10 re
  688 +S
  689 +0 1 0 RG
  690 +102 310 10 20 re
  691 +102 310 10 5 re
  692 +S
  693 +0 0 1 RG
  694 +122 310 20 10 re
  695 +137 310 5 10 re
  696 +S
  697 +0.5 0 1 RG
  698 +152 310 10 20 re
  699 +152 325 10 5 re
  700 +S
  701 +10 w
  702 +0.14 .33 .18 RG
  703 +5 5 602 782 re
  704 +S
  705 +Q
  706 +BT
  707 + /F1 16 Tf
  708 + 20.6 TL
  709 + 170 650 Td
  710 + (radio button 1) Tj
  711 + (radio button 2) '
  712 + (radio button 3) '
  713 + 1 0 0 1 72 546 Tm
  714 + /F1 20 Tf
  715 + (Thick green border surrounds page.) Tj
  716 + 0 -40 Td
  717 + /F1 24 Tf
  718 + 0 0 1 rg
  719 + (https://www.qbilt.org) Tj
  720 + /F1 12 Tf
  721 + 1 0 0 1 202 474 Tm
  722 + (<- Formy field in yellow) Tj
  723 + 1 0 0 1 392 410 Tm
  724 + 14.4 TL
  725 + (<- Rot-ccw field) Tj
  726 + (with "Rot" at bottom) '
  727 + (and text going up) '
  728 + 0 g
  729 + 1 0 0 1 102 405 Tm
  730 + (Arrow to the left points down.) Tj
  731 + 1 0 0 1 182 310 Tm
  732 + (<- Drawn rectangles appear below annotations.) Tj
  733 +ET
  734 +endstream
  735 +endobj
  736 +
  737 +40 0 obj
  738 +874
  739 +endobj
  740 +
  741 +%% Original object ID: 41 0
  742 +41 0 obj
  743 +<<
  744 + /Font 52 0 R
  745 + /ProcSet [
  746 + /PDF
  747 + /Text
  748 + ]
  749 +>>
  750 +endobj
  751 +
  752 +%% Original object ID: 42 0
  753 +42 0 obj
  754 +<<
  755 + /BBox [
  756 + 0
  757 + 0
  758 + 20
  759 + 20
  760 + ]
  761 + /Resources <<
  762 + >>
  763 + /Subtype /Form
  764 + /Type /XObject
  765 + /Length 43 0 R
  766 +>>
  767 +stream
  768 +0 10 m
  769 +10 0 l
  770 +20 10 l
  771 +10 0 m
  772 +10 20 l
  773 +0 0 20 20 re
  774 +S
  775 +endstream
  776 +endobj
  777 +
  778 +43 0 obj
  779 +52
  780 +endobj
  781 +
  782 +%% Original object ID: 44 0
  783 +44 0 obj
  784 +<<
  785 + /BBox [
  786 + 0
  787 + 0
  788 + 20
  789 + 10
  790 + ]
  791 + /Resources 2 0 R
  792 + /Subtype /Form
  793 + /Type /XObject
  794 + /Length 45 0 R
  795 +>>
  796 +stream
  797 +1 0 0 RG
  798 +0 0 20 10 re
  799 +0 0 5 10 re
  800 +S
  801 +endstream
  802 +endobj
  803 +
  804 +45 0 obj
  805 +36
  806 +endobj
  807 +
  808 +%% Original object ID: 46 0
  809 +46 0 obj
  810 +<<
  811 + /BBox [
  812 + 0
  813 + 0
  814 + 20
  815 + 10
  816 + ]
  817 + /Matrix [
  818 + 0
  819 + 1
  820 + -1
  821 + 0
  822 + 0
  823 + 0
  824 + ]
  825 + /Resources 2 0 R
  826 + /Subtype /Form
  827 + /Type /XObject
  828 + /Length 47 0 R
  829 +>>
  830 +stream
  831 +0 1 0 RG
  832 +0 0 20 10 re
  833 +0 0 5 10 re
  834 +S
  835 +endstream
  836 +endobj
  837 +
  838 +47 0 obj
  839 +36
  840 +endobj
  841 +
  842 +%% Original object ID: 48 0
  843 +48 0 obj
  844 +<<
  845 + /BBox [
  846 + 0
  847 + 0
  848 + 20
  849 + 10
  850 + ]
  851 + /Matrix [
  852 + -1
  853 + 0
  854 + 0
  855 + -1
  856 + 0
  857 + 0
  858 + ]
  859 + /Resources 2 0 R
  860 + /Subtype /Form
  861 + /Type /XObject
  862 + /Length 49 0 R
  863 +>>
  864 +stream
  865 +0 0 1 RG
  866 +0 0 20 10 re
  867 +0 0 5 10 re
  868 +S
  869 +endstream
  870 +endobj
  871 +
  872 +49 0 obj
  873 +36
  874 +endobj
  875 +
  876 +%% Original object ID: 50 0
  877 +50 0 obj
  878 +<<
  879 + /BBox [
  880 + 0
  881 + 0
  882 + 20
  883 + 10
  884 + ]
  885 + /Matrix [
  886 + 0
  887 + -1
  888 + 1
  889 + 0
  890 + 0
  891 + 0
  892 + ]
  893 + /Resources 2 0 R
  894 + /Subtype /Form
  895 + /Type /XObject
  896 + /Length 51 0 R
  897 +>>
  898 +stream
  899 +0.5 0 1 RG
  900 +0 0 20 10 re
  901 +0 0 5 10 re
  902 +S
  903 +endstream
  904 +endobj
  905 +
  906 +51 0 obj
  907 +38
  908 +endobj
  909 +
  910 +%% Original object ID: 52 0
  911 +52 0 obj
  912 +<<
  913 + /ZaDi 22 0 R
  914 +>>
  915 +endobj
  916 +
  917 +xref
  918 +0 53
  919 +0000000000 65535 f
  920 +0000000052 00000 n
  921 +0000000265 00000 n
  922 +0000000344 00000 n
  923 +0000000614 00000 n
  924 +0000000890 00000 n
  925 +0000001036 00000 n
  926 +0000001133 00000 n
  927 +0000001233 00000 n
  928 +0000001364 00000 n
  929 +0000001578 00000 n
  930 +0000001626 00000 n
  931 +0000001896 00000 n
  932 +0000001944 00000 n
  933 +0000002324 00000 n
  934 +0000002704 00000 n
  935 +0000003084 00000 n
  936 +0000003253 00000 n
  937 +0000003553 00000 n
  938 +0000003912 00000 n
  939 +0000003961 00000 n
  940 +0000004130 00000 n
  941 +0000004178 00000 n
  942 +0000004287 00000 n
  943 +0000004646 00000 n
  944 +0000004695 00000 n
  945 +0000004864 00000 n
  946 +0000004912 00000 n
  947 +0000005271 00000 n
  948 +0000005320 00000 n
  949 +0000005489 00000 n
  950 +0000005537 00000 n
  951 +0000005745 00000 n
  952 +0000005793 00000 n
  953 +0000006069 00000 n
  954 +0000006301 00000 n
  955 +0000006469 00000 n
  956 +0000006639 00000 n
  957 +0000006809 00000 n
  958 +0000007002 00000 n
  959 +0000007933 00000 n
  960 +0000007982 00000 n
  961 +0000008084 00000 n
  962 +0000008288 00000 n
  963 +0000008336 00000 n
  964 +0000008522 00000 n
  965 +0000008570 00000 n
  966 +0000008809 00000 n
  967 +0000008857 00000 n
  968 +0000009097 00000 n
  969 +0000009145 00000 n
  970 +0000009386 00000 n
  971 +0000009434 00000 n
  972 +trailer <<
  973 + /Root 1 0 R
  974 + /Size 53
  975 + /ID [<a2f146daeb6d814a742556489dab9882><31415926535897932384626433832795>]
  976 +>>
  977 +startxref
  978 +9472
  979 +%%EOF
... ...
qpdf/qtest/qpdf/json-changed-good13.pdf 0 → 100644
  1 +%PDF-2.0
  2 +%¿÷¢þ
  3 +%QDF-1.0
  4 +
  5 +%% Original object ID: 1 0
  6 +1 0 obj
  7 +<<
  8 + /Pages 3 0 R
  9 + /Type /Catalog
  10 +>>
  11 +endobj
  12 +
  13 +%% Original object ID: 7 0
  14 +2 0 obj
  15 +<<
  16 + /hex#20strings [
  17 + (Potato)
  18 + <01020300040560>
  19 + (AB)
  20 + ]
  21 + /indirect 4 0 R
  22 + /names [
  23 + /nesting
  24 + /hex#20strings
  25 + /text#2fplain
  26 + ]
  27 + /nesting <<
  28 + /a [
  29 + 1
  30 + 2
  31 + <<
  32 + /x (y)
  33 + >>
  34 + [
  35 + (z)
  36 + ]
  37 + ]
  38 + /b <<
  39 + / (legal)
  40 + /a [
  41 + 1
  42 + 2
  43 + ]
  44 + >>
  45 + >>
  46 + /strings [
  47 + (one)
  48 + <24a2>
  49 + ()
  50 + (\(\))
  51 + (\()
  52 + (\))
  53 + (a\f\b\t\r\nb)
  54 + (")
  55 + ("")
  56 + ("\("\)")
  57 + <410042>
  58 + (a\nb)
  59 + (a b)
  60 + <feff03c0>
  61 + <feffd83edd54>
  62 + ]
  63 +>>
  64 +endobj
  65 +
  66 +%% Original object ID: 2 0
  67 +3 0 obj
  68 +<<
  69 + /Count 1
  70 + /Kids [
  71 + 5 0 R
  72 + ]
  73 + /Type /Pages
  74 +>>
  75 +endobj
  76 +
  77 +%% Original object ID: 8 0
  78 +4 0 obj
  79 +(hello)
  80 +endobj
  81 +
  82 +%% Page 1
  83 +%% Original object ID: 3 0
  84 +5 0 obj
  85 +<<
  86 + /Contents 6 0 R
  87 + /MediaBox [
  88 + 0
  89 + 0
  90 + 612
  91 + 792
  92 + ]
  93 + /Parent 3 0 R
  94 + /Resources <<
  95 + /Font <<
  96 + /F1 8 0 R
  97 + >>
  98 + /ProcSet 9 0 R
  99 + >>
  100 + /Type /Page
  101 +>>
  102 +endobj
  103 +
  104 +%% Contents for page 1
  105 +%% Original object ID: 4 0
  106 +6 0 obj
  107 +<<
  108 + /Length 7 0 R
  109 +>>
  110 +stream
  111 +BT
  112 + /F1 24 Tf
  113 + 72 720 Td
  114 + (Potato) Tj
  115 +ET
  116 +endstream
  117 +endobj
  118 +
  119 +7 0 obj
  120 +44
  121 +endobj
  122 +
  123 +%% Original object ID: 6 0
  124 +8 0 obj
  125 +<<
  126 + /BaseFont /Helvetica
  127 + /Encoding /WinAnsiEncoding
  128 + /Name /F1
  129 + /Subtype /Type1
  130 + /Type /Font
  131 +>>
  132 +endobj
  133 +
  134 +%% Original object ID: 5 0
  135 +9 0 obj
  136 +[
  137 + /PDF
  138 + /Text
  139 +]
  140 +endobj
  141 +
  142 +xref
  143 +0 10
  144 +0000000000 65535 f
  145 +0000000052 00000 n
  146 +0000000133 00000 n
  147 +0000000706 00000 n
  148 +0000000805 00000 n
  149 +0000000866 00000 n
  150 +0000001108 00000 n
  151 +0000001207 00000 n
  152 +0000001253 00000 n
  153 +0000001398 00000 n
  154 +trailer <<
  155 + /QTest 2 0 R
  156 + /Root 1 0 R
  157 + /Size 10
  158 + /ID [<31415926535897932384626433832795><31415926535897932384626433832795>]
  159 +>>
  160 +startxref
  161 +1433
  162 +%%EOF
... ...
qpdf/qtest/qpdf/json-changed-need-appearances.pdf 0 → 100644
No preview for this file type
qpdf/qtest/qpdf/manual-qpdf-json.json 0 → 100644
  1 +{
  2 + "qpdf-v2": {
  3 + "pdfversion": "2.0",
  4 + "objects": {
  5 + "obj:3 0 R": {
  6 + "value": {
  7 + "/Contents": "4 0 R",
  8 + "/MediaBox": [
  9 + 0,
  10 + 0,
  11 + 612,
  12 + 792
  13 + ],
  14 + "/Parent": "2 0 R",
  15 + "/Resources": {
  16 + "/Font": {
  17 + "/F1": "6 0 R"
  18 + },
  19 + "/ProcSet": "5 0 R"
  20 + },
  21 + "/Type": "/Page"
  22 + }
  23 + },
  24 + "obj:2 0 R": {
  25 + "value": {
  26 + "/Count": 1,
  27 + "/Kids": [
  28 + "3 0 R"
  29 + ],
  30 + "/Type": "/Pages"
  31 + }
  32 + },
  33 + "obj:1 0 R": {
  34 + "value": {
  35 + "/Pages": "2 0 R",
  36 + "/Type": "/Catalog"
  37 + }
  38 + },
  39 + "obj:4 0 R": {
  40 + "stream": {
  41 + "dict": {},
  42 + "data": "QlQKICAvRjEgMjQgVGYKICA3MiA3MjAgVGQKICAoUG90YXRvKSBUagpFVAo="
  43 + }
  44 + },
  45 + "obj:5 0 R": {
  46 + "value": [
  47 + "/PDF",
  48 + "/Text"
  49 + ]
  50 + },
  51 + "obj:6 0 R": {
  52 + "value": {
  53 + "/BaseFont": "/Helvetica",
  54 + "/Encoding": "/WinAnsiEncoding",
  55 + "/Name": "/F1",
  56 + "/Subtype": "/Type1",
  57 + "/Type": "/Font"
  58 + }
  59 + },
  60 + "trailer": {
  61 + "value": {
  62 + "/QTest": "7 0 R",
  63 + "/Root": "1 0 R",
  64 + "/Size": 9
  65 + }
  66 + },
  67 + "obj:7 0 R": {
  68 + "value": {
  69 + "/hex strings": [
  70 + "u:Potato",
  71 + "b:01020300040560",
  72 + "u:AB"
  73 + ],
  74 + "/indirect": "8 0 R",
  75 + "/names": [
  76 + "/nesting",
  77 + "/hex strings",
  78 + "/text/plain"
  79 + ],
  80 + "/nesting": {
  81 + "/a": [
  82 + 1,
  83 + 2,
  84 + {
  85 + "/x": "u:y"
  86 + },
  87 + [
  88 + "u:z"
  89 + ]
  90 + ],
  91 + "/b": {
  92 + "/": "u:legal",
  93 + "/a": [
  94 + 1,
  95 + 2
  96 + ]
  97 + }
  98 + },
  99 + "/strings": [
  100 + "u:one",
  101 + "b:24a2",
  102 + "u:",
  103 + "u:()",
  104 + "u:(",
  105 + "u:)",
  106 + "u:a\f\b\t\r\nb",
  107 + "b:410042",
  108 + "u:a\nb",
  109 + "u:a b",
  110 + "u:π",
  111 + "u:🥔"
  112 + ]
  113 + }
  114 + },
  115 + "obj:8 0 R": {
  116 + "value": "u:hello"
  117 + }
  118 + }
  119 + }
  120 +}
... ...
qpdf/qtest/qpdf_test_helpers.pm
... ... @@ -135,7 +135,7 @@ sub get_md5_checksum
135 135  
136 136 sub cleanup
137 137 {
138   - system("rm -rf a.json *.ps *.pnm ?.pdf ?.qdf *.enc* tif1 tif2 tiff-cache");
  138 + system("rm -rf ?.json *.ps *.pnm ?.pdf ?.qdf *.enc* tif1 tif2 tiff-cache");
139 139 system("rm -rf *split-out* ???-kfo.pdf *.tmpout \@file.pdf auto-*");
140 140 }
141 141  
... ...