diff --git a/ChangeLog b/ChangeLog index 46ae6706..5c3e6229 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2021-02-21 Jay Berkenbilt + * Bug fix: --flatten-rotation now applies the required + transformation to annotations on the page. + + * Add QPDFAcroFormDocumentHelper::transformAnnotations to apply a + transformation to a group of annotations. + * Add QPDFObjGen::unparse() * Add QPDFObjectHandle::copyStream() for making a copy of a stream diff --git a/include/qpdf/QPDFAcroFormDocumentHelper.hh b/include/qpdf/QPDFAcroFormDocumentHelper.hh index d417fc08..eb9da5ad 100644 --- a/include/qpdf/QPDFAcroFormDocumentHelper.hh +++ b/include/qpdf/QPDFAcroFormDocumentHelper.hh @@ -113,6 +113,10 @@ class QPDFAcroFormDocumentHelper: public QPDFDocumentHelper QPDF_DLL void addFormField(QPDFFormFieldObjectHelper); + // Remove fields from the fields array + QPDF_DLL + void removeFormFields(std::set const&); + // Return a vector of all terminal fields in a document. Terminal // fields are fields that have no children that are also fields. // Terminal fields may still have children that are annotations. @@ -174,6 +178,32 @@ class QPDFAcroFormDocumentHelper: public QPDFDocumentHelper QPDF_DLL void generateAppearancesIfNeeded(); + // Note: this method works on all annotations, not just ones with + // associated fields. For each annotation in old_annots, apply the + // given transformation matrix to create a new annotation. New + // annotations are appended to new_annots. If the annotation is + // associated with a form field, a new form field is created that + // points to the new annotation and is appended to new_fields, and + // the old field is added to old_fields. + // + // old_annots may belong to a different QPDF object. In that case, + // you should pass in from_qpdf, and copyForeignObject will be + // called automatically. If this is the case, for efficiency, you + // may pass in a QPDFAcroFormDocumentHelper for the other file to + // avoid the expensive process of creating one for each call to + // transformAnnotations. New fields and annotations are not added + // to the document or pages. You have to do that yourself after + // calling transformAnnotations. + QPDF_DLL + void transformAnnotations( + QPDFObjectHandle old_annots, + std::vector& new_annots, + std::vector& new_fields, + std::set& old_fields, + QPDFMatrix const& cm, + QPDF* from_qpdf = nullptr, + QPDFAcroFormDocumentHelper* from_afdh = nullptr); + private: void analyze(); void traverseField(QPDFObjectHandle field, diff --git a/include/qpdf/QPDFAnnotationObjectHelper.hh b/include/qpdf/QPDFAnnotationObjectHelper.hh index 3dd62222..39a530a3 100644 --- a/include/qpdf/QPDFAnnotationObjectHelper.hh +++ b/include/qpdf/QPDFAnnotationObjectHelper.hh @@ -40,6 +40,13 @@ class QPDFAnnotationObjectHelper: public QPDFObjectHelper // This class provides helper methods for annotations. More // functionality will likely be added in the future. + // Some functionality for annotations is also implemented in + // QPDFAcroFormDocumentHelper and QPDFFormFieldObjectHelper. In + // some cases, functions defined there work for other annotations + // besides widget annotations, but they are implemented with form + // fields so that they can properly handle form fields when + // needed. + // Return the subtype of the annotation as a string (e.g. // "/Widget"). Returns the empty string if the subtype (which is // required by the spec) is missing. diff --git a/include/qpdf/QPDFPageObjectHelper.hh b/include/qpdf/QPDFPageObjectHelper.hh index 76f42dbd..c48a7145 100644 --- a/include/qpdf/QPDFPageObjectHelper.hh +++ b/include/qpdf/QPDFPageObjectHelper.hh @@ -31,6 +31,8 @@ #include #include +class QPDFAcroFormDocumentHelper; + class QPDFPageObjectHelper: public QPDFObjectHelper { // This is a helper class for page objects, but as of qpdf 10.1, @@ -323,9 +325,15 @@ class QPDFPageObjectHelper: public QPDFObjectHelper // various page bounding boxes (/MediaBox, etc.) so that the page // will have the same semantics. This can be useful to work around // problems with PDF applications that can't properly handle - // rotated pages. + // rotated pages. If a QPDFAcroFormDocumentHelper is provided, it + // will be used for resolving any form fields that have to be + // rotated. If not, one will be created inside the function, which + // is less efficient. QPDF_DLL void flattenRotation(); + // ABI: merge versions and make afdh default to nullptr + QPDF_DLL + void flattenRotation(QPDFAcroFormDocumentHelper* afdh); private: static bool diff --git a/libqpdf/QPDFAcroFormDocumentHelper.cc b/libqpdf/QPDFAcroFormDocumentHelper.cc index cf3cb161..2991e578 100644 --- a/libqpdf/QPDFAcroFormDocumentHelper.cc +++ b/libqpdf/QPDFAcroFormDocumentHelper.cc @@ -54,6 +54,50 @@ QPDFAcroFormDocumentHelper::addFormField(QPDFFormFieldObjectHelper ff) ff.getObjectHandle(), QPDFObjectHandle::newNull(), 0, visited); } +void +QPDFAcroFormDocumentHelper::removeFormFields( + std::set const& to_remove) +{ + auto acroform = this->qpdf.getRoot().getKey("/AcroForm"); + if (! acroform.isDictionary()) + { + return; + } + auto fields = acroform.getKey("/Fields"); + if (! fields.isArray()) + { + return; + } + + for (auto const& og: to_remove) + { + auto annotations = this->m->field_to_annotations.find(og); + if (annotations != this->m->field_to_annotations.end()) + { + for (auto aoh: annotations->second) + { + this->m->annotation_to_field.erase( + aoh.getObjectHandle().getObjGen()); + } + this->m->field_to_annotations.erase(og); + } + } + + int i = 0; + while (i < fields.getArrayNItems()) + { + auto field = fields.getArrayItem(i); + if (to_remove.count(field.getObjGen())) + { + fields.eraseItem(i); + } + else + { + ++i; + } + } +} + std::vector QPDFAcroFormDocumentHelper::getFormFields() { @@ -350,3 +394,273 @@ QPDFAcroFormDocumentHelper::generateAppearancesIfNeeded() } setNeedAppearances(false); } + +void +QPDFAcroFormDocumentHelper::transformAnnotations( + QPDFObjectHandle old_annots, + std::vector& new_annots, + std::vector& new_fields, + std::set& old_fields, + QPDFMatrix const& cm, + QPDF* from_qpdf, + QPDFAcroFormDocumentHelper* from_afdh) +{ + PointerHolder afdhph; + if (! from_qpdf) + { + // Assume these are from the same QPDF. + from_qpdf = &this->qpdf; + from_afdh = this; + } + else if ((from_qpdf != &this->qpdf) && (! from_afdh)) + { + afdhph = new QPDFAcroFormDocumentHelper(*from_qpdf); + from_afdh = afdhph.getPointer(); + } + bool foreign = (from_qpdf != &this->qpdf); + + std::set added_new_fields; + + // This helper prevents us from copying the same object + // multiple times. + std::map copied_objects; + auto maybe_copy_object = [&](QPDFObjectHandle& to_copy) { + auto og = to_copy.getObjGen(); + if (copied_objects.count(og)) + { + to_copy = copied_objects[og]; + return false; + } + else + { + to_copy = this->qpdf.makeIndirectObject(to_copy.shallowCopy()); + copied_objects[og] = to_copy; + return true; + } + }; + + for (auto annot: QPDFArrayItems(old_annots)) + { + if (annot.isStream()) + { + annot.warnIfPossible("ignoring annotation that's a stream"); + continue; + } + + // Make copies of annotations and fields down to the + // appearance streams, preserving all internal referential + // integrity. When the incoming annotations are from a + // different file, we first copy them locally. Then, whether + // local or foreign, we copy them again so that if we bring + // the same annotation in multiple times (e.g. overlaying a + // foreign page onto multiple local pages or a local page onto + // multiple other local pages), we don't create annotations + // that are referenced in more than one place. If we did that, + // the effect of applying transformations would be cumulative, + // which is definitely not what we want. Besides, annotations + // and fields are not intended to be referenced in multiple + // places. + + // Determine if this annotation is attached to a form field. + // If so, the annotation may be the same object as the form + // field, or the form field may have the annotation as a kid. + // In either case, we have to walk up the field structure to + // find the top-level field. Within one iteration through a + // set of annotations, we don't want to copy the same item + // more than once. For example, suppose we have field A with + // kids B, C, and D, each of which has annotations BA, CA, and + // DA. When we get to BA, we will find that BA is a kid of B + // which is under A. When we do a copyForeignObject of A, it + // will also copy everything else because of the indirect + // references. When we clone BA, we will want to clone A and + // then update A's clone's kid to point B's clone and B's + // clone's parent to point to A's clone. The same thing holds + // for annotatons. Next, when we get to CA, we will again + // discover that A is the top, but we don't want to re-copy A. + // We want CA's clone to be linked to the same clone as BA's. + // Failure to do this will break up things like radio button + // groups, which all have to kids of the same parent. + + auto ffield = from_afdh->getFieldForAnnotation(annot); + auto ffield_oh = ffield.getObjectHandle(); + QPDFObjectHandle top_field; + bool have_field = false; + bool have_parent = false; + if (ffield_oh.isStream()) + { + ffield_oh.warnIfPossible("ignoring form field that's a stream"); + } + else if ((! ffield_oh.isNull()) && (! ffield_oh.isIndirect())) + { + ffield_oh.warnIfPossible("ignoring form field not indirect"); + } + else if (! ffield_oh.isNull()) + { + // A field and its associated annotation can be the same + // object. This matters because we don't want to clone the + // annotation and field separately in this case. + have_field = true; + // Find the top-level field. It may be the field itself. + top_field = ffield_oh; + std::set seen; + while (! top_field.getKey("/Parent").isNull()) + { + top_field = top_field.getKey("/Parent"); + have_parent = true; + auto og = top_field.getObjGen(); + if (seen.count(og)) + { + break; + } + seen.insert(og); + } + if (foreign) + { + // copyForeignObject returns the same value if called + // multiple times with the same field. Create/retrieve + // the local copy of the original field. This pulls + // over everything the field references including + // annotations and appearance streams, but it's + // harmless to call copyForeignObject on them too. + // They will already be copied, so we'll get the right + // object back. + + top_field = this->qpdf.copyForeignObject(top_field); + ffield_oh = this->qpdf.copyForeignObject(ffield_oh); + } + old_fields.insert(top_field.getObjGen()); + + // Traverse the field, copying kids, and preserving + // integrity. + std::list queue; + if (maybe_copy_object(top_field)) + { + queue.push_back(top_field); + } + seen.clear(); + while (! queue.empty()) + { + QPDFObjectHandle obj = queue.front(); + queue.pop_front(); + auto orig_og = obj.getObjGen(); + if (seen.count(orig_og)) + { + // loop + break; + } + seen.insert(orig_og); + auto parent = obj.getKey("/Parent"); + if (parent.isIndirect()) + { + auto parent_og = parent.getObjGen(); + if (copied_objects.count(parent_og)) + { + obj.replaceKey("/Parent", copied_objects[parent_og]); + } + else + { + parent.warnIfPossible( + "while traversing field " + + obj.getObjGen().unparse() + + ", found parent (" + parent_og.unparse() + + ") that had not been seen, indicating likely" + " invalid field structure"); + } + } + auto kids = obj.getKey("/Kids"); + if (kids.isArray()) + { + for (int i = 0; i < kids.getArrayNItems(); ++i) + { + auto kid = kids.getArrayItem(i); + if (maybe_copy_object(kid)) + { + kids.setArrayItem(i, kid); + queue.push_back(kid); + } + } + } + } + + // Now switch to copies. We already switched for top_field + maybe_copy_object(ffield_oh); + ffield = QPDFFormFieldObjectHelper(ffield_oh); + } + + QTC::TC("qpdf", "QPDFAcroFormDocumentHelper copy annotation", + (have_field ? 1 : 0) | (foreign ? 2 : 0)); + if (have_field) + { + QTC::TC("qpdf", "QPDFAcroFormDocumentHelper field with parent", + (have_parent ? 1 : 0) | (foreign ? 2 : 0)); + } + if (foreign) + { + annot = this->qpdf.copyForeignObject(annot); + } + maybe_copy_object(annot); + + // Now we have copies, so we can safely mutate. + if (have_field && ! added_new_fields.count(top_field.getObjGen())) + { + new_fields.push_back(top_field); + added_new_fields.insert(top_field.getObjGen()); + } + new_annots.push_back(annot); + + // Identify and copy any appearance streams + + auto ah = QPDFAnnotationObjectHelper(annot); + auto apdict = ah.getAppearanceDictionary(); + std::vector streams; + auto replace_stream = [](auto& dict, auto& key, auto& old) { + auto new_stream = old.copyStream(); + dict.replaceKey(key, new_stream); + return new_stream; + }; + if (apdict.isDictionary()) + { + for (auto& ap: QPDFDictItems(apdict)) + { + if (ap.second.isStream()) + { + streams.push_back( + replace_stream(apdict, ap.first, ap.second)); + } + else if (ap.second.isDictionary()) + { + for (auto& ap2: QPDFDictItems(ap.second)) + { + if (ap2.second.isStream()) + { + streams.push_back( + replace_stream( + ap.second, ap2.first, ap2.second)); + } + } + } + } + } + + // Now we can safely mutate the annotation and its appearance + // streams. + for (auto& stream: streams) + { + auto omatrix = stream.getDict().getKey("/Matrix"); + QPDFMatrix apcm; + if (omatrix.isArray()) + { + QTC::TC("qpdf", "QPDFAcroFormDocumentHelper modify ap matrix"); + auto m1 = omatrix.getArrayAsMatrix(); + apcm = QPDFMatrix(m1); + } + apcm.concat(cm); + auto new_matrix = QPDFObjectHandle::newFromMatrix(apcm); + stream.getDict().replaceKey("/Matrix", new_matrix); + } + auto rect = cm.transformRectangle( + annot.getKey("/Rect").getArrayAsRectangle()); + annot.replaceKey( + "/Rect", QPDFObjectHandle::newFromRectangle(rect)); + } +} diff --git a/libqpdf/QPDFPageObjectHelper.cc b/libqpdf/QPDFPageObjectHelper.cc index 748d865d..18ac4d02 100644 --- a/libqpdf/QPDFPageObjectHelper.cc +++ b/libqpdf/QPDFPageObjectHelper.cc @@ -7,6 +7,7 @@ #include #include #include +#include class ContentProvider: public QPDFObjectHandle::StreamDataProvider { @@ -1080,6 +1081,12 @@ QPDFPageObjectHelper::placeFormXObject( void QPDFPageObjectHelper::flattenRotation() +{ + flattenRotation(nullptr); +} + +void +QPDFPageObjectHelper::flattenRotation(QPDFAcroFormDocumentHelper* afdh) { QPDF* qpdf = this->oh.getOwningQPDF(); if (! qpdf) @@ -1206,4 +1213,26 @@ QPDFPageObjectHelper::flattenRotation() QTC::TC("qpdf", "QPDFPageObjectHelper flatten inherit rotate"); this->oh.replaceKey("/Rotate", QPDFObjectHandle::newInteger(0)); } + + QPDFObjectHandle annots = this->oh.getKey("/Annots"); + if (annots.isArray()) + { + std::vector new_annots; + std::vector new_fields; + std::set old_fields; + PointerHolder afdhph; + if (! afdh) + { + afdhph = new QPDFAcroFormDocumentHelper(*qpdf); + afdh = afdhph.getPointer(); + } + afdh->transformAnnotations( + annots, new_annots, new_fields, old_fields, cm); + afdh->removeFormFields(old_fields); + for (auto const& f: new_fields) + { + afdh->addFormField(QPDFFormFieldObjectHelper(f)); + } + this->oh.replaceKey("/Annots", QPDFObjectHandle::newArray(new_annots)); + } } diff --git a/manual/qpdf-manual.xml b/manual/qpdf-manual.xml index f7146221..001e3455 100644 --- a/manual/qpdf-manual.xml +++ b/manual/qpdf-manual.xml @@ -5313,6 +5313,13 @@ print "\n"; dictionary if needed. + + + Add method + QPDFAcroFormDocumentHelper::transformAnnotations, + which applies a transformation to each annotation on a page. + + Add QUtil::path_basename to return the @@ -5341,6 +5348,12 @@ print "\n"; Bug Fixes + + + The option applies + transformations to any annotations that may be on the page. + + If a form XObject lacks a resources dictionary, consider any diff --git a/qpdf/qpdf.cc b/qpdf/qpdf.cc index 2f910f22..725a1742 100644 --- a/qpdf/qpdf.cc +++ b/qpdf/qpdf.cc @@ -5362,6 +5362,13 @@ static void copy_attachments(QPDF& pdf, Options& o, int& exit_code) static void handle_transformations(QPDF& pdf, Options& o, int& exit_code) { QPDFPageDocumentHelper dh(pdf); + PointerHolder afdh; + auto make_afdh = [&]() { + if (! afdh.getPointer()) + { + afdh = new QPDFAcroFormDocumentHelper(pdf); + } + }; if (o.externalize_inline_images) { std::vector pages = dh.getAllPages(); @@ -5408,8 +5415,8 @@ static void handle_transformations(QPDF& pdf, Options& o, int& exit_code) } if (o.generate_appearances) { - QPDFAcroFormDocumentHelper afdh(pdf); - afdh.generateAppearancesIfNeeded(); + make_afdh(); + afdh->generateAppearancesIfNeeded(); } if (o.flatten_annotations) { @@ -5427,9 +5434,10 @@ static void handle_transformations(QPDF& pdf, Options& o, int& exit_code) } if (o.flatten_rotation) { + make_afdh(); for (auto& page: dh.getAllPages()) { - page.flattenRotation(); + page.flattenRotation(afdh.getPointer()); } } if (o.remove_page_labels) diff --git a/qpdf/qpdf.testcov b/qpdf/qpdf.testcov index 057e2734..dc6fabfd 100644 --- a/qpdf/qpdf.testcov +++ b/qpdf/qpdf.testcov @@ -572,3 +572,6 @@ qpdf password file 0 QPDFFileSpecObjectHelper empty compat_name 0 QPDFFileSpecObjectHelper non-empty compat_name 0 QPDFPageObjectHelper flatten inherit rotate 0 +QPDFAcroFormDocumentHelper copy annotation 1 +QPDFAcroFormDocumentHelper field with parent 1 +QPDFAcroFormDocumentHelper modify ap matrix 0 diff --git a/qpdf/qtest/qpdf.test b/qpdf/qtest/qpdf.test index a0985f07..157984f6 100644 --- a/qpdf/qtest/qpdf.test +++ b/qpdf/qtest/qpdf.test @@ -2248,7 +2248,7 @@ $td->runtest("explicit keep files open = n", show_ntests(); # ---------- $td->notify("--- Rotate Pages ---"); -$n_tests += 8; +$n_tests += 18; # Do absolute, positive, and negative on ranges that include # inherited and non-inherited. # Pages 11-15 inherit /Rotate 90 @@ -2290,6 +2290,49 @@ $td->runtest("check output", {$td->FILE => "a.pdf"}, {$td->FILE => "inherited-flattened.pdf"}); +foreach my $angle (qw(90 180 270)) +{ + $td->runtest("rotate annotations", + {$td->COMMAND => + "qpdf --static-id --qdf --rotate=$angle" . + " --flatten-rotation --no-original-object-ids" . + " form-fields-and-annotations.pdf a.pdf"}, + {$td->STRING => "", $td->EXIT_STATUS => 0}); + $td->runtest("check output (flatten $angle)", + {$td->FILE => "a.pdf"}, + {$td->FILE => "annotations-rotated-$angle.pdf"}); +} + +# The file form-fields-and-annotations-shared.pdf contains some +# annotations that appear in multiple pages /Annots, some non-shared +# things that share appearance streams, some form fields appear on +# multiple pages, and an indirect /Annotations array. It is out of +# spec in several ways but still works in most viewers. These test +# make sure we don't make anything worse and also end up exercising +# some cases of things being copied more than once, though we also +# exercise that with legitimate test cases using overlay. + +$td->runtest("shared annotations 1 page", + {$td->COMMAND => + "qpdf --qdf --no-original-object-ids --static-id" . + " --rotate=90:1 form-fields-and-annotations-shared.pdf" . + " a.pdf --flatten-rotation"}, + {$td->STRING => "", $td->EXIT_STATUS => 0}, + $td->NORMALIZE_NEWLINES); +$td->runtest("check output", + {$td->FILE => "a.pdf"}, + {$td->FILE => "rotated-shared-annotations-1.pdf"}); +$td->runtest("shared annotations 2 pages", + {$td->COMMAND => + "qpdf --qdf --no-original-object-ids --static-id" . + " --rotate=90:1,2 form-fields-and-annotations-shared.pdf" . + " a.pdf --flatten-rotation"}, + {$td->STRING => "", $td->EXIT_STATUS => 0}, + $td->NORMALIZE_NEWLINES); +$td->runtest("check output", + {$td->FILE => "a.pdf"}, + {$td->FILE => "rotated-shared-annotations-2.pdf"}); + show_ntests(); # ---------- $td->notify("--- Flatten Form/Annotations ---"); diff --git a/qpdf/qtest/qpdf/annotations-rotated-180.pdf b/qpdf/qtest/qpdf/annotations-rotated-180.pdf new file mode 100644 index 00000000..7c0f0792 --- /dev/null +++ b/qpdf/qtest/qpdf/annotations-rotated-180.pdf @@ -0,0 +1,1052 @@ +%PDF-1.6 +%¿÷¢þ +%QDF-1.0 + +1 0 obj +<< + /AcroForm << + /DR 2 0 R + /Fields [ + 3 0 R + 4 0 R + 5 0 R + ] + >> + /Names << + /EmbeddedFiles 6 0 R + >> + /Pages 7 0 R + /Type /Catalog +>> +endobj + +2 0 obj +<< + /Font << + /F1 8 0 R + >> +>> +endobj + +3 0 obj +<< + /AP << + /N 9 0 R + >> + /DA (0 0.4 0 rg /F1 18 Tf) + /DR 2 0 R + /DV () + /FT /Tx + /Ff 0 + /Rect [ + 421.2 + 307.078 + 540 + 321.226 + ] + /Subtype /Widget + /T (Text Box 1) + /Type /Annot + /V (Formy field) +>> +endobj + +4 0 obj +<< + /AP << + /N 11 0 R + >> + /DA (0 0.4 0 rg /F1 18 Tf) + /DR 2 0 R + /DV () + /FT /Tx + /Ff 0 + /Rect [ + 225.852 + 321.626 + 240 + 461.226 + ] + /Subtype /Widget + /T (Text Box 1) + /Type /Annot + /V (Rot-ccw field) +>> +endobj + +5 0 obj +<< + /DV /1 + /FT /Btn + /Ff 49152 + /Kids [ + 13 0 R + 14 0 R + 15 0 R + ] + /T (r1) + /V /2 +>> +endobj + +6 0 obj +<< + /Names [ + (attachment1.txt) + 16 0 R + ] +>> +endobj + +7 0 obj +<< + /Count 1 + /Kids [ + 17 0 R + ] + /Type /Pages +>> +endobj + +8 0 obj +<< + /BaseFont /Courier + /Encoding /WinAnsiEncoding + /Subtype /Type1 + /Type /Font +>> +endobj + +9 0 obj +<< + /BBox [ + 0 + -2.826 + 118.8 + 11.322 + ] + /Matrix [ + -1 + 0 + 0 + -1 + 612 + 792 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 10 0 R +>> +stream +/Tx BMC +q +BT + /F1 18 Tf + (Formy field) Tj +ET +Q +EMC +endstream +endobj + +10 0 obj +53 +endobj + +11 0 obj +<< + /BBox [ + 0 + -2.826 + 140.4 + 11.322 + ] + /Matrix [ + -0 + -1 + 1 + 0 + -792 + 612 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 12 0 R +>> +stream +/Tx BMC +q +BT + /F1 18 Tf + (Rot-ccw field) Tj +ET +Q +EMC +endstream +endobj + +12 0 obj +55 +endobj + +13 0 obj +<< + /AP << + /N << + /1 18 0 R + /Off 20 0 R + >> + >> + /AS /1 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 22 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 5 0 R + /Rect [ + 447.199 + 131.451 + 459.251 + 143.499 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +14 0 obj +<< + /AP << + /N << + /2 23 0 R + /Off 25 0 R + >> + >> + /AS /2 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 22 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 5 0 R + /Rect [ + 447.199 + 152.651 + 459.251 + 164.699 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +15 0 obj +<< + /AP << + /N << + /3 27 0 R + /Off 29 0 R + >> + >> + /AS /3 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 22 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 5 0 R + /Rect [ + 448.549 + 173.451 + 460.601 + 185.499 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +16 0 obj +<< + /EF << + /F 31 0 R + /UF 31 0 R + >> + /F (attachment1.txt) + /Type /Filespec + /UF (attachment1.txt) +>> +endobj + +%% Page 1 +17 0 obj +<< + /Annots [ + 33 0 R + 3 0 R + 34 0 R + 4 0 R + 35 0 R + 36 0 R + 37 0 R + 38 0 R + 13 0 R + 14 0 R + 15 0 R + ] + /Contents [ + 39 0 R + 41 0 R + 43 0 R + ] + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 7 0 R + /Resources 2 0 R + /Type /Page +>> +endobj + +18 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + -1 + 0 + 0 + -1 + 612 + 792 + ] + /Resources 45 0 R + /Subtype /Form + /Type /XObject + /Length 19 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +1 0 0 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +19 0 obj +202 +endobj + +20 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + -1 + 0 + 0 + -1 + 612 + 792 + ] + /Resources 45 0 R + /Subtype /Form + /Type /XObject + /Length 21 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +21 0 obj +12 +endobj + +22 0 obj +<< + /BaseFont /ZapfDingbats + /Subtype /Type1 + /Type /Font +>> +endobj + +23 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + -1 + 0 + 0 + -1 + 612 + 792 + ] + /Resources 45 0 R + /Subtype /Form + /Type /XObject + /Length 24 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +0 1 0 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +24 0 obj +202 +endobj + +25 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + -1 + 0 + 0 + -1 + 612 + 792 + ] + /Resources 45 0 R + /Subtype /Form + /Type /XObject + /Length 26 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +26 0 obj +12 +endobj + +27 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + -1 + 0 + 0 + -1 + 612 + 792 + ] + /Resources 45 0 R + /Subtype /Form + /Type /XObject + /Length 28 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +0 0 1 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +28 0 obj +202 +endobj + +29 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + -1 + 0 + 0 + -1 + 612 + 792 + ] + /Resources 45 0 R + /Subtype /Form + /Type /XObject + /Length 30 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +30 0 obj +12 +endobj + +31 0 obj +<< + /Params << + /CheckSum <80a33fc110b5a7b8b4d58b8d57e814bc> + /Size 22 + /Subtype /text#2fplain + >> + /Type /EmbeddedFile + /Length 32 0 R +>> +stream +content of attachment +endstream +endobj + +32 0 obj +22 +endobj + +33 0 obj +<< + /A << + /S /URI + /URI (https://www.qbilt.org/) + >> + /Border [ + 0 + 0 + .4 + ] + /C [ + .8 + .6 + .6 + ] + /H /I + /Rect [ + 237.6 + 271.304 + 540 + 290.168 + ] + /Subtype /Link + /Type /Annot +>> +endobj + +34 0 obj +<< + /AP << + /N 46 0 R + >> + /Contents (attachment1.txt) + /FS 16 0 R + /NM (attachment1.txt) + /Rect [ + 520 + 372 + 540 + 392 + ] + /Subtype /FileAttachment + /Type /Annot +>> +endobj + +35 0 obj +<< + /AP << + /N 48 0 R + >> + /DA () + /Rect [ + 520 + 432 + 540 + 442 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +36 0 obj +<< + /AP << + /N 50 0 R + >> + /DA () + /Rect [ + 500 + 422 + 510 + 442 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +37 0 obj +<< + /AP << + /N 52 0 R + >> + /DA () + /Rect [ + 470 + 432 + 490 + 442 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +38 0 obj +<< + /AP << + /N 54 0 R + >> + /DA () + /Rect [ + 450 + 422 + 460 + 442 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +%% Contents for page 1 +39 0 obj +<< + /Length 40 0 R +>> +stream +q +-1 0 0 -1 612 792 cm +endstream +endobj + +40 0 obj +23 +endobj + +%% Contents for page 1 +41 0 obj +<< + /Length 42 0 R +>> +stream +q +1 1 .7 rg +.5 .5 0 RG +72 470.77 118.8 14.15 re +B +Q +q +0 .5 .5 RG +0 1 1 rg +372 330.77 14.15 139.4 re +B +Q +q +1 0 0 RG +72 310 20 10 re +72 310 5 10 re +S +0 1 0 RG +102 310 10 20 re +102 310 10 5 re +S +0 0 1 RG +122 310 20 10 re +137 310 5 10 re +S +0.5 0 1 RG +152 310 10 20 re +152 325 10 5 re +S +10 w +0.14 .33 .18 RG +5 5 602 782 re +S +Q +BT + /F1 16 Tf + 20.6 TL + 170 650 Td + (radio button 1) Tj + (radio button 2) ' + (radio button 3) ' + 1 0 0 1 72 546 Tm + /F1 20 Tf + (Thick green border surrounds page.) Tj + 0 -40 Td + /F1 24 Tf + 0 0 1 rg + (https://www.qbilt.org) Tj + /F1 12 Tf + 1 0 0 1 202 474 Tm + (<- Formy field in yellow) Tj + 1 0 0 1 392 410 Tm + 14.4 TL + (<- Rot-ccw field) Tj + (with "Rot" at bottom) ' + (and text going up) ' + 0 g + 1 0 0 1 102 405 Tm + (Arrow to the left points down.) Tj + 1 0 0 1 182 310 Tm + (<- Drawn rectangles appear below annotations.) Tj +ET +endstream +endobj + +42 0 obj +874 +endobj + +%% Contents for page 1 +43 0 obj +<< + /Length 44 0 R +>> +stream + +Q +endstream +endobj + +44 0 obj +3 +endobj + +45 0 obj +<< + /Font 56 0 R + /ProcSet [ + /PDF + /Text + ] +>> +endobj + +46 0 obj +<< + /BBox [ + 0 + 0 + 20 + 20 + ] + /Matrix [ + -1 + 0 + 0 + -1 + 612 + 792 + ] + /Resources << + >> + /Subtype /Form + /Type /XObject + /Length 47 0 R +>> +stream +0 10 m +10 0 l +20 10 l +10 0 m +10 20 l +0 0 20 20 re +S +endstream +endobj + +47 0 obj +52 +endobj + +48 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + -1 + 0 + 0 + -1 + 612 + 792 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 49 0 R +>> +stream +1 0 0 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +49 0 obj +36 +endobj + +50 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + -0 + -1 + 1 + 0 + -792 + 612 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 51 0 R +>> +stream +0 1 0 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +51 0 obj +36 +endobj + +52 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + 1 + -0 + -0 + 1 + -612 + -792 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 53 0 R +>> +stream +0 0 1 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +53 0 obj +36 +endobj + +54 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + 0 + 1 + -1 + -0 + 792 + -612 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 55 0 R +>> +stream +0.5 0 1 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +55 0 obj +38 +endobj + +56 0 obj +<< + /ZaDi 22 0 R +>> +endobj + +xref +0 57 +0000000000 65535 f +0000000025 00000 n +0000000211 00000 n +0000000263 00000 n +0000000507 00000 n +0000000756 00000 n +0000000875 00000 n +0000000945 00000 n +0000001018 00000 n +0000001122 00000 n +0000001394 00000 n +0000001414 00000 n +0000001690 00000 n +0000001710 00000 n +0000002062 00000 n +0000002414 00000 n +0000002766 00000 n +0000002907 00000 n +0000003211 00000 n +0000003628 00000 n +0000003649 00000 n +0000003876 00000 n +0000003896 00000 n +0000003977 00000 n +0000004394 00000 n +0000004415 00000 n +0000004642 00000 n +0000004662 00000 n +0000005079 00000 n +0000005100 00000 n +0000005327 00000 n +0000005347 00000 n +0000005555 00000 n +0000005575 00000 n +0000005820 00000 n +0000006026 00000 n +0000006168 00000 n +0000006310 00000 n +0000006452 00000 n +0000006617 00000 n +0000006697 00000 n +0000006740 00000 n +0000007671 00000 n +0000007715 00000 n +0000007775 00000 n +0000007794 00000 n +0000007868 00000 n +0000008130 00000 n +0000008150 00000 n +0000008394 00000 n +0000008414 00000 n +0000008659 00000 n +0000008679 00000 n +0000008925 00000 n +0000008945 00000 n +0000009192 00000 n +0000009212 00000 n +trailer << + /Root 1 0 R + /Size 57 + /ID [<31415926535897932384626433832795>] +>> +startxref +9250 +%%EOF diff --git a/qpdf/qtest/qpdf/annotations-rotated-270.pdf b/qpdf/qtest/qpdf/annotations-rotated-270.pdf new file mode 100644 index 00000000..b6da458c --- /dev/null +++ b/qpdf/qtest/qpdf/annotations-rotated-270.pdf @@ -0,0 +1,1052 @@ +%PDF-1.6 +%¿÷¢þ +%QDF-1.0 + +1 0 obj +<< + /AcroForm << + /DR 2 0 R + /Fields [ + 3 0 R + 4 0 R + 5 0 R + ] + >> + /Names << + /EmbeddedFiles 6 0 R + >> + /Pages 7 0 R + /Type /Catalog +>> +endobj + +2 0 obj +<< + /Font << + /F1 8 0 R + >> +>> +endobj + +3 0 obj +<< + /AP << + /N 9 0 R + >> + /DA (0 0.4 0 rg /F1 18 Tf) + /DR 2 0 R + /DV () + /FT /Tx + /Ff 0 + /Rect [ + 307.078 + 72 + 321.226 + 190.8 + ] + /Subtype /Widget + /T (Text Box 1) + /Type /Annot + /V (Formy field) +>> +endobj + +4 0 obj +<< + /AP << + /N 11 0 R + >> + /DA (0 0.4 0 rg /F1 18 Tf) + /DR 2 0 R + /DV () + /FT /Tx + /Ff 0 + /Rect [ + 321.626 + 372 + 461.226 + 386.148 + ] + /Subtype /Widget + /T (Text Box 1) + /Type /Annot + /V (Rot-ccw field) +>> +endobj + +5 0 obj +<< + /DV /1 + /FT /Btn + /Ff 49152 + /Kids [ + 13 0 R + 14 0 R + 15 0 R + ] + /T (r1) + /V /2 +>> +endobj + +6 0 obj +<< + /Names [ + (attachment1.txt) + 16 0 R + ] +>> +endobj + +7 0 obj +<< + /Count 1 + /Kids [ + 17 0 R + ] + /Type /Pages +>> +endobj + +8 0 obj +<< + /BaseFont /Courier + /Encoding /WinAnsiEncoding + /Subtype /Type1 + /Type /Font +>> +endobj + +9 0 obj +<< + /BBox [ + 0 + -2.826 + 118.8 + 11.322 + ] + /Matrix [ + 0 + 1 + -1 + 0 + 792 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 10 0 R +>> +stream +/Tx BMC +q +BT + /F1 18 Tf + (Formy field) Tj +ET +Q +EMC +endstream +endobj + +10 0 obj +53 +endobj + +11 0 obj +<< + /BBox [ + 0 + -2.826 + 140.4 + 11.322 + ] + /Matrix [ + -1 + 0 + -0 + -1 + 0 + 792 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 12 0 R +>> +stream +/Tx BMC +q +BT + /F1 18 Tf + (Rot-ccw field) Tj +ET +Q +EMC +endstream +endobj + +12 0 obj +55 +endobj + +13 0 obj +<< + /AP << + /N << + /1 18 0 R + /Off 20 0 R + >> + >> + /AS /1 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 22 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 5 0 R + /Rect [ + 131.451 + 152.749 + 143.499 + 164.801 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +14 0 obj +<< + /AP << + /N << + /2 23 0 R + /Off 25 0 R + >> + >> + /AS /2 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 22 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 5 0 R + /Rect [ + 152.651 + 152.749 + 164.699 + 164.801 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +15 0 obj +<< + /AP << + /N << + /3 27 0 R + /Off 29 0 R + >> + >> + /AS /3 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 22 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 5 0 R + /Rect [ + 173.451 + 151.399 + 185.499 + 163.451 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +16 0 obj +<< + /EF << + /F 31 0 R + /UF 31 0 R + >> + /F (attachment1.txt) + /Type /Filespec + /UF (attachment1.txt) +>> +endobj + +%% Page 1 +17 0 obj +<< + /Annots [ + 33 0 R + 3 0 R + 34 0 R + 4 0 R + 35 0 R + 36 0 R + 37 0 R + 38 0 R + 13 0 R + 14 0 R + 15 0 R + ] + /Contents [ + 39 0 R + 41 0 R + 43 0 R + ] + /MediaBox [ + 0 + 0 + 792 + 612 + ] + /Parent 7 0 R + /Resources 2 0 R + /Type /Page +>> +endobj + +18 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + 1 + -1 + 0 + 792 + 0 + ] + /Resources 45 0 R + /Subtype /Form + /Type /XObject + /Length 19 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +1 0 0 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +19 0 obj +202 +endobj + +20 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + 1 + -1 + 0 + 792 + 0 + ] + /Resources 45 0 R + /Subtype /Form + /Type /XObject + /Length 21 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +21 0 obj +12 +endobj + +22 0 obj +<< + /BaseFont /ZapfDingbats + /Subtype /Type1 + /Type /Font +>> +endobj + +23 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + 1 + -1 + 0 + 792 + 0 + ] + /Resources 45 0 R + /Subtype /Form + /Type /XObject + /Length 24 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +0 1 0 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +24 0 obj +202 +endobj + +25 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + 1 + -1 + 0 + 792 + 0 + ] + /Resources 45 0 R + /Subtype /Form + /Type /XObject + /Length 26 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +26 0 obj +12 +endobj + +27 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + 1 + -1 + 0 + 792 + 0 + ] + /Resources 45 0 R + /Subtype /Form + /Type /XObject + /Length 28 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +0 0 1 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +28 0 obj +202 +endobj + +29 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + 1 + -1 + 0 + 792 + 0 + ] + /Resources 45 0 R + /Subtype /Form + /Type /XObject + /Length 30 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +30 0 obj +12 +endobj + +31 0 obj +<< + /Params << + /CheckSum <80a33fc110b5a7b8b4d58b8d57e814bc> + /Size 22 + /Subtype /text#2fplain + >> + /Type /EmbeddedFile + /Length 32 0 R +>> +stream +content of attachment +endstream +endobj + +32 0 obj +22 +endobj + +33 0 obj +<< + /A << + /S /URI + /URI (https://www.qbilt.org/) + >> + /Border [ + 0 + 0 + .4 + ] + /C [ + .8 + .6 + .6 + ] + /H /I + /Rect [ + 271.304 + 72 + 290.168 + 374.4 + ] + /Subtype /Link + /Type /Annot +>> +endobj + +34 0 obj +<< + /AP << + /N 46 0 R + >> + /Contents (attachment1.txt) + /FS 16 0 R + /NM (attachment1.txt) + /Rect [ + 372 + 72 + 392 + 92 + ] + /Subtype /FileAttachment + /Type /Annot +>> +endobj + +35 0 obj +<< + /AP << + /N 48 0 R + >> + /DA () + /Rect [ + 432 + 72 + 442 + 92 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +36 0 obj +<< + /AP << + /N 50 0 R + >> + /DA () + /Rect [ + 422 + 102 + 442 + 112 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +37 0 obj +<< + /AP << + /N 52 0 R + >> + /DA () + /Rect [ + 432 + 122 + 442 + 142 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +38 0 obj +<< + /AP << + /N 54 0 R + >> + /DA () + /Rect [ + 422 + 152 + 442 + 162 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +%% Contents for page 1 +39 0 obj +<< + /Length 40 0 R +>> +stream +q +0 1 -1 0 792 0 cm +endstream +endobj + +40 0 obj +20 +endobj + +%% Contents for page 1 +41 0 obj +<< + /Length 42 0 R +>> +stream +q +1 1 .7 rg +.5 .5 0 RG +72 470.77 118.8 14.15 re +B +Q +q +0 .5 .5 RG +0 1 1 rg +372 330.77 14.15 139.4 re +B +Q +q +1 0 0 RG +72 310 20 10 re +72 310 5 10 re +S +0 1 0 RG +102 310 10 20 re +102 310 10 5 re +S +0 0 1 RG +122 310 20 10 re +137 310 5 10 re +S +0.5 0 1 RG +152 310 10 20 re +152 325 10 5 re +S +10 w +0.14 .33 .18 RG +5 5 602 782 re +S +Q +BT + /F1 16 Tf + 20.6 TL + 170 650 Td + (radio button 1) Tj + (radio button 2) ' + (radio button 3) ' + 1 0 0 1 72 546 Tm + /F1 20 Tf + (Thick green border surrounds page.) Tj + 0 -40 Td + /F1 24 Tf + 0 0 1 rg + (https://www.qbilt.org) Tj + /F1 12 Tf + 1 0 0 1 202 474 Tm + (<- Formy field in yellow) Tj + 1 0 0 1 392 410 Tm + 14.4 TL + (<- Rot-ccw field) Tj + (with "Rot" at bottom) ' + (and text going up) ' + 0 g + 1 0 0 1 102 405 Tm + (Arrow to the left points down.) Tj + 1 0 0 1 182 310 Tm + (<- Drawn rectangles appear below annotations.) Tj +ET +endstream +endobj + +42 0 obj +874 +endobj + +%% Contents for page 1 +43 0 obj +<< + /Length 44 0 R +>> +stream + +Q +endstream +endobj + +44 0 obj +3 +endobj + +45 0 obj +<< + /Font 56 0 R + /ProcSet [ + /PDF + /Text + ] +>> +endobj + +46 0 obj +<< + /BBox [ + 0 + 0 + 20 + 20 + ] + /Matrix [ + 0 + 1 + -1 + 0 + 792 + 0 + ] + /Resources << + >> + /Subtype /Form + /Type /XObject + /Length 47 0 R +>> +stream +0 10 m +10 0 l +20 10 l +10 0 m +10 20 l +0 0 20 20 re +S +endstream +endobj + +47 0 obj +52 +endobj + +48 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + 0 + 1 + -1 + 0 + 792 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 49 0 R +>> +stream +1 0 0 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +49 0 obj +36 +endobj + +50 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + -1 + 0 + -0 + -1 + 0 + 792 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 51 0 R +>> +stream +0 1 0 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +51 0 obj +36 +endobj + +52 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + 0 + -1 + 1 + -0 + -792 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 53 0 R +>> +stream +0 0 1 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +53 0 obj +36 +endobj + +54 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + 1 + 0 + 0 + 1 + 0 + -792 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 55 0 R +>> +stream +0.5 0 1 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +55 0 obj +38 +endobj + +56 0 obj +<< + /ZaDi 22 0 R +>> +endobj + +xref +0 57 +0000000000 65535 f +0000000025 00000 n +0000000211 00000 n +0000000263 00000 n +0000000506 00000 n +0000000755 00000 n +0000000874 00000 n +0000000944 00000 n +0000001017 00000 n +0000001121 00000 n +0000001390 00000 n +0000001410 00000 n +0000001684 00000 n +0000001704 00000 n +0000002056 00000 n +0000002408 00000 n +0000002760 00000 n +0000002901 00000 n +0000003205 00000 n +0000003619 00000 n +0000003640 00000 n +0000003864 00000 n +0000003884 00000 n +0000003965 00000 n +0000004379 00000 n +0000004400 00000 n +0000004624 00000 n +0000004644 00000 n +0000005058 00000 n +0000005079 00000 n +0000005303 00000 n +0000005323 00000 n +0000005531 00000 n +0000005551 00000 n +0000005795 00000 n +0000005999 00000 n +0000006139 00000 n +0000006281 00000 n +0000006423 00000 n +0000006588 00000 n +0000006665 00000 n +0000006708 00000 n +0000007639 00000 n +0000007683 00000 n +0000007743 00000 n +0000007762 00000 n +0000007836 00000 n +0000008095 00000 n +0000008115 00000 n +0000008356 00000 n +0000008376 00000 n +0000008619 00000 n +0000008639 00000 n +0000008882 00000 n +0000008902 00000 n +0000009145 00000 n +0000009165 00000 n +trailer << + /Root 1 0 R + /Size 57 + /ID [<31415926535897932384626433832795>] +>> +startxref +9203 +%%EOF diff --git a/qpdf/qtest/qpdf/annotations-rotated-90.pdf b/qpdf/qtest/qpdf/annotations-rotated-90.pdf new file mode 100644 index 00000000..767eae0e --- /dev/null +++ b/qpdf/qtest/qpdf/annotations-rotated-90.pdf @@ -0,0 +1,1052 @@ +%PDF-1.6 +%¿÷¢þ +%QDF-1.0 + +1 0 obj +<< + /AcroForm << + /DR 2 0 R + /Fields [ + 3 0 R + 4 0 R + 5 0 R + ] + >> + /Names << + /EmbeddedFiles 6 0 R + >> + /Pages 7 0 R + /Type /Catalog +>> +endobj + +2 0 obj +<< + /Font << + /F1 8 0 R + >> +>> +endobj + +3 0 obj +<< + /AP << + /N 9 0 R + >> + /DA (0 0.4 0 rg /F1 18 Tf) + /DR 2 0 R + /DV () + /FT /Tx + /Ff 0 + /Rect [ + 470.774 + 421.2 + 484.922 + 540 + ] + /Subtype /Widget + /T (Text Box 1) + /Type /Annot + /V (Formy field) +>> +endobj + +4 0 obj +<< + /AP << + /N 11 0 R + >> + /DA (0 0.4 0 rg /F1 18 Tf) + /DR 2 0 R + /DV () + /FT /Tx + /Ff 0 + /Rect [ + 330.774 + 225.852 + 470.374 + 240 + ] + /Subtype /Widget + /T (Text Box 1) + /Type /Annot + /V (Rot-ccw field) +>> +endobj + +5 0 obj +<< + /DV /1 + /FT /Btn + /Ff 49152 + /Kids [ + 13 0 R + 14 0 R + 15 0 R + ] + /T (r1) + /V /2 +>> +endobj + +6 0 obj +<< + /Names [ + (attachment1.txt) + 16 0 R + ] +>> +endobj + +7 0 obj +<< + /Count 1 + /Kids [ + 17 0 R + ] + /Type /Pages +>> +endobj + +8 0 obj +<< + /BaseFont /Courier + /Encoding /WinAnsiEncoding + /Subtype /Type1 + /Type /Font +>> +endobj + +9 0 obj +<< + /BBox [ + 0 + -2.826 + 118.8 + 11.322 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 10 0 R +>> +stream +/Tx BMC +q +BT + /F1 18 Tf + (Formy field) Tj +ET +Q +EMC +endstream +endobj + +10 0 obj +53 +endobj + +11 0 obj +<< + /BBox [ + 0 + -2.826 + 140.4 + 11.322 + ] + /Matrix [ + 1 + 0 + 0 + 1 + -612 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 12 0 R +>> +stream +/Tx BMC +q +BT + /F1 18 Tf + (Rot-ccw field) Tj +ET +Q +EMC +endstream +endobj + +12 0 obj +55 +endobj + +13 0 obj +<< + /AP << + /N << + /1 18 0 R + /Off 20 0 R + >> + >> + /AS /1 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 22 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 5 0 R + /Rect [ + 648.501 + 447.199 + 660.549 + 459.251 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +14 0 obj +<< + /AP << + /N << + /2 23 0 R + /Off 25 0 R + >> + >> + /AS /2 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 22 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 5 0 R + /Rect [ + 627.301 + 447.199 + 639.349 + 459.251 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +15 0 obj +<< + /AP << + /N << + /3 27 0 R + /Off 29 0 R + >> + >> + /AS /3 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 22 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 5 0 R + /Rect [ + 606.501 + 448.549 + 618.549 + 460.601 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +16 0 obj +<< + /EF << + /F 31 0 R + /UF 31 0 R + >> + /F (attachment1.txt) + /Type /Filespec + /UF (attachment1.txt) +>> +endobj + +%% Page 1 +17 0 obj +<< + /Annots [ + 33 0 R + 3 0 R + 34 0 R + 4 0 R + 35 0 R + 36 0 R + 37 0 R + 38 0 R + 13 0 R + 14 0 R + 15 0 R + ] + /Contents [ + 39 0 R + 41 0 R + 43 0 R + ] + /MediaBox [ + 0 + 0 + 792 + 612 + ] + /Parent 7 0 R + /Resources 2 0 R + /Type /Page +>> +endobj + +18 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 45 0 R + /Subtype /Form + /Type /XObject + /Length 19 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +1 0 0 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +19 0 obj +202 +endobj + +20 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 45 0 R + /Subtype /Form + /Type /XObject + /Length 21 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +21 0 obj +12 +endobj + +22 0 obj +<< + /BaseFont /ZapfDingbats + /Subtype /Type1 + /Type /Font +>> +endobj + +23 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 45 0 R + /Subtype /Form + /Type /XObject + /Length 24 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +0 1 0 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +24 0 obj +202 +endobj + +25 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 45 0 R + /Subtype /Form + /Type /XObject + /Length 26 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +26 0 obj +12 +endobj + +27 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 45 0 R + /Subtype /Form + /Type /XObject + /Length 28 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +0 0 1 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +28 0 obj +202 +endobj + +29 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 45 0 R + /Subtype /Form + /Type /XObject + /Length 30 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +30 0 obj +12 +endobj + +31 0 obj +<< + /Params << + /CheckSum <80a33fc110b5a7b8b4d58b8d57e814bc> + /Size 22 + /Subtype /text#2fplain + >> + /Type /EmbeddedFile + /Length 32 0 R +>> +stream +content of attachment +endstream +endobj + +32 0 obj +22 +endobj + +33 0 obj +<< + /A << + /S /URI + /URI (https://www.qbilt.org/) + >> + /Border [ + 0 + 0 + .4 + ] + /C [ + .8 + .6 + .6 + ] + /H /I + /Rect [ + 501.832 + 237.6 + 520.696 + 540 + ] + /Subtype /Link + /Type /Annot +>> +endobj + +34 0 obj +<< + /AP << + /N 46 0 R + >> + /Contents (attachment1.txt) + /FS 16 0 R + /NM (attachment1.txt) + /Rect [ + 400 + 520 + 420 + 540 + ] + /Subtype /FileAttachment + /Type /Annot +>> +endobj + +35 0 obj +<< + /AP << + /N 48 0 R + >> + /DA () + /Rect [ + 350 + 520 + 360 + 540 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +36 0 obj +<< + /AP << + /N 50 0 R + >> + /DA () + /Rect [ + 350 + 500 + 370 + 510 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +37 0 obj +<< + /AP << + /N 52 0 R + >> + /DA () + /Rect [ + 350 + 470 + 360 + 490 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +38 0 obj +<< + /AP << + /N 54 0 R + >> + /DA () + /Rect [ + 350 + 450 + 370 + 460 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +%% Contents for page 1 +39 0 obj +<< + /Length 40 0 R +>> +stream +q +0 -1 1 0 0 612 cm +endstream +endobj + +40 0 obj +20 +endobj + +%% Contents for page 1 +41 0 obj +<< + /Length 42 0 R +>> +stream +q +1 1 .7 rg +.5 .5 0 RG +72 470.77 118.8 14.15 re +B +Q +q +0 .5 .5 RG +0 1 1 rg +372 330.77 14.15 139.4 re +B +Q +q +1 0 0 RG +72 310 20 10 re +72 310 5 10 re +S +0 1 0 RG +102 310 10 20 re +102 310 10 5 re +S +0 0 1 RG +122 310 20 10 re +137 310 5 10 re +S +0.5 0 1 RG +152 310 10 20 re +152 325 10 5 re +S +10 w +0.14 .33 .18 RG +5 5 602 782 re +S +Q +BT + /F1 16 Tf + 20.6 TL + 170 650 Td + (radio button 1) Tj + (radio button 2) ' + (radio button 3) ' + 1 0 0 1 72 546 Tm + /F1 20 Tf + (Thick green border surrounds page.) Tj + 0 -40 Td + /F1 24 Tf + 0 0 1 rg + (https://www.qbilt.org) Tj + /F1 12 Tf + 1 0 0 1 202 474 Tm + (<- Formy field in yellow) Tj + 1 0 0 1 392 410 Tm + 14.4 TL + (<- Rot-ccw field) Tj + (with "Rot" at bottom) ' + (and text going up) ' + 0 g + 1 0 0 1 102 405 Tm + (Arrow to the left points down.) Tj + 1 0 0 1 182 310 Tm + (<- Drawn rectangles appear below annotations.) Tj +ET +endstream +endobj + +42 0 obj +874 +endobj + +%% Contents for page 1 +43 0 obj +<< + /Length 44 0 R +>> +stream + +Q +endstream +endobj + +44 0 obj +3 +endobj + +45 0 obj +<< + /Font 56 0 R + /ProcSet [ + /PDF + /Text + ] +>> +endobj + +46 0 obj +<< + /BBox [ + 0 + 0 + 20 + 20 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources << + >> + /Subtype /Form + /Type /XObject + /Length 47 0 R +>> +stream +0 10 m +10 0 l +20 10 l +10 0 m +10 20 l +0 0 20 20 re +S +endstream +endobj + +47 0 obj +52 +endobj + +48 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 49 0 R +>> +stream +1 0 0 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +49 0 obj +36 +endobj + +50 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + 1 + 0 + 0 + 1 + -612 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 51 0 R +>> +stream +0 1 0 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +51 0 obj +36 +endobj + +52 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + -0 + 1 + -1 + 0 + 0 + -612 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 53 0 R +>> +stream +0 0 1 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +53 0 obj +36 +endobj + +54 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + -1 + -0 + 0 + -1 + 612 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 55 0 R +>> +stream +0.5 0 1 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +55 0 obj +38 +endobj + +56 0 obj +<< + /ZaDi 22 0 R +>> +endobj + +xref +0 57 +0000000000 65535 f +0000000025 00000 n +0000000211 00000 n +0000000263 00000 n +0000000507 00000 n +0000000756 00000 n +0000000875 00000 n +0000000945 00000 n +0000001018 00000 n +0000001122 00000 n +0000001391 00000 n +0000001411 00000 n +0000001683 00000 n +0000001703 00000 n +0000002055 00000 n +0000002407 00000 n +0000002759 00000 n +0000002900 00000 n +0000003204 00000 n +0000003618 00000 n +0000003639 00000 n +0000003863 00000 n +0000003883 00000 n +0000003964 00000 n +0000004378 00000 n +0000004399 00000 n +0000004623 00000 n +0000004643 00000 n +0000005057 00000 n +0000005078 00000 n +0000005302 00000 n +0000005322 00000 n +0000005530 00000 n +0000005550 00000 n +0000005795 00000 n +0000006001 00000 n +0000006143 00000 n +0000006285 00000 n +0000006427 00000 n +0000006592 00000 n +0000006669 00000 n +0000006712 00000 n +0000007643 00000 n +0000007687 00000 n +0000007747 00000 n +0000007766 00000 n +0000007840 00000 n +0000008099 00000 n +0000008119 00000 n +0000008360 00000 n +0000008380 00000 n +0000008621 00000 n +0000008641 00000 n +0000008884 00000 n +0000008904 00000 n +0000009149 00000 n +0000009169 00000 n +trailer << + /Root 1 0 R + /Size 57 + /ID [<31415926535897932384626433832795>] +>> +startxref +9207 +%%EOF diff --git a/qpdf/qtest/qpdf/form-fields-and-annotations-shared.pdf b/qpdf/qtest/qpdf/form-fields-and-annotations-shared.pdf new file mode 100644 index 00000000..56b102c6 --- /dev/null +++ b/qpdf/qtest/qpdf/form-fields-and-annotations-shared.pdf @@ -0,0 +1,1132 @@ +%PDF-1.6 +%¿÷¢þ +%QDF-1.0 + +1 0 obj +<< + /AcroForm << + /DR 2 0 R + /Fields [ + 3 0 R + 4 0 R + 5 0 R + 6 0 R + 7 0 R + ] + >> + /Names << + /EmbeddedFiles 8 0 R + >> + /Pages 9 0 R + /Type /Catalog +>> +endobj + +2 0 obj +<< + /Font << + /F1 10 0 R + >> +>> +endobj + +3 0 obj +<< + /AP << + /N 11 0 R + >> + /DA (0 0.4 0 rg /F1 18 Tf) + /DR 2 0 R + /DV () + /FT /Tx + /Ff 0 + /Rect [ + 72 + 470.774 + 190.8 + 484.922 + ] + /Subtype /Widget + /T (Text Box 1) + /Type /Annot + /V (Formy field) +>> +endobj + +4 0 obj +<< + /AP << + /N 13 0 R + >> + /DA (0 0.4 0 rg /F1 18 Tf) + /DR 2 0 R + /DV () + /FT /Tx + /Ff 0 + /Rect [ + 372 + 330.774 + 386.148 + 470.374 + ] + /Subtype /Widget + /T (Text Box 1) + /Type /Annot + /V (Rot-ccw field) +>> +endobj + +5 0 obj +<< + /AP << + /N 11 0 R + >> + /DA (0 0.4 0 rg /F1 18 Tf) + /DR 2 0 R + /DV () + /FT /Tx + /Ff 0 + /Rect [ + 72 + 470.774 + 190.8 + 484.922 + ] + /Subtype /Widget + /T (Text Box 1) + /Type /Annot + /V (Formy field) +>> +endobj + +6 0 obj +<< + /AP << + /N 13 0 R + >> + /DA (0 0.4 0 rg /F1 18 Tf) + /DR 2 0 R + /DV () + /FT /Tx + /Ff 0 + /Rect [ + 372 + 330.774 + 386.148 + 470.374 + ] + /Subtype /Widget + /T (Text Box 1) + /Type /Annot + /V (Rot-ccw field) +>> +endobj + +7 0 obj +<< + /DV /1 + /FT /Btn + /Ff 49152 + /Kids [ + 15 0 R + 16 0 R + 17 0 R + ] + /T (r1) + /V /2 +>> +endobj + +8 0 obj +<< + /Names [ + (attachment1.txt) + 18 0 R + ] +>> +endobj + +9 0 obj +<< + /Count 4 + /Kids [ + 19 0 R + 20 0 R + 21 0 R + 22 0 R + ] + /Type /Pages +>> +endobj + +10 0 obj +<< + /BaseFont /Courier + /Encoding /WinAnsiEncoding + /Subtype /Type1 + /Type /Font +>> +endobj + +11 0 obj +<< + /BBox [ + 0 + -2.826 + 118.8 + 11.322 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 12 0 R +>> +stream +/Tx BMC +q +BT + /F1 18 Tf + (Formy field) Tj +ET +Q +EMC +endstream +endobj + +12 0 obj +53 +endobj + +13 0 obj +<< + /BBox [ + 0 + -2.826 + 140.4 + 11.322 + ] + /Matrix [ + 0 + 1 + -1 + 0 + 0 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 14 0 R +>> +stream +/Tx BMC +q +BT + /F1 18 Tf + (Rot-ccw field) Tj +ET +Q +EMC +endstream +endobj + +14 0 obj +55 +endobj + +15 0 obj +<< + /AP << + /N << + /1 23 0 R + /Off 25 0 R + >> + >> + /AS /1 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 27 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 7 0 R + /Rect [ + 152.749 + 648.501 + 164.801 + 660.549 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +16 0 obj +<< + /AP << + /N << + /2 28 0 R + /Off 30 0 R + >> + >> + /AS /2 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 27 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 7 0 R + /Rect [ + 152.749 + 627.301 + 164.801 + 639.349 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +17 0 obj +<< + /AP << + /N << + /3 32 0 R + /Off 34 0 R + >> + >> + /AS /3 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 27 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 7 0 R + /Rect [ + 151.399 + 606.501 + 163.451 + 618.549 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +18 0 obj +<< + /EF << + /F 36 0 R + /UF 36 0 R + >> + /F (attachment1.txt) + /Type /Filespec + /UF (attachment1.txt) +>> +endobj + +%% Page 1 +19 0 obj +<< + /Annots [ + 38 0 R + 3 0 R + 39 0 R + 4 0 R + 40 0 R + 41 0 R + 42 0 R + 43 0 R + 15 0 R + 16 0 R + 17 0 R + ] + /Contents 44 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 9 0 R + /Resources 2 0 R + /Type /Page +>> +endobj + +%% Page 2 +20 0 obj +<< + /Annots [ + 38 0 R + 39 0 R + 40 0 R + 41 0 R + 42 0 R + 43 0 R + 5 0 R + 6 0 R + 15 0 R + 16 0 R + 17 0 R + ] + /Contents 46 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 9 0 R + /Resources << + /Font << + /F1 48 0 R + >> + /ProcSet 49 0 R + >> + /Type /Page +>> +endobj + +%% Page 3 +21 0 obj +<< + /Annots 50 0 R + /Contents 46 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 9 0 R + /Resources << + /Font << + /F1 48 0 R + >> + /ProcSet 49 0 R + >> + /Type /Page +>> +endobj + +%% Page 4 +22 0 obj +<< + /Annots 50 0 R + /Contents 46 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 9 0 R + /Resources << + /Font << + /F1 48 0 R + >> + /ProcSet 49 0 R + >> + /Type /Page +>> +endobj + +23 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 51 0 R + /Subtype /Form + /Type /XObject + /Length 24 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +1 0 0 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +24 0 obj +202 +endobj + +25 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 51 0 R + /Subtype /Form + /Type /XObject + /Length 26 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +26 0 obj +12 +endobj + +27 0 obj +<< + /BaseFont /ZapfDingbats + /Subtype /Type1 + /Type /Font +>> +endobj + +28 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 51 0 R + /Subtype /Form + /Type /XObject + /Length 29 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +0 1 0 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +29 0 obj +202 +endobj + +30 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 51 0 R + /Subtype /Form + /Type /XObject + /Length 31 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +31 0 obj +12 +endobj + +32 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 51 0 R + /Subtype /Form + /Type /XObject + /Length 33 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +0 0 1 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +33 0 obj +202 +endobj + +34 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 51 0 R + /Subtype /Form + /Type /XObject + /Length 35 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +35 0 obj +12 +endobj + +36 0 obj +<< + /Params << + /CheckSum <80a33fc110b5a7b8b4d58b8d57e814bc> + /Size 22 + /Subtype /text#2fplain + >> + /Type /EmbeddedFile + /Length 37 0 R +>> +stream +content of attachment +endstream +endobj + +37 0 obj +22 +endobj + +38 0 obj +<< + /A << + /S /URI + /URI (https://www.qbilt.org/) + >> + /Border [ + 0 + 0 + .4 + ] + /C [ + .8 + .6 + .6 + ] + /H /I + /Rect [ + 72 + 501.832 + 374.4 + 520.696 + ] + /Subtype /Link + /Type /Annot +>> +endobj + +39 0 obj +<< + /AP << + /N 52 0 R + >> + /Contents (attachment1.txt) + /FS 18 0 R + /NM (attachment1.txt) + /Rect [ + 72 + 400 + 92 + 420 + ] + /Subtype /FileAttachment + /Type /Annot +>> +endobj + +40 0 obj +<< + /AP << + /N 54 0 R + >> + /DA () + /Rect [ + 72 + 350 + 92 + 360 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +41 0 obj +<< + /AP << + /N 56 0 R + >> + /DA () + /Rect [ + 102 + 350 + 112 + 370 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +42 0 obj +<< + /AP << + /N 58 0 R + >> + /DA () + /Rect [ + 122 + 350 + 142 + 360 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +43 0 obj +<< + /AP << + /N 60 0 R + >> + /DA () + /Rect [ + 152 + 350 + 162 + 370 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +%% Contents for page 1 +44 0 obj +<< + /Length 45 0 R +>> +stream +q +1 1 .7 rg +.5 .5 0 RG +72 470.77 118.8 14.15 re +B +Q +q +0 .5 .5 RG +0 1 1 rg +372 330.77 14.15 139.4 re +B +Q +q +1 0 0 RG +72 310 20 10 re +72 310 5 10 re +S +0 1 0 RG +102 310 10 20 re +102 310 10 5 re +S +0 0 1 RG +122 310 20 10 re +137 310 5 10 re +S +0.5 0 1 RG +152 310 10 20 re +152 325 10 5 re +S +10 w +0.14 .33 .18 RG +5 5 602 782 re +S +Q +BT + /F1 16 Tf + 20.6 TL + 170 650 Td + (radio button 1) Tj + (radio button 2) ' + (radio button 3) ' + 1 0 0 1 72 546 Tm + /F1 20 Tf + (Thick green border surrounds page.) Tj + 0 -40 Td + /F1 24 Tf + 0 0 1 rg + (https://www.qbilt.org) Tj + /F1 12 Tf + 1 0 0 1 202 474 Tm + (<- Formy field in yellow) Tj + 1 0 0 1 392 410 Tm + 14.4 TL + (<- Rot-ccw field) Tj + (with "Rot" at bottom) ' + (and text going up) ' + 0 g + 1 0 0 1 102 405 Tm + (Arrow to the left points down.) Tj + 1 0 0 1 182 310 Tm + (<- Drawn rectangles appear below annotations.) Tj +ET +endstream +endobj + +45 0 obj +874 +endobj + +%% Contents for page 4 +46 0 obj +<< + /Length 47 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato) Tj +ET +endstream +endobj + +47 0 obj +44 +endobj + +48 0 obj +<< + /BaseFont /Helvetica + /Encoding /WinAnsiEncoding + /Name /F1 + /Subtype /Type1 + /Type /Font +>> +endobj + +49 0 obj +[ + /PDF + /Text +] +endobj + +50 0 obj +[ + 38 0 R + 39 0 R + 40 0 R + 41 0 R + 42 0 R + 43 0 R + 5 0 R + 6 0 R + 15 0 R + 16 0 R + 17 0 R +] +endobj + +51 0 obj +<< + /Font 62 0 R + /ProcSet [ + /PDF + /Text + ] +>> +endobj + +52 0 obj +<< + /BBox [ + 0 + 0 + 20 + 20 + ] + /Resources << + >> + /Subtype /Form + /Type /XObject + /Length 53 0 R +>> +stream +0 10 m +10 0 l +20 10 l +10 0 m +10 20 l +0 0 20 20 re +S +endstream +endobj + +53 0 obj +52 +endobj + +54 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 55 0 R +>> +stream +1 0 0 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +55 0 obj +36 +endobj + +56 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + 0 + 1 + -1 + 0 + 0 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 57 0 R +>> +stream +0 1 0 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +57 0 obj +36 +endobj + +58 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + -1 + 0 + 0 + -1 + 0 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 59 0 R +>> +stream +0 0 1 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +59 0 obj +36 +endobj + +60 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 61 0 R +>> +stream +0.5 0 1 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +61 0 obj +38 +endobj + +62 0 obj +<< + /ZaDi 27 0 R +>> +endobj + +xref +0 63 +0000000000 65535 f +0000000025 00000 n +0000000235 00000 n +0000000288 00000 n +0000000532 00000 n +0000000781 00000 n +0000001025 00000 n +0000001274 00000 n +0000001393 00000 n +0000001463 00000 n +0000001569 00000 n +0000001674 00000 n +0000001889 00000 n +0000001909 00000 n +0000002179 00000 n +0000002199 00000 n +0000002551 00000 n +0000002903 00000 n +0000003255 00000 n +0000003396 00000 n +0000003678 00000 n +0000004019 00000 n +0000004242 00000 n +0000004455 00000 n +0000004814 00000 n +0000004835 00000 n +0000005004 00000 n +0000005024 00000 n +0000005105 00000 n +0000005464 00000 n +0000005485 00000 n +0000005654 00000 n +0000005674 00000 n +0000006033 00000 n +0000006054 00000 n +0000006223 00000 n +0000006243 00000 n +0000006451 00000 n +0000006471 00000 n +0000006715 00000 n +0000006919 00000 n +0000007059 00000 n +0000007201 00000 n +0000007343 00000 n +0000007508 00000 n +0000008439 00000 n +0000008483 00000 n +0000008584 00000 n +0000008604 00000 n +0000008723 00000 n +0000008759 00000 n +0000008877 00000 n +0000008951 00000 n +0000009155 00000 n +0000009175 00000 n +0000009361 00000 n +0000009381 00000 n +0000009620 00000 n +0000009640 00000 n +0000009880 00000 n +0000009900 00000 n +0000010141 00000 n +0000010161 00000 n +trailer << + /Root 1 0 R + /Size 63 + /ID [<2af5c3b45c6e23a702a8d1dab51fe6b8>] +>> +startxref +10199 +%%EOF diff --git a/qpdf/qtest/qpdf/form-fields-and-annotations.pdf b/qpdf/qtest/qpdf/form-fields-and-annotations.pdf new file mode 100644 index 00000000..118363d7 --- /dev/null +++ b/qpdf/qtest/qpdf/form-fields-and-annotations.pdf @@ -0,0 +1,942 @@ +%PDF-1.6 +%¿÷¢þ +%QDF-1.0 + +1 0 obj +<< + /AcroForm << + /DR 2 0 R + /Fields [ + 3 0 R + 4 0 R + 5 0 R + ] + >> + /Names << + /EmbeddedFiles 6 0 R + >> + /Pages 7 0 R + /Type /Catalog +>> +endobj + +2 0 obj +<< + /Font << + /F1 8 0 R + >> +>> +endobj + +3 0 obj +<< + /AP << + /N 9 0 R + >> + /DA (0 0.4 0 rg /F1 18 Tf) + /DR 2 0 R + /DV () + /FT /Tx + /Ff 0 + /Rect [ + 72 + 470.774 + 190.8 + 484.922 + ] + /Subtype /Widget + /T (Text Box 1) + /Type /Annot + /V (Formy field) +>> +endobj + +4 0 obj +<< + /AP << + /N 11 0 R + >> + /DA (0 0.4 0 rg /F1 18 Tf) + /DR 2 0 R + /DV () + /FT /Tx + /Ff 0 + /Rect [ + 372 + 330.774 + 386.148 + 470.374 + ] + /Subtype /Widget + /T (Text Box 1) + /Type /Annot + /V (Rot-ccw field) +>> +endobj + +5 0 obj +<< + /DV /1 + /FT /Btn + /Ff 49152 + /Kids [ + 13 0 R + 14 0 R + 15 0 R + ] + /T (r1) + /V /2 +>> +endobj + +6 0 obj +<< + /Names [ + (attachment1.txt) + 16 0 R + ] +>> +endobj + +7 0 obj +<< + /Count 1 + /Kids [ + 17 0 R + ] + /Type /Pages +>> +endobj + +8 0 obj +<< + /BaseFont /Courier + /Encoding /WinAnsiEncoding + /Subtype /Type1 + /Type /Font +>> +endobj + +9 0 obj +<< + /BBox [ + 0 + -2.826 + 118.8 + 11.322 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 10 0 R +>> +stream +/Tx BMC +q +BT + /F1 18 Tf + (Formy field) Tj +ET +Q +EMC +endstream +endobj + +10 0 obj +53 +endobj + +11 0 obj +<< + /BBox [ + 0 + -2.826 + 140.4 + 11.322 + ] + /Matrix [ + 0 + 1 + -1 + 0 + 0 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 12 0 R +>> +stream +/Tx BMC +q +BT + /F1 18 Tf + (Rot-ccw field) Tj +ET +Q +EMC +endstream +endobj + +12 0 obj +55 +endobj + +13 0 obj +<< + /AP << + /N << + /1 18 0 R + /Off 20 0 R + >> + >> + /AS /1 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 22 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 5 0 R + /Rect [ + 152.749 + 648.501 + 164.801 + 660.549 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +14 0 obj +<< + /AP << + /N << + /2 23 0 R + /Off 25 0 R + >> + >> + /AS /2 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 22 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 5 0 R + /Rect [ + 152.749 + 627.301 + 164.801 + 639.349 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +15 0 obj +<< + /AP << + /N << + /3 27 0 R + /Off 29 0 R + >> + >> + /AS /3 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 22 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 5 0 R + /Rect [ + 151.399 + 606.501 + 163.451 + 618.549 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +16 0 obj +<< + /EF << + /F 31 0 R + /UF 31 0 R + >> + /F (attachment1.txt) + /Type /Filespec + /UF (attachment1.txt) +>> +endobj + +%% Page 1 +17 0 obj +<< + /Annots [ + 33 0 R + 3 0 R + 34 0 R + 4 0 R + 35 0 R + 36 0 R + 37 0 R + 38 0 R + 13 0 R + 14 0 R + 15 0 R + ] + /Contents 39 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 7 0 R + /Resources 2 0 R + /Type /Page +>> +endobj + +18 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 41 0 R + /Subtype /Form + /Type /XObject + /Length 19 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +1 0 0 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +19 0 obj +202 +endobj + +20 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 41 0 R + /Subtype /Form + /Type /XObject + /Length 21 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +21 0 obj +12 +endobj + +22 0 obj +<< + /BaseFont /ZapfDingbats + /Subtype /Type1 + /Type /Font +>> +endobj + +23 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 41 0 R + /Subtype /Form + /Type /XObject + /Length 24 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +0 1 0 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +24 0 obj +202 +endobj + +25 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 41 0 R + /Subtype /Form + /Type /XObject + /Length 26 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +26 0 obj +12 +endobj + +27 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 41 0 R + /Subtype /Form + /Type /XObject + /Length 28 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +0 0 1 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +28 0 obj +202 +endobj + +29 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 41 0 R + /Subtype /Form + /Type /XObject + /Length 30 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +30 0 obj +12 +endobj + +31 0 obj +<< + /Params << + /CheckSum <80a33fc110b5a7b8b4d58b8d57e814bc> + /Size 22 + /Subtype /text#2fplain + >> + /Type /EmbeddedFile + /Length 32 0 R +>> +stream +content of attachment +endstream +endobj + +32 0 obj +22 +endobj + +33 0 obj +<< + /A << + /S /URI + /URI (https://www.qbilt.org/) + >> + /Border [ + 0 + 0 + .4 + ] + /C [ + .8 + .6 + .6 + ] + /H /I + /Rect [ + 72 + 501.832 + 374.4 + 520.696 + ] + /Subtype /Link + /Type /Annot +>> +endobj + +34 0 obj +<< + /AP << + /N 42 0 R + >> + /Contents (attachment1.txt) + /FS 16 0 R + /NM (attachment1.txt) + /Rect [ + 72 + 400 + 92 + 420 + ] + /Subtype /FileAttachment + /Type /Annot +>> +endobj + +35 0 obj +<< + /AP << + /N 44 0 R + >> + /DA () + /Rect [ + 72 + 350 + 92 + 360 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +36 0 obj +<< + /AP << + /N 46 0 R + >> + /DA () + /Rect [ + 102 + 350 + 112 + 370 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +37 0 obj +<< + /AP << + /N 48 0 R + >> + /DA () + /Rect [ + 122 + 350 + 142 + 360 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +38 0 obj +<< + /AP << + /N 50 0 R + >> + /DA () + /Rect [ + 152 + 350 + 162 + 370 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +%% Contents for page 1 +39 0 obj +<< + /Length 40 0 R +>> +stream +q +1 1 .7 rg +.5 .5 0 RG +72 470.77 118.8 14.15 re +B +Q +q +0 .5 .5 RG +0 1 1 rg +372 330.77 14.15 139.4 re +B +Q +q +1 0 0 RG +72 310 20 10 re +72 310 5 10 re +S +0 1 0 RG +102 310 10 20 re +102 310 10 5 re +S +0 0 1 RG +122 310 20 10 re +137 310 5 10 re +S +0.5 0 1 RG +152 310 10 20 re +152 325 10 5 re +S +10 w +0.14 .33 .18 RG +5 5 602 782 re +S +Q +BT + /F1 16 Tf + 20.6 TL + 170 650 Td + (radio button 1) Tj + (radio button 2) ' + (radio button 3) ' + 1 0 0 1 72 546 Tm + /F1 20 Tf + (Thick green border surrounds page.) Tj + 0 -40 Td + /F1 24 Tf + 0 0 1 rg + (https://www.qbilt.org) Tj + /F1 12 Tf + 1 0 0 1 202 474 Tm + (<- Formy field in yellow) Tj + 1 0 0 1 392 410 Tm + 14.4 TL + (<- Rot-ccw field) Tj + (with "Rot" at bottom) ' + (and text going up) ' + 0 g + 1 0 0 1 102 405 Tm + (Arrow to the left points down.) Tj + 1 0 0 1 182 310 Tm + (<- Drawn rectangles appear below annotations.) Tj +ET +endstream +endobj + +40 0 obj +874 +endobj + +41 0 obj +<< + /Font 52 0 R + /ProcSet [ + /PDF + /Text + ] +>> +endobj + +42 0 obj +<< + /BBox [ + 0 + 0 + 20 + 20 + ] + /Resources << + >> + /Subtype /Form + /Type /XObject + /Length 43 0 R +>> +stream +0 10 m +10 0 l +20 10 l +10 0 m +10 20 l +0 0 20 20 re +S +endstream +endobj + +43 0 obj +52 +endobj + +44 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 45 0 R +>> +stream +1 0 0 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +45 0 obj +36 +endobj + +46 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + 0 + 1 + -1 + 0 + 0 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 47 0 R +>> +stream +0 1 0 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +47 0 obj +36 +endobj + +48 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + -1 + 0 + 0 + -1 + 0 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 49 0 R +>> +stream +0 0 1 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +49 0 obj +36 +endobj + +50 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 51 0 R +>> +stream +0.5 0 1 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +51 0 obj +38 +endobj + +52 0 obj +<< + /ZaDi 22 0 R +>> +endobj + +xref +0 53 +0000000000 65535 f +0000000025 00000 n +0000000211 00000 n +0000000263 00000 n +0000000506 00000 n +0000000755 00000 n +0000000874 00000 n +0000000944 00000 n +0000001017 00000 n +0000001121 00000 n +0000001335 00000 n +0000001355 00000 n +0000001625 00000 n +0000001645 00000 n +0000001997 00000 n +0000002349 00000 n +0000002701 00000 n +0000002842 00000 n +0000003114 00000 n +0000003473 00000 n +0000003494 00000 n +0000003663 00000 n +0000003683 00000 n +0000003764 00000 n +0000004123 00000 n +0000004144 00000 n +0000004313 00000 n +0000004333 00000 n +0000004692 00000 n +0000004713 00000 n +0000004882 00000 n +0000004902 00000 n +0000005110 00000 n +0000005130 00000 n +0000005374 00000 n +0000005578 00000 n +0000005718 00000 n +0000005860 00000 n +0000006002 00000 n +0000006167 00000 n +0000007098 00000 n +0000007119 00000 n +0000007193 00000 n +0000007397 00000 n +0000007417 00000 n +0000007603 00000 n +0000007623 00000 n +0000007862 00000 n +0000007882 00000 n +0000008122 00000 n +0000008142 00000 n +0000008383 00000 n +0000008403 00000 n +trailer << + /Root 1 0 R + /Size 53 + /ID [<7b639c67bfc16b5e891fa5468aac3a14>] +>> +startxref +8441 +%%EOF diff --git a/qpdf/qtest/qpdf/rotated-shared-annotations-1.pdf b/qpdf/qtest/qpdf/rotated-shared-annotations-1.pdf new file mode 100644 index 00000000..4c6d88d1 --- /dev/null +++ b/qpdf/qtest/qpdf/rotated-shared-annotations-1.pdf @@ -0,0 +1,1894 @@ +%PDF-1.6 +%¿÷¢þ +%QDF-1.0 + +1 0 obj +<< + /AcroForm << + /DR 2 0 R + /Fields [ + 3 0 R + 4 0 R + 5 0 R + 6 0 R + 7 0 R + ] + >> + /Names << + /EmbeddedFiles 8 0 R + >> + /Pages 9 0 R + /Type /Catalog +>> +endobj + +2 0 obj +<< + /Font << + /F1 10 0 R + >> +>> +endobj + +3 0 obj +<< + /AP << + /N 11 0 R + >> + /DA (0 0.4 0 rg /F1 18 Tf) + /DR 2 0 R + /DV () + /FT /Tx + /Ff 0 + /Rect [ + 72 + 470.774 + 190.8 + 484.922 + ] + /Subtype /Widget + /T (Text Box 1) + /Type /Annot + /V (Formy field) +>> +endobj + +4 0 obj +<< + /AP << + /N 13 0 R + >> + /DA (0 0.4 0 rg /F1 18 Tf) + /DR 2 0 R + /DV () + /FT /Tx + /Ff 0 + /Rect [ + 372 + 330.774 + 386.148 + 470.374 + ] + /Subtype /Widget + /T (Text Box 1) + /Type /Annot + /V (Rot-ccw field) +>> +endobj + +5 0 obj +<< + /AP << + /N 15 0 R + >> + /DA (0 0.4 0 rg /F1 18 Tf) + /DR 2 0 R + /DV () + /FT /Tx + /Ff 0 + /Rect [ + 470.774 + 421.2 + 484.922 + 540 + ] + /Subtype /Widget + /T (Text Box 1) + /Type /Annot + /V (Formy field) +>> +endobj + +6 0 obj +<< + /AP << + /N 17 0 R + >> + /DA (0 0.4 0 rg /F1 18 Tf) + /DR 2 0 R + /DV () + /FT /Tx + /Ff 0 + /Rect [ + 330.774 + 225.852 + 470.374 + 240 + ] + /Subtype /Widget + /T (Text Box 1) + /Type /Annot + /V (Rot-ccw field) +>> +endobj + +7 0 obj +<< + /DV /1 + /FT /Btn + /Ff 49152 + /Kids [ + 19 0 R + 20 0 R + 21 0 R + ] + /T (r1) + /V /2 +>> +endobj + +8 0 obj +<< + /Names [ + (attachment1.txt) + 22 0 R + ] +>> +endobj + +9 0 obj +<< + /Count 4 + /Kids [ + 23 0 R + 24 0 R + 25 0 R + 26 0 R + ] + /Type /Pages +>> +endobj + +10 0 obj +<< + /BaseFont /Courier + /Encoding /WinAnsiEncoding + /Subtype /Type1 + /Type /Font +>> +endobj + +11 0 obj +<< + /BBox [ + 0 + -2.826 + 118.8 + 11.322 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 12 0 R +>> +stream +/Tx BMC +q +BT + /F1 18 Tf + (Formy field) Tj +ET +Q +EMC +endstream +endobj + +12 0 obj +53 +endobj + +13 0 obj +<< + /BBox [ + 0 + -2.826 + 140.4 + 11.322 + ] + /Matrix [ + 0 + 1 + -1 + 0 + 0 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 14 0 R +>> +stream +/Tx BMC +q +BT + /F1 18 Tf + (Rot-ccw field) Tj +ET +Q +EMC +endstream +endobj + +14 0 obj +55 +endobj + +15 0 obj +<< + /BBox [ + 0 + -2.826 + 118.8 + 11.322 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 16 0 R +>> +stream +/Tx BMC +q +BT + /F1 18 Tf + (Formy field) Tj +ET +Q +EMC +endstream +endobj + +16 0 obj +53 +endobj + +17 0 obj +<< + /BBox [ + 0 + -2.826 + 140.4 + 11.322 + ] + /Matrix [ + 1 + 0 + 0 + 1 + -612 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 18 0 R +>> +stream +/Tx BMC +q +BT + /F1 18 Tf + (Rot-ccw field) Tj +ET +Q +EMC +endstream +endobj + +18 0 obj +55 +endobj + +19 0 obj +<< + /AP << + /N << + /1 27 0 R + /Off 29 0 R + >> + >> + /AS /1 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 31 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 7 0 R + /Rect [ + 648.501 + 447.199 + 660.549 + 459.251 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +20 0 obj +<< + /AP << + /N << + /2 32 0 R + /Off 34 0 R + >> + >> + /AS /2 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 31 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 7 0 R + /Rect [ + 627.301 + 447.199 + 639.349 + 459.251 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +21 0 obj +<< + /AP << + /N << + /3 36 0 R + /Off 38 0 R + >> + >> + /AS /3 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 31 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 7 0 R + /Rect [ + 606.501 + 448.549 + 618.549 + 460.601 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +22 0 obj +<< + /EF << + /F 40 0 R + /UF 40 0 R + >> + /F (attachment1.txt) + /Type /Filespec + /UF (attachment1.txt) +>> +endobj + +%% Page 1 +23 0 obj +<< + /Annots [ + 42 0 R + 5 0 R + 43 0 R + 6 0 R + 44 0 R + 45 0 R + 46 0 R + 47 0 R + 19 0 R + 20 0 R + 21 0 R + ] + /Contents [ + 48 0 R + 50 0 R + 52 0 R + ] + /MediaBox [ + 0 + 0 + 792 + 612 + ] + /Parent 9 0 R + /Resources 2 0 R + /Type /Page +>> +endobj + +%% Page 2 +24 0 obj +<< + /Annots [ + 54 0 R + 55 0 R + 56 0 R + 57 0 R + 58 0 R + 59 0 R + 3 0 R + 4 0 R + 60 0 R + 61 0 R + 62 0 R + ] + /Contents 63 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 9 0 R + /Resources << + /Font << + /F1 65 0 R + >> + /ProcSet 66 0 R + >> + /Type /Page +>> +endobj + +%% Page 3 +25 0 obj +<< + /Annots 67 0 R + /Contents 63 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 9 0 R + /Resources << + /Font << + /F1 65 0 R + >> + /ProcSet 66 0 R + >> + /Type /Page +>> +endobj + +%% Page 4 +26 0 obj +<< + /Annots 67 0 R + /Contents 63 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 9 0 R + /Resources << + /Font << + /F1 65 0 R + >> + /ProcSet 66 0 R + >> + /Type /Page +>> +endobj + +27 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 68 0 R + /Subtype /Form + /Type /XObject + /Length 28 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +1 0 0 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +28 0 obj +202 +endobj + +29 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 68 0 R + /Subtype /Form + /Type /XObject + /Length 30 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +30 0 obj +12 +endobj + +31 0 obj +<< + /BaseFont /ZapfDingbats + /Subtype /Type1 + /Type /Font +>> +endobj + +32 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 68 0 R + /Subtype /Form + /Type /XObject + /Length 33 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +0 1 0 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +33 0 obj +202 +endobj + +34 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 68 0 R + /Subtype /Form + /Type /XObject + /Length 35 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +35 0 obj +12 +endobj + +36 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 68 0 R + /Subtype /Form + /Type /XObject + /Length 37 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +0 0 1 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +37 0 obj +202 +endobj + +38 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 68 0 R + /Subtype /Form + /Type /XObject + /Length 39 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +39 0 obj +12 +endobj + +40 0 obj +<< + /Params << + /CheckSum <80a33fc110b5a7b8b4d58b8d57e814bc> + /Size 22 + /Subtype /text#2fplain + >> + /Type /EmbeddedFile + /Length 41 0 R +>> +stream +content of attachment +endstream +endobj + +41 0 obj +22 +endobj + +42 0 obj +<< + /A << + /S /URI + /URI (https://www.qbilt.org/) + >> + /Border [ + 0 + 0 + .4 + ] + /C [ + .8 + .6 + .6 + ] + /H /I + /Rect [ + 501.832 + 237.6 + 520.696 + 540 + ] + /Subtype /Link + /Type /Annot +>> +endobj + +43 0 obj +<< + /AP << + /N 69 0 R + >> + /Contents (attachment1.txt) + /FS 22 0 R + /NM (attachment1.txt) + /Rect [ + 400 + 520 + 420 + 540 + ] + /Subtype /FileAttachment + /Type /Annot +>> +endobj + +44 0 obj +<< + /AP << + /N 71 0 R + >> + /DA () + /Rect [ + 350 + 520 + 360 + 540 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +45 0 obj +<< + /AP << + /N 73 0 R + >> + /DA () + /Rect [ + 350 + 500 + 370 + 510 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +46 0 obj +<< + /AP << + /N 75 0 R + >> + /DA () + /Rect [ + 350 + 470 + 360 + 490 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +47 0 obj +<< + /AP << + /N 77 0 R + >> + /DA () + /Rect [ + 350 + 450 + 370 + 460 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +%% Contents for page 1 +48 0 obj +<< + /Length 49 0 R +>> +stream +q +0 -1 1 0 0 612 cm +endstream +endobj + +49 0 obj +20 +endobj + +%% Contents for page 1 +50 0 obj +<< + /Length 51 0 R +>> +stream +q +1 1 .7 rg +.5 .5 0 RG +72 470.77 118.8 14.15 re +B +Q +q +0 .5 .5 RG +0 1 1 rg +372 330.77 14.15 139.4 re +B +Q +q +1 0 0 RG +72 310 20 10 re +72 310 5 10 re +S +0 1 0 RG +102 310 10 20 re +102 310 10 5 re +S +0 0 1 RG +122 310 20 10 re +137 310 5 10 re +S +0.5 0 1 RG +152 310 10 20 re +152 325 10 5 re +S +10 w +0.14 .33 .18 RG +5 5 602 782 re +S +Q +BT + /F1 16 Tf + 20.6 TL + 170 650 Td + (radio button 1) Tj + (radio button 2) ' + (radio button 3) ' + 1 0 0 1 72 546 Tm + /F1 20 Tf + (Thick green border surrounds page.) Tj + 0 -40 Td + /F1 24 Tf + 0 0 1 rg + (https://www.qbilt.org) Tj + /F1 12 Tf + 1 0 0 1 202 474 Tm + (<- Formy field in yellow) Tj + 1 0 0 1 392 410 Tm + 14.4 TL + (<- Rot-ccw field) Tj + (with "Rot" at bottom) ' + (and text going up) ' + 0 g + 1 0 0 1 102 405 Tm + (Arrow to the left points down.) Tj + 1 0 0 1 182 310 Tm + (<- Drawn rectangles appear below annotations.) Tj +ET +endstream +endobj + +51 0 obj +874 +endobj + +%% Contents for page 1 +52 0 obj +<< + /Length 53 0 R +>> +stream + +Q +endstream +endobj + +53 0 obj +3 +endobj + +54 0 obj +<< + /A << + /S /URI + /URI (https://www.qbilt.org/) + >> + /Border [ + 0 + 0 + .4 + ] + /C [ + .8 + .6 + .6 + ] + /H /I + /Rect [ + 72 + 501.832 + 374.4 + 520.696 + ] + /Subtype /Link + /Type /Annot +>> +endobj + +55 0 obj +<< + /AP << + /N 79 0 R + >> + /Contents (attachment1.txt) + /FS 22 0 R + /NM (attachment1.txt) + /Rect [ + 72 + 400 + 92 + 420 + ] + /Subtype /FileAttachment + /Type /Annot +>> +endobj + +56 0 obj +<< + /AP << + /N 81 0 R + >> + /DA () + /Rect [ + 72 + 350 + 92 + 360 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +57 0 obj +<< + /AP << + /N 83 0 R + >> + /DA () + /Rect [ + 102 + 350 + 112 + 370 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +58 0 obj +<< + /AP << + /N 85 0 R + >> + /DA () + /Rect [ + 122 + 350 + 142 + 360 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +59 0 obj +<< + /AP << + /N 87 0 R + >> + /DA () + /Rect [ + 152 + 350 + 162 + 370 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +60 0 obj +<< + /AP << + /N << + /1 89 0 R + /Off 91 0 R + >> + >> + /AS /1 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 31 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 93 0 R + /Rect [ + 152.749 + 648.501 + 164.801 + 660.549 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +61 0 obj +<< + /AP << + /N << + /2 94 0 R + /Off 96 0 R + >> + >> + /AS /2 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 31 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 93 0 R + /Rect [ + 152.749 + 627.301 + 164.801 + 639.349 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +62 0 obj +<< + /AP << + /N << + /3 98 0 R + /Off 100 0 R + >> + >> + /AS /3 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 31 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 93 0 R + /Rect [ + 151.399 + 606.501 + 163.451 + 618.549 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +%% Contents for page 4 +63 0 obj +<< + /Length 64 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato) Tj +ET +endstream +endobj + +64 0 obj +44 +endobj + +65 0 obj +<< + /BaseFont /Helvetica + /Encoding /WinAnsiEncoding + /Name /F1 + /Subtype /Type1 + /Type /Font +>> +endobj + +66 0 obj +[ + /PDF + /Text +] +endobj + +67 0 obj +[ + 54 0 R + 55 0 R + 56 0 R + 57 0 R + 58 0 R + 59 0 R + 3 0 R + 4 0 R + 60 0 R + 61 0 R + 62 0 R +] +endobj + +68 0 obj +<< + /Font 102 0 R + /ProcSet [ + /PDF + /Text + ] +>> +endobj + +69 0 obj +<< + /BBox [ + 0 + 0 + 20 + 20 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources << + >> + /Subtype /Form + /Type /XObject + /Length 70 0 R +>> +stream +0 10 m +10 0 l +20 10 l +10 0 m +10 20 l +0 0 20 20 re +S +endstream +endobj + +70 0 obj +52 +endobj + +71 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 72 0 R +>> +stream +1 0 0 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +72 0 obj +36 +endobj + +73 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + 1 + 0 + 0 + 1 + -612 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 74 0 R +>> +stream +0 1 0 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +74 0 obj +36 +endobj + +75 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + -0 + 1 + -1 + 0 + 0 + -612 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 76 0 R +>> +stream +0 0 1 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +76 0 obj +36 +endobj + +77 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + -1 + -0 + 0 + -1 + 612 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 78 0 R +>> +stream +0.5 0 1 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +78 0 obj +38 +endobj + +79 0 obj +<< + /BBox [ + 0 + 0 + 20 + 20 + ] + /Resources << + >> + /Subtype /Form + /Type /XObject + /Length 80 0 R +>> +stream +0 10 m +10 0 l +20 10 l +10 0 m +10 20 l +0 0 20 20 re +S +endstream +endobj + +80 0 obj +52 +endobj + +81 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 82 0 R +>> +stream +1 0 0 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +82 0 obj +36 +endobj + +83 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + 0 + 1 + -1 + 0 + 0 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 84 0 R +>> +stream +0 1 0 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +84 0 obj +36 +endobj + +85 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + -1 + 0 + 0 + -1 + 0 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 86 0 R +>> +stream +0 0 1 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +86 0 obj +36 +endobj + +87 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 88 0 R +>> +stream +0.5 0 1 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +88 0 obj +38 +endobj + +89 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 68 0 R + /Subtype /Form + /Type /XObject + /Length 90 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +1 0 0 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +90 0 obj +202 +endobj + +91 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 68 0 R + /Subtype /Form + /Type /XObject + /Length 92 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +92 0 obj +12 +endobj + +93 0 obj +<< + /DV /1 + /FT /Btn + /Ff 49152 + /Kids [ + 60 0 R + 61 0 R + 62 0 R + ] + /T (r1) + /V /2 +>> +endobj + +94 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 68 0 R + /Subtype /Form + /Type /XObject + /Length 95 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +0 1 0 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +95 0 obj +202 +endobj + +96 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 68 0 R + /Subtype /Form + /Type /XObject + /Length 97 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +97 0 obj +12 +endobj + +98 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 68 0 R + /Subtype /Form + /Type /XObject + /Length 99 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +0 0 1 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +99 0 obj +202 +endobj + +100 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 68 0 R + /Subtype /Form + /Type /XObject + /Length 101 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +101 0 obj +12 +endobj + +102 0 obj +<< + /ZaDi 31 0 R +>> +endobj + +xref +0 103 +0000000000 65535 f +0000000025 00000 n +0000000235 00000 n +0000000288 00000 n +0000000532 00000 n +0000000781 00000 n +0000001026 00000 n +0000001275 00000 n +0000001394 00000 n +0000001464 00000 n +0000001570 00000 n +0000001675 00000 n +0000001890 00000 n +0000001910 00000 n +0000002180 00000 n +0000002200 00000 n +0000002470 00000 n +0000002490 00000 n +0000002762 00000 n +0000002782 00000 n +0000003134 00000 n +0000003486 00000 n +0000003838 00000 n +0000003979 00000 n +0000004293 00000 n +0000004634 00000 n +0000004857 00000 n +0000005070 00000 n +0000005484 00000 n +0000005505 00000 n +0000005729 00000 n +0000005749 00000 n +0000005830 00000 n +0000006244 00000 n +0000006265 00000 n +0000006489 00000 n +0000006509 00000 n +0000006923 00000 n +0000006944 00000 n +0000007168 00000 n +0000007188 00000 n +0000007396 00000 n +0000007416 00000 n +0000007661 00000 n +0000007867 00000 n +0000008009 00000 n +0000008151 00000 n +0000008293 00000 n +0000008458 00000 n +0000008535 00000 n +0000008578 00000 n +0000009509 00000 n +0000009553 00000 n +0000009613 00000 n +0000009632 00000 n +0000009876 00000 n +0000010080 00000 n +0000010220 00000 n +0000010362 00000 n +0000010504 00000 n +0000010646 00000 n +0000010999 00000 n +0000011352 00000 n +0000011729 00000 n +0000011830 00000 n +0000011850 00000 n +0000011969 00000 n +0000012005 00000 n +0000012123 00000 n +0000012198 00000 n +0000012457 00000 n +0000012477 00000 n +0000012718 00000 n +0000012738 00000 n +0000012979 00000 n +0000012999 00000 n +0000013242 00000 n +0000013262 00000 n +0000013507 00000 n +0000013527 00000 n +0000013731 00000 n +0000013751 00000 n +0000013937 00000 n +0000013957 00000 n +0000014196 00000 n +0000014216 00000 n +0000014456 00000 n +0000014476 00000 n +0000014717 00000 n +0000014737 00000 n +0000015096 00000 n +0000015117 00000 n +0000015286 00000 n +0000015306 00000 n +0000015426 00000 n +0000015785 00000 n +0000015806 00000 n +0000015975 00000 n +0000015995 00000 n +0000016354 00000 n +0000016375 00000 n +0000016546 00000 n +0000016567 00000 n +trailer << + /Root 1 0 R + /Size 103 + /ID [<31415926535897932384626433832795>] +>> +startxref +16606 +%%EOF diff --git a/qpdf/qtest/qpdf/rotated-shared-annotations-2.pdf b/qpdf/qtest/qpdf/rotated-shared-annotations-2.pdf new file mode 100644 index 00000000..5c59008a --- /dev/null +++ b/qpdf/qtest/qpdf/rotated-shared-annotations-2.pdf @@ -0,0 +1,2705 @@ +%PDF-1.6 +%¿÷¢þ +%QDF-1.0 + +1 0 obj +<< + /AcroForm << + /DR 2 0 R + /Fields [ + 3 0 R + 4 0 R + 5 0 R + 6 0 R + 7 0 R + 8 0 R + ] + >> + /Names << + /EmbeddedFiles 9 0 R + >> + /Pages 10 0 R + /Type /Catalog +>> +endobj + +2 0 obj +<< + /Font << + /F1 11 0 R + >> +>> +endobj + +3 0 obj +<< + /AP << + /N 12 0 R + >> + /DA (0 0.4 0 rg /F1 18 Tf) + /DR 2 0 R + /DV () + /FT /Tx + /Ff 0 + /Rect [ + 470.774 + 421.2 + 484.922 + 540 + ] + /Subtype /Widget + /T (Text Box 1) + /Type /Annot + /V (Formy field) +>> +endobj + +4 0 obj +<< + /AP << + /N 14 0 R + >> + /DA (0 0.4 0 rg /F1 18 Tf) + /DR 2 0 R + /DV () + /FT /Tx + /Ff 0 + /Rect [ + 330.774 + 225.852 + 470.374 + 240 + ] + /Subtype /Widget + /T (Text Box 1) + /Type /Annot + /V (Rot-ccw field) +>> +endobj + +5 0 obj +<< + /DV /1 + /FT /Btn + /Ff 49152 + /Kids [ + 16 0 R + 17 0 R + 18 0 R + ] + /T (r1) + /V /2 +>> +endobj + +6 0 obj +<< + /AP << + /N 19 0 R + >> + /DA (0 0.4 0 rg /F1 18 Tf) + /DR 2 0 R + /DV () + /FT /Tx + /Ff 0 + /Rect [ + 470.774 + 421.2 + 484.922 + 540 + ] + /Subtype /Widget + /T (Text Box 1) + /Type /Annot + /V (Formy field) +>> +endobj + +7 0 obj +<< + /AP << + /N 21 0 R + >> + /DA (0 0.4 0 rg /F1 18 Tf) + /DR 2 0 R + /DV () + /FT /Tx + /Ff 0 + /Rect [ + 330.774 + 225.852 + 470.374 + 240 + ] + /Subtype /Widget + /T (Text Box 1) + /Type /Annot + /V (Rot-ccw field) +>> +endobj + +8 0 obj +<< + /DV /1 + /FT /Btn + /Ff 49152 + /Kids [ + 23 0 R + 24 0 R + 25 0 R + ] + /T (r1) + /V /2 +>> +endobj + +9 0 obj +<< + /Names [ + (attachment1.txt) + 26 0 R + ] +>> +endobj + +10 0 obj +<< + /Count 4 + /Kids [ + 27 0 R + 28 0 R + 29 0 R + 30 0 R + ] + /Type /Pages +>> +endobj + +11 0 obj +<< + /BaseFont /Courier + /Encoding /WinAnsiEncoding + /Subtype /Type1 + /Type /Font +>> +endobj + +12 0 obj +<< + /BBox [ + 0 + -2.826 + 118.8 + 11.322 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 13 0 R +>> +stream +/Tx BMC +q +BT + /F1 18 Tf + (Formy field) Tj +ET +Q +EMC +endstream +endobj + +13 0 obj +53 +endobj + +14 0 obj +<< + /BBox [ + 0 + -2.826 + 140.4 + 11.322 + ] + /Matrix [ + 1 + 0 + 0 + 1 + -612 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 15 0 R +>> +stream +/Tx BMC +q +BT + /F1 18 Tf + (Rot-ccw field) Tj +ET +Q +EMC +endstream +endobj + +15 0 obj +55 +endobj + +16 0 obj +<< + /AP << + /N << + /1 31 0 R + /Off 33 0 R + >> + >> + /AS /1 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 35 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 5 0 R + /Rect [ + 648.501 + 447.199 + 660.549 + 459.251 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +17 0 obj +<< + /AP << + /N << + /2 36 0 R + /Off 38 0 R + >> + >> + /AS /2 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 35 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 5 0 R + /Rect [ + 627.301 + 447.199 + 639.349 + 459.251 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +18 0 obj +<< + /AP << + /N << + /3 40 0 R + /Off 42 0 R + >> + >> + /AS /3 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 35 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 5 0 R + /Rect [ + 606.501 + 448.549 + 618.549 + 460.601 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +19 0 obj +<< + /BBox [ + 0 + -2.826 + 118.8 + 11.322 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 20 0 R +>> +stream +/Tx BMC +q +BT + /F1 18 Tf + (Formy field) Tj +ET +Q +EMC +endstream +endobj + +20 0 obj +53 +endobj + +21 0 obj +<< + /BBox [ + 0 + -2.826 + 140.4 + 11.322 + ] + /Matrix [ + 1 + 0 + 0 + 1 + -612 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 22 0 R +>> +stream +/Tx BMC +q +BT + /F1 18 Tf + (Rot-ccw field) Tj +ET +Q +EMC +endstream +endobj + +22 0 obj +55 +endobj + +23 0 obj +<< + /AP << + /N << + /1 44 0 R + /Off 46 0 R + >> + >> + /AS /1 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 35 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 8 0 R + /Rect [ + 648.501 + 447.199 + 660.549 + 459.251 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +24 0 obj +<< + /AP << + /N << + /2 48 0 R + /Off 50 0 R + >> + >> + /AS /2 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 35 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 8 0 R + /Rect [ + 627.301 + 447.199 + 639.349 + 459.251 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +25 0 obj +<< + /AP << + /N << + /3 52 0 R + /Off 54 0 R + >> + >> + /AS /3 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 35 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 8 0 R + /Rect [ + 606.501 + 448.549 + 618.549 + 460.601 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +26 0 obj +<< + /EF << + /F 56 0 R + /UF 56 0 R + >> + /F (attachment1.txt) + /Type /Filespec + /UF (attachment1.txt) +>> +endobj + +%% Page 1 +27 0 obj +<< + /Annots [ + 58 0 R + 3 0 R + 59 0 R + 4 0 R + 60 0 R + 61 0 R + 62 0 R + 63 0 R + 16 0 R + 17 0 R + 18 0 R + ] + /Contents [ + 64 0 R + 66 0 R + 68 0 R + ] + /MediaBox [ + 0 + 0 + 792 + 612 + ] + /Parent 10 0 R + /Resources 2 0 R + /Type /Page +>> +endobj + +%% Page 2 +28 0 obj +<< + /Annots [ + 70 0 R + 71 0 R + 72 0 R + 73 0 R + 74 0 R + 75 0 R + 6 0 R + 7 0 R + 23 0 R + 24 0 R + 25 0 R + ] + /Contents [ + 76 0 R + 78 0 R + 80 0 R + ] + /MediaBox [ + 0 + 0 + 792 + 612 + ] + /Parent 10 0 R + /Resources << + /Font << + /F1 82 0 R + >> + /ProcSet 83 0 R + >> + /Type /Page +>> +endobj + +%% Page 3 +29 0 obj +<< + /Annots 84 0 R + /Contents 78 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 10 0 R + /Resources << + /Font << + /F1 82 0 R + >> + /ProcSet 83 0 R + >> + /Type /Page +>> +endobj + +%% Page 4 +30 0 obj +<< + /Annots 84 0 R + /Contents 78 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 10 0 R + /Resources << + /Font << + /F1 82 0 R + >> + /ProcSet 83 0 R + >> + /Type /Page +>> +endobj + +31 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 85 0 R + /Subtype /Form + /Type /XObject + /Length 32 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +1 0 0 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +32 0 obj +202 +endobj + +33 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 85 0 R + /Subtype /Form + /Type /XObject + /Length 34 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +34 0 obj +12 +endobj + +35 0 obj +<< + /BaseFont /ZapfDingbats + /Subtype /Type1 + /Type /Font +>> +endobj + +36 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 85 0 R + /Subtype /Form + /Type /XObject + /Length 37 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +0 1 0 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +37 0 obj +202 +endobj + +38 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 85 0 R + /Subtype /Form + /Type /XObject + /Length 39 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +39 0 obj +12 +endobj + +40 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 85 0 R + /Subtype /Form + /Type /XObject + /Length 41 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +0 0 1 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +41 0 obj +202 +endobj + +42 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 85 0 R + /Subtype /Form + /Type /XObject + /Length 43 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +43 0 obj +12 +endobj + +44 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 85 0 R + /Subtype /Form + /Type /XObject + /Length 45 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +1 0 0 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +45 0 obj +202 +endobj + +46 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 85 0 R + /Subtype /Form + /Type /XObject + /Length 47 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +47 0 obj +12 +endobj + +48 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 85 0 R + /Subtype /Form + /Type /XObject + /Length 49 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +0 1 0 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +49 0 obj +202 +endobj + +50 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 85 0 R + /Subtype /Form + /Type /XObject + /Length 51 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +51 0 obj +12 +endobj + +52 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 85 0 R + /Subtype /Form + /Type /XObject + /Length 53 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +0 0 1 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +53 0 obj +202 +endobj + +54 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 85 0 R + /Subtype /Form + /Type /XObject + /Length 55 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +55 0 obj +12 +endobj + +56 0 obj +<< + /Params << + /CheckSum <80a33fc110b5a7b8b4d58b8d57e814bc> + /Size 22 + /Subtype /text#2fplain + >> + /Type /EmbeddedFile + /Length 57 0 R +>> +stream +content of attachment +endstream +endobj + +57 0 obj +22 +endobj + +58 0 obj +<< + /A << + /S /URI + /URI (https://www.qbilt.org/) + >> + /Border [ + 0 + 0 + .4 + ] + /C [ + .8 + .6 + .6 + ] + /H /I + /Rect [ + 501.832 + 237.6 + 520.696 + 540 + ] + /Subtype /Link + /Type /Annot +>> +endobj + +59 0 obj +<< + /AP << + /N 86 0 R + >> + /Contents (attachment1.txt) + /FS 26 0 R + /NM (attachment1.txt) + /Rect [ + 400 + 520 + 420 + 540 + ] + /Subtype /FileAttachment + /Type /Annot +>> +endobj + +60 0 obj +<< + /AP << + /N 88 0 R + >> + /DA () + /Rect [ + 350 + 520 + 360 + 540 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +61 0 obj +<< + /AP << + /N 90 0 R + >> + /DA () + /Rect [ + 350 + 500 + 370 + 510 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +62 0 obj +<< + /AP << + /N 92 0 R + >> + /DA () + /Rect [ + 350 + 470 + 360 + 490 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +63 0 obj +<< + /AP << + /N 94 0 R + >> + /DA () + /Rect [ + 350 + 450 + 370 + 460 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +%% Contents for page 1 +64 0 obj +<< + /Length 65 0 R +>> +stream +q +0 -1 1 0 0 612 cm +endstream +endobj + +65 0 obj +20 +endobj + +%% Contents for page 1 +66 0 obj +<< + /Length 67 0 R +>> +stream +q +1 1 .7 rg +.5 .5 0 RG +72 470.77 118.8 14.15 re +B +Q +q +0 .5 .5 RG +0 1 1 rg +372 330.77 14.15 139.4 re +B +Q +q +1 0 0 RG +72 310 20 10 re +72 310 5 10 re +S +0 1 0 RG +102 310 10 20 re +102 310 10 5 re +S +0 0 1 RG +122 310 20 10 re +137 310 5 10 re +S +0.5 0 1 RG +152 310 10 20 re +152 325 10 5 re +S +10 w +0.14 .33 .18 RG +5 5 602 782 re +S +Q +BT + /F1 16 Tf + 20.6 TL + 170 650 Td + (radio button 1) Tj + (radio button 2) ' + (radio button 3) ' + 1 0 0 1 72 546 Tm + /F1 20 Tf + (Thick green border surrounds page.) Tj + 0 -40 Td + /F1 24 Tf + 0 0 1 rg + (https://www.qbilt.org) Tj + /F1 12 Tf + 1 0 0 1 202 474 Tm + (<- Formy field in yellow) Tj + 1 0 0 1 392 410 Tm + 14.4 TL + (<- Rot-ccw field) Tj + (with "Rot" at bottom) ' + (and text going up) ' + 0 g + 1 0 0 1 102 405 Tm + (Arrow to the left points down.) Tj + 1 0 0 1 182 310 Tm + (<- Drawn rectangles appear below annotations.) Tj +ET +endstream +endobj + +67 0 obj +874 +endobj + +%% Contents for page 1 +68 0 obj +<< + /Length 69 0 R +>> +stream + +Q +endstream +endobj + +69 0 obj +3 +endobj + +70 0 obj +<< + /A << + /S /URI + /URI (https://www.qbilt.org/) + >> + /Border [ + 0 + 0 + .4 + ] + /C [ + .8 + .6 + .6 + ] + /H /I + /Rect [ + 501.832 + 237.6 + 520.696 + 540 + ] + /Subtype /Link + /Type /Annot +>> +endobj + +71 0 obj +<< + /AP << + /N 96 0 R + >> + /Contents (attachment1.txt) + /FS 26 0 R + /NM (attachment1.txt) + /Rect [ + 400 + 520 + 420 + 540 + ] + /Subtype /FileAttachment + /Type /Annot +>> +endobj + +72 0 obj +<< + /AP << + /N 98 0 R + >> + /DA () + /Rect [ + 350 + 520 + 360 + 540 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +73 0 obj +<< + /AP << + /N 100 0 R + >> + /DA () + /Rect [ + 350 + 500 + 370 + 510 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +74 0 obj +<< + /AP << + /N 102 0 R + >> + /DA () + /Rect [ + 350 + 470 + 360 + 490 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +75 0 obj +<< + /AP << + /N 104 0 R + >> + /DA () + /Rect [ + 350 + 450 + 370 + 460 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +%% Contents for page 2 +76 0 obj +<< + /Length 77 0 R +>> +stream +q +0 -1 1 0 0 612 cm +endstream +endobj + +77 0 obj +20 +endobj + +%% Contents for page 4 +78 0 obj +<< + /Length 79 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato) Tj +ET +endstream +endobj + +79 0 obj +44 +endobj + +%% Contents for page 2 +80 0 obj +<< + /Length 81 0 R +>> +stream + +Q +endstream +endobj + +81 0 obj +3 +endobj + +82 0 obj +<< + /BaseFont /Helvetica + /Encoding /WinAnsiEncoding + /Name /F1 + /Subtype /Type1 + /Type /Font +>> +endobj + +83 0 obj +[ + /PDF + /Text +] +endobj + +84 0 obj +[ + 106 0 R + 107 0 R + 108 0 R + 109 0 R + 110 0 R + 111 0 R + 112 0 R + 113 0 R + 114 0 R + 115 0 R + 116 0 R +] +endobj + +85 0 obj +<< + /Font 117 0 R + /ProcSet [ + /PDF + /Text + ] +>> +endobj + +86 0 obj +<< + /BBox [ + 0 + 0 + 20 + 20 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources << + >> + /Subtype /Form + /Type /XObject + /Length 87 0 R +>> +stream +0 10 m +10 0 l +20 10 l +10 0 m +10 20 l +0 0 20 20 re +S +endstream +endobj + +87 0 obj +52 +endobj + +88 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 89 0 R +>> +stream +1 0 0 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +89 0 obj +36 +endobj + +90 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + 1 + 0 + 0 + 1 + -612 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 91 0 R +>> +stream +0 1 0 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +91 0 obj +36 +endobj + +92 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + -0 + 1 + -1 + 0 + 0 + -612 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 93 0 R +>> +stream +0 0 1 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +93 0 obj +36 +endobj + +94 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + -1 + -0 + 0 + -1 + 612 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 95 0 R +>> +stream +0.5 0 1 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +95 0 obj +38 +endobj + +96 0 obj +<< + /BBox [ + 0 + 0 + 20 + 20 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources << + >> + /Subtype /Form + /Type /XObject + /Length 97 0 R +>> +stream +0 10 m +10 0 l +20 10 l +10 0 m +10 20 l +0 0 20 20 re +S +endstream +endobj + +97 0 obj +52 +endobj + +98 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 612 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 99 0 R +>> +stream +1 0 0 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +99 0 obj +36 +endobj + +100 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + 1 + 0 + 0 + 1 + -612 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 101 0 R +>> +stream +0 1 0 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +101 0 obj +36 +endobj + +102 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + -0 + 1 + -1 + 0 + 0 + -612 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 103 0 R +>> +stream +0 0 1 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +103 0 obj +36 +endobj + +104 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + -1 + -0 + 0 + -1 + 612 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 105 0 R +>> +stream +0.5 0 1 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +105 0 obj +38 +endobj + +106 0 obj +<< + /A << + /S /URI + /URI (https://www.qbilt.org/) + >> + /Border [ + 0 + 0 + .4 + ] + /C [ + .8 + .6 + .6 + ] + /H /I + /Rect [ + 72 + 501.832 + 374.4 + 520.696 + ] + /Subtype /Link + /Type /Annot +>> +endobj + +107 0 obj +<< + /AP << + /N 118 0 R + >> + /Contents (attachment1.txt) + /FS 26 0 R + /NM (attachment1.txt) + /Rect [ + 72 + 400 + 92 + 420 + ] + /Subtype /FileAttachment + /Type /Annot +>> +endobj + +108 0 obj +<< + /AP << + /N 120 0 R + >> + /DA () + /Rect [ + 72 + 350 + 92 + 360 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +109 0 obj +<< + /AP << + /N 122 0 R + >> + /DA () + /Rect [ + 102 + 350 + 112 + 370 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +110 0 obj +<< + /AP << + /N 124 0 R + >> + /DA () + /Rect [ + 122 + 350 + 142 + 360 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +111 0 obj +<< + /AP << + /N 126 0 R + >> + /DA () + /Rect [ + 152 + 350 + 162 + 370 + ] + /Subtype /FreeText + /Type /Annot +>> +endobj + +112 0 obj +<< + /AP << + /N 128 0 R + >> + /DA (0 0.4 0 rg /F1 18 Tf) + /DR 2 0 R + /DV () + /FT /Tx + /Ff 0 + /Rect [ + 72 + 470.774 + 190.8 + 484.922 + ] + /Subtype /Widget + /T (Text Box 1) + /Type /Annot + /V (Formy field) +>> +endobj + +113 0 obj +<< + /AP << + /N 130 0 R + >> + /DA (0 0.4 0 rg /F1 18 Tf) + /DR 2 0 R + /DV () + /FT /Tx + /Ff 0 + /Rect [ + 372 + 330.774 + 386.148 + 470.374 + ] + /Subtype /Widget + /T (Text Box 1) + /Type /Annot + /V (Rot-ccw field) +>> +endobj + +114 0 obj +<< + /AP << + /N << + /1 132 0 R + /Off 134 0 R + >> + >> + /AS /1 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 35 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 136 0 R + /Rect [ + 152.749 + 648.501 + 164.801 + 660.549 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +115 0 obj +<< + /AP << + /N << + /2 137 0 R + /Off 139 0 R + >> + >> + /AS /2 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 35 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 136 0 R + /Rect [ + 152.749 + 627.301 + 164.801 + 639.349 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +116 0 obj +<< + /AP << + /N << + /3 141 0 R + /Off 143 0 R + >> + >> + /AS /3 + /DA (0.18039 0.20392 0.21176 rg /ZaDi 0 Tf) + /DR << + /Font << + /ZaDi 35 0 R + >> + >> + /F 4 + /FT /Btn + /MK << + /CA (l) + >> + /Parent 136 0 R + /Rect [ + 151.399 + 606.501 + 163.451 + 618.549 + ] + /Subtype /Widget + /Type /Annot +>> +endobj + +117 0 obj +<< + /ZaDi 35 0 R +>> +endobj + +118 0 obj +<< + /BBox [ + 0 + 0 + 20 + 20 + ] + /Resources << + >> + /Subtype /Form + /Type /XObject + /Length 119 0 R +>> +stream +0 10 m +10 0 l +20 10 l +10 0 m +10 20 l +0 0 20 20 re +S +endstream +endobj + +119 0 obj +52 +endobj + +120 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 121 0 R +>> +stream +1 0 0 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +121 0 obj +36 +endobj + +122 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + 0 + 1 + -1 + 0 + 0 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 123 0 R +>> +stream +0 1 0 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +123 0 obj +36 +endobj + +124 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + -1 + 0 + 0 + -1 + 0 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 125 0 R +>> +stream +0 0 1 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +125 0 obj +36 +endobj + +126 0 obj +<< + /BBox [ + 0 + 0 + 20 + 10 + ] + /Matrix [ + 0 + -1 + 1 + 0 + 0 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 127 0 R +>> +stream +0.5 0 1 RG +0 0 20 10 re +0 0 5 10 re +S +endstream +endobj + +127 0 obj +38 +endobj + +128 0 obj +<< + /BBox [ + 0 + -2.826 + 118.8 + 11.322 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 129 0 R +>> +stream +/Tx BMC +q +BT + /F1 18 Tf + (Formy field) Tj +ET +Q +EMC +endstream +endobj + +129 0 obj +53 +endobj + +130 0 obj +<< + /BBox [ + 0 + -2.826 + 140.4 + 11.322 + ] + /Matrix [ + 0 + 1 + -1 + 0 + 0 + 0 + ] + /Resources 2 0 R + /Subtype /Form + /Type /XObject + /Length 131 0 R +>> +stream +/Tx BMC +q +BT + /F1 18 Tf + (Rot-ccw field) Tj +ET +Q +EMC +endstream +endobj + +131 0 obj +55 +endobj + +132 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 85 0 R + /Subtype /Form + /Type /XObject + /Length 133 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +1 0 0 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +133 0 obj +202 +endobj + +134 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 85 0 R + /Subtype /Form + /Type /XObject + /Length 135 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +135 0 obj +12 +endobj + +136 0 obj +<< + /DV /1 + /FT /Btn + /Ff 49152 + /Kids [ + 114 0 R + 115 0 R + 116 0 R + ] + /T (r1) + /V /2 +>> +endobj + +137 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 85 0 R + /Subtype /Form + /Type /XObject + /Length 138 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +0 1 0 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +138 0 obj +202 +endobj + +139 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 85 0 R + /Subtype /Form + /Type /XObject + /Length 140 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +140 0 obj +12 +endobj + +141 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 85 0 R + /Subtype /Form + /Type /XObject + /Length 142 0 R +>> +stream +/Tx BMC +q BT +0.18039 0.20392 0.21176 rg /ZaDi 12.05 Tf +0 0 Td +ET +Q +0 0 1 rg +6 8.4 m 7.35 8.4 8.45 7.35 8.45 6 c +8.45 4.65 7.35 3.55 6 3.55 c +4.65 3.55 3.6 4.65 3.6 6 c +3.6 7.35 4.65 8.4 6 8.4 c f* + +EMC +endstream +endobj + +142 0 obj +202 +endobj + +143 0 obj +<< + /BBox [ + 0 + 0 + 12.05 + 12.05 + ] + /Resources 85 0 R + /Subtype /Form + /Type /XObject + /Length 144 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +144 0 obj +12 +endobj + +xref +0 145 +0000000000 65535 f +0000000025 00000 n +0000000248 00000 n +0000000301 00000 n +0000000546 00000 n +0000000795 00000 n +0000000914 00000 n +0000001159 00000 n +0000001408 00000 n +0000001527 00000 n +0000001597 00000 n +0000001704 00000 n +0000001809 00000 n +0000002079 00000 n +0000002099 00000 n +0000002371 00000 n +0000002391 00000 n +0000002743 00000 n +0000003095 00000 n +0000003447 00000 n +0000003717 00000 n +0000003737 00000 n +0000004009 00000 n +0000004029 00000 n +0000004381 00000 n +0000004733 00000 n +0000005085 00000 n +0000005226 00000 n +0000005541 00000 n +0000005915 00000 n +0000006139 00000 n +0000006353 00000 n +0000006767 00000 n +0000006788 00000 n +0000007012 00000 n +0000007032 00000 n +0000007113 00000 n +0000007527 00000 n +0000007548 00000 n +0000007772 00000 n +0000007792 00000 n +0000008206 00000 n +0000008227 00000 n +0000008451 00000 n +0000008471 00000 n +0000008885 00000 n +0000008906 00000 n +0000009130 00000 n +0000009150 00000 n +0000009564 00000 n +0000009585 00000 n +0000009809 00000 n +0000009829 00000 n +0000010243 00000 n +0000010264 00000 n +0000010488 00000 n +0000010508 00000 n +0000010716 00000 n +0000010736 00000 n +0000010981 00000 n +0000011187 00000 n +0000011329 00000 n +0000011471 00000 n +0000011613 00000 n +0000011778 00000 n +0000011855 00000 n +0000011898 00000 n +0000012829 00000 n +0000012873 00000 n +0000012933 00000 n +0000012952 00000 n +0000013197 00000 n +0000013403 00000 n +0000013545 00000 n +0000013688 00000 n +0000013831 00000 n +0000013997 00000 n +0000014074 00000 n +0000014117 00000 n +0000014218 00000 n +0000014261 00000 n +0000014321 00000 n +0000014340 00000 n +0000014459 00000 n +0000014495 00000 n +0000014626 00000 n +0000014701 00000 n +0000014960 00000 n +0000014980 00000 n +0000015221 00000 n +0000015241 00000 n +0000015482 00000 n +0000015502 00000 n +0000015745 00000 n +0000015765 00000 n +0000016010 00000 n +0000016030 00000 n +0000016289 00000 n +0000016309 00000 n +0000016550 00000 n +0000016570 00000 n +0000016813 00000 n +0000016834 00000 n +0000017079 00000 n +0000017100 00000 n +0000017347 00000 n +0000017368 00000 n +0000017613 00000 n +0000017819 00000 n +0000017961 00000 n +0000018105 00000 n +0000018249 00000 n +0000018393 00000 n +0000018640 00000 n +0000018892 00000 n +0000019249 00000 n +0000019606 00000 n +0000019963 00000 n +0000020002 00000 n +0000020208 00000 n +0000020229 00000 n +0000020417 00000 n +0000020438 00000 n +0000020679 00000 n +0000020700 00000 n +0000020942 00000 n +0000020963 00000 n +0000021206 00000 n +0000021227 00000 n +0000021444 00000 n +0000021465 00000 n +0000021737 00000 n +0000021758 00000 n +0000022119 00000 n +0000022141 00000 n +0000022312 00000 n +0000022333 00000 n +0000022457 00000 n +0000022818 00000 n +0000022840 00000 n +0000023011 00000 n +0000023032 00000 n +0000023393 00000 n +0000023415 00000 n +0000023586 00000 n +trailer << + /Root 1 0 R + /Size 145 + /ID [<31415926535897932384626433832795>] +>> +startxref +23607 +%%EOF