diff --git a/ChangeLog b/ChangeLog index 3b974fa5..ec5d9ec8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,6 @@ 2018-12-31 Jay Berkenbilt - * Add several methods for flattening form fields and annotations: + * Add methods for flattening form fields and annotations: - QPDFPageDocumentHelper::flattenAnnotations - integrate annotation appearance streams into page contents with special handling for form fields: if appearance streams are up to date @@ -11,15 +11,11 @@ be found. - QPDFAnnotationObjectHelper::getPageContentForAppearance - generate the content stream fragment to render an appearance - stream in a page's content stream. Called by flattenAnnotations. - - QPDFAnnotationObjectHelper::getAnnotationAppearanceMatrix - - calculate the matrix that will transform from the appearance - stream coordinates to the page coordinates. Called by - getPageContentForAppearance. + stream in a page's content stream as a form xobject. Called by + flattenAnnotations. - * Add method QPDFObjectHandle::mergeDictionary(), which - recursively merges dictionaries with semantics designed for - merging resource dictionaries. See detailed description in + * Add method QPDFObjectHandle::mergeResources(), which merges + resource dictionaries. See detailed description in QPDFObjectHandle.hh. * Add QPDFObjectHandle::Matrix, similar to diff --git a/include/qpdf/QPDFAnnotationObjectHelper.hh b/include/qpdf/QPDFAnnotationObjectHelper.hh index 76ff0eac..47242499 100644 --- a/include/qpdf/QPDFAnnotationObjectHelper.hh +++ b/include/qpdf/QPDFAnnotationObjectHelper.hh @@ -72,23 +72,14 @@ class QPDFAnnotationObjectHelper: public QPDFObjectHelper QPDFObjectHandle getAppearanceStream(std::string const& which, std::string const& state = ""); - // Return a matrix that transforms from the annotation's - // appearance stream's coordinates to the page's coordinates. This - // method also honors the annotation's NoRotate flag if set. The - // matrix is returned as a string representing the six floating - // point numbers to be passed to a cm operator. Returns the empty - // string if it is unable to compute the matrix for any reason. - // The value "rotate" should be set to the page's /Rotate value or - // 0 if none. - QPDF_DLL - std::string getAnnotationAppearanceMatrix(int rotate); - // Generate text suitable for addition to the containing page's - // content stream that replaces this annotation's appearance - // stream. The value "rotate" should be set to the page's /Rotate - // value or 0 if none. + // content stream that draws this annotation's appearance stream + // as a form XObject. The value "name" is the resource name that + // will be used to refer to the form xobject. The value "rotate" + // should be set to the page's /Rotate value or 0 if none. QPDF_DLL - std::string getPageContentForAppearance(int rotate); + std::string getPageContentForAppearance( + std::string const& name, int rotate); private: class Members diff --git a/include/qpdf/QPDFObjectHandle.hh b/include/qpdf/QPDFObjectHandle.hh index 030ee11c..a878574b 100644 --- a/include/qpdf/QPDFObjectHandle.hh +++ b/include/qpdf/QPDFObjectHandle.hh @@ -559,27 +559,46 @@ class QPDFObjectHandle QPDF_DLL bool isOrHasName(std::string const&); - // Merge dictionaries with the following behavior, where "object" - // refers to the object whose method is invoked, and "other" - // refers to the argument: - // * If either object or other is not a dictionary, do nothing - // * Otherwise - // * For each key in other - // * If key is absent in object, insert it - // * If key is present in object - // * If both values are dictionaries, merge the dictionary from - // other into the one from object - // * If both values are arrays, append scalar elements from - // other's that are not present in object's onto object's, - // and ignore non-scalar elements in other's - // * Otherwise ignore + // Merge resource dictionaries. Assumes resource dictionaries have + // the property that the collection of keys of all first-level + // dictionary members contains no duplicates. This method does + // nothing if both this object and the other object are not + // dictionaries. Otherwise, it has following behavior, where + // "object" refers to the object whose method is invoked, and + // "other" refers to the argument: + // + // * For each key in "other" whose value is an array: + // * If "object" does not have that entry, shallow copy it. + // * Otherwise, if "object" has an array in the same place, + // append to that array any objects in "other"'s array that + // are not already present. + // * For each key in "other" whose value is a dictionary: + // * If "object" does not have that entry, shallow copy it. + // * Otherwise, for each key in the subdictionary: + // * If key is not present in "object"'s entry, shallow copy it. + // * Otherwise, ignore. Conflicts are not detected. + // // The primary purpose of this method is to facilitate merging of - // resource dictionaries. Conflicts are ignored. If needed, a - // future version of qpdf may provide some mechanism for conflict - // resolution, such as providing a handler that is invoked with - // the path to the conflict. + // resource dictionaries that are supposed to have the same scope + // as each other. For example, this can be used to merge a form + // XObject's /Resources dictionary with a form field's /DR. + // Conflicts are not detected. If, in the future, there should be + // a need to detect conflicts, this method could detect them and + // return a mapping from old to new names. This mapping could be + // used for filtering the stream. This would be necessary, for + // example, to merge a form XObject's resources with a page's + // resources with the intention of concatenating the content + // streams. QPDF_DLL - void mergeDictionary(QPDFObjectHandle other); + void mergeResources(QPDFObjectHandle other); + + // Get all resource names from a resourcey dictionary. If this + // object is a dctionary, this method returns a set of all the + // keys in all top-level subdictionaries. For resources + // dictionaries, this is the collection of names that may be + // referenced in the content stream. + QPDF_DLL + std::set getResourceNames(); // Return the QPDF object that owns an indirect object. Returns // null for a direct object. @@ -992,10 +1011,6 @@ class QPDFObjectHandle ParserCallbacks* callbacks); std::vector arrayOrStreamToStreamArray( std::string const& description, std::string& all_description); - void mergeDictionaryInternal( - QPDFObjectHandle other, - std::set& visiting, - int depth); static void warn(QPDF*, QPDFExc const&); class Members diff --git a/libqpdf/QPDFAnnotationObjectHelper.cc b/libqpdf/QPDFAnnotationObjectHelper.cc index 4c305149..ca4af907 100644 --- a/libqpdf/QPDFAnnotationObjectHelper.cc +++ b/libqpdf/QPDFAnnotationObjectHelper.cc @@ -80,19 +80,66 @@ QPDFAnnotationObjectHelper::getAppearanceStream( } std::string -QPDFAnnotationObjectHelper::getAnnotationAppearanceMatrix(int rotate) +QPDFAnnotationObjectHelper::getPageContentForAppearance( + std::string const& name, int rotate) { - // The appearance matrix is the transformation in effect when - // rendering an appearance stream's content. The appearance stream - // itself is a form XObject, which has a /BBox and an optional - // /Matrix. The /BBox describes the bounding box of the annotation - // in unrotated page coordinates. /Matrix may be applied to the - // bounding box to transform the bounding box. The effect of this - // is that the transformed box is still fit within the area the - // annotation designates in its /Rect field. + if (! getAppearanceStream("/N").isStream()) + { + return ""; + } - // The algorithm for computing the appearance matrix described in - // section 12.5.5 of the ISO-32000 PDF spec. It is as follows: + // The appearance matrix computed by this method is the + // transformation matrix that needs to be in effect when drawing + // this annotation's appearance stream on the page. The algorithm + // for computing the appearance matrix described in section 12.5.5 + // of the ISO-32000 PDF spec is similar but not identical to what + // we are doing here. + + // When rendering an appearance stream associated with an + // annotation, there are four relevant components: + // + // * The appearance stream's bounding box (/BBox) + // * The appearance stream's matrix (/Matrix) + // * The annotation's rectangle (/Rect) + // * In the case of form fields with the NoRotate flag, the + // page's rotation + + // When rendering a form xobject in isolation, just drawn with a + // /Do operator, the is no form field, so page rotation is not + // relevant, and there is no annotation, so /Rect is not relevant, + // so only /BBox and /Matrix are relevant. The effect of these are + // as follows: + + // * /BBox is treated as a clipping region + // * /Matrix is applied as a transformation prior to rendering the + // appearance stream. + + // There is no relationship between /BBox and /Matrix in this + // case. + + // When rendering a form xobject in the context of an annotation, + // things are a little different. In particular, a matrix is + // established such that /BBox, when transformed by /Matrix, would + // fit completely inside of /Rect. /BBox is no longer a clipping + // region. To illustrate the difference, consider a /Matrix of + // [2 0 0 2 0 0], which is scaling by a factor of two along both + // axes. If the appearance stream drew a rectangle equal to /BBox, + // in the case of the form xobject in isolation, this matrix would + // cause only the lower-left quadrant of the rectangle to be + // visible since the scaling would cause the rest of it to fall + // outside of the clipping region. In the case of the form xobject + // displayed in the context of an annotation, such a matrix would + // have no effect at all because it would be applied to the + // bounding box first, and then when the resulting enclosing + // quadrilateral was transformed to fit into /Rect, the effect of + // the scaling would be undone. + + // Our job is to create a transformation matrix that compensates + // for these differences so that the appearance stream of an + // annotation can be drawn as a regular form xobject. + + // To do this, we perform the following steps, which overlap + // significantly with the algorithm in 12.5.5: // 1. Transform the four corners of /BBox by applying /Matrix to // them, creating an arbitrarily transformed quadrilateral. @@ -103,38 +150,22 @@ QPDFAnnotationObjectHelper::getAnnotationAppearanceMatrix(int rotate) // 3. Compute matrix A that maps the lower left and upper right // corners of T to the annotation's /Rect. This can be done by - // translating the lower left corner and then scaling so that - // the upper right corner also matches. + // scaling so that the sizes match and translating so that the + // scaled T exactly overlaps /Rect. - // 4. Concatenate /Matrix to A to get matrix AA. This matrix - // translates from appearance stream coordinates to page - // coordinates. + // If the annotation's /F flag has bit 4 set, this means that + // annotation is to be rotated about its upper left corner to + // counteract any rotation of the page so it remains upright. To + // achieve this effect, we do the following extra steps: - // If the annotation's /F flag has bit 4 set, we modify the matrix - // to also rotate the annotation in the opposite direction, and we - // adjust the destination rectangle by rotating it about the upper - // left hand corner so that the annotation will appear upright on - // the rotated page. + // 1. Perform the rotation on /BBox box prior to transforming it + // with /Matrix (by replacing matrix with concatenation of + // matrix onto the rotation) - // You can see that the above algorithm works by imagining the - // following: + // 2. Rotate the destination rectangle by the specified amount - // * In the simple case of where /BBox = /Rect and /Matrix is the - // identity matrix, the transformed quadrilateral in step 1 will - // be the bounding box. Since the bounding box is upright, T - // will be the bounding box. Since /BBox = /Rect, matrix A is - // the identity matrix, and matrix AA in step 4 is also the - // identity matrix. - // - // * Imagine that the rectangle is different from the bounding - // box. In this case, matrix A just transforms the bounding box - // to the rectangle by scaling and translating, effectively - // squeezing or stretching it into /Rect. - // - // * Imagine that /Matrix rotates the annotation by 30 degrees. - // The transformed bounding box would stick out, and T would be - // too big. In this case, matrix A shrinks T down until it fits - // in /Rect. + // 3. Apply the rotation to A as computed above to get the final + // appearance matrix. QPDFObjectHandle rect_obj = this->oh.getKey("/Rect"); QPDFObjectHandle flags = this->oh.getKey("/F"); @@ -157,7 +188,9 @@ QPDFAnnotationObjectHelper::getAnnotationAppearanceMatrix(int rotate) QTC::TC("qpdf", "QPDFAnnotationObjectHelper default matrix"); } QPDFObjectHandle::Rectangle rect = rect_obj.getArrayAsRectangle(); - if (rotate && flags.isInteger() && (flags.getIntValue() & 16)) + bool do_rotate = (rotate && flags.isInteger() && + (flags.getIntValue() & 16)); + if (do_rotate) { // If the the annotation flags include the NoRotate bit and // the page is rotated, we have to rotate the annotation about @@ -229,39 +262,15 @@ QPDFAnnotationObjectHelper::getAnnotationAppearanceMatrix(int rotate) AA.scale((rect.urx - rect.llx) / (t_urx - t_llx), (rect.ury - rect.lly) / (t_ury - t_lly)); AA.translate(-t_llx, -t_lly); - // Concatenate the user-specified matrix - AA.concat(matrix); - return AA.unparse(); -} - -std::string -QPDFAnnotationObjectHelper::getPageContentForAppearance(int rotate) -{ - QPDFObjectHandle as = getAppearanceStream("/N"); - if (! (as.isStream() && as.getDict().getKey("/BBox").isRectangle())) + if (do_rotate) { - return ""; + AA.rotatex90(rotate); } - QPDFObjectHandle::Rectangle rect = - as.getDict().getKey("/BBox").getArrayAsRectangle(); - std::string cm = getAnnotationAppearanceMatrix(rotate); - if (cm.empty()) - { - return ""; - } - std::string as_content = ( + as.replaceKey("/Subtype", QPDFObjectHandle::newName("/Form")); + return ( "q\n" + - cm + " cm\n" + - QUtil::double_to_string(rect.llx, 5) + " " + - QUtil::double_to_string(rect.lly, 5) + " " + - QUtil::double_to_string(rect.urx - rect.llx, 5) + " " + - QUtil::double_to_string(rect.ury - rect.lly, 5) + " " + - "re W n\n"); - PointerHolder buf = as.getStreamData(qpdf_dl_all); - as_content += std::string( - reinterpret_cast(buf->getBuffer()), - buf->getSize()); - as_content += "\nQ\n"; - return as_content; + AA.unparse() + " cm\n" + + name + " Do\n" + + "Q\n"); } diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc index 300027b9..a0d45c86 100644 --- a/libqpdf/QPDFObjectHandle.cc +++ b/libqpdf/QPDFObjectHandle.cc @@ -826,23 +826,8 @@ QPDFObjectHandle::isOrHasName(std::string const& value) } void -QPDFObjectHandle::mergeDictionary(QPDFObjectHandle other) +QPDFObjectHandle::mergeResources(QPDFObjectHandle other) { - std::set visiting; - mergeDictionaryInternal(other, visiting, 0); -} - -void -QPDFObjectHandle::mergeDictionaryInternal( - QPDFObjectHandle other, - std::set& visiting, - int depth) -{ - if (depth > 100) - { - // Arbitrarily limit depth to avoid stack overflow - return; - } if (! (isDictionary() && other.isDictionary())) { QTC::TC("qpdf", "QPDFObjectHandle merge top type mismatch"); @@ -859,33 +844,22 @@ QPDFObjectHandle::mergeDictionaryInternal( QPDFObjectHandle this_val = getKey(key); if (this_val.isDictionary() && other_val.isDictionary()) { - if (this_val.isIndirect() && other_val.isIndirect() && - (this_val.getObjGen() == other_val.getObjGen())) + if (this_val.isIndirect()) { - QTC::TC("qpdf", "QPDFObjectHandle merge equal indirect"); + QTC::TC("qpdf", "QPDFObjectHandle replace with copy"); + this_val = this_val.shallowCopy(); + replaceKey(key, this_val); } - else if (this_val.isIndirect() && - (visiting.count(this_val.getObjGen()))) + std::set other_val_keys = other_val.getKeys(); + for (std::set::iterator i2 = + other_val_keys.begin(); + i2 != other_val_keys.end(); ++i2) { - QTC::TC("qpdf", "QPDFObjectHandle merge loop"); - } - else - { - QPDFObjGen loop; - if (this_val.isIndirect()) + if (! this_val.hasKey(*i2)) { - loop = this_val.getObjGen(); - visiting.insert(loop); QTC::TC("qpdf", "QPDFObjectHandle merge shallow copy"); - this_val = this_val.shallowCopy(); - replaceKey(key, this_val); - } - QTC::TC("qpdf", "QPDFObjectHandle nested merge"); - this_val.mergeDictionaryInternal( - other_val, visiting, 1 + depth); - if (loop.getObj()) - { - visiting.erase(loop); + this_val.replaceKey( + *i2, other_val.getKey(*i2).shallowCopy()); } } } @@ -923,11 +897,39 @@ QPDFObjectHandle::mergeDictionaryInternal( else { QTC::TC("qpdf", "QPDFObjectHandle merge copy from other"); - replaceKey(key, other_val); + replaceKey(key, other_val.shallowCopy()); } } } +std::set +QPDFObjectHandle::getResourceNames() +{ + // Return second-level dictionary keys + std::set result; + if (! isDictionary()) + { + return result; + } + std::set keys = getKeys(); + for (std::set::iterator iter = keys.begin(); + iter != keys.end(); ++iter) + { + std::string const& key = *iter; + QPDFObjectHandle val = getKey(key); + if (val.isDictionary()) + { + std::set val_keys = val.getKeys(); + for (std::set::iterator i2 = val_keys.begin(); + i2 != val_keys.end(); ++i2) + { + result.insert(*i2); + } + } + } + return result; +} + // Indirect object accessors QPDF* QPDFObjectHandle::getOwningQPDF() diff --git a/libqpdf/QPDFPageDocumentHelper.cc b/libqpdf/QPDFPageDocumentHelper.cc index 4d117017..7b171e9a 100644 --- a/libqpdf/QPDFPageDocumentHelper.cc +++ b/libqpdf/QPDFPageDocumentHelper.cc @@ -1,5 +1,6 @@ #include #include +#include #include QPDFPageDocumentHelper::Members::~Members() @@ -121,6 +122,7 @@ QPDFPageDocumentHelper::flattenAnnotationsForPage( { rotate = rotate_obj.getIntValue(); } + int next_fx = 1; for (std::vector::iterator iter = annots.begin(); iter != annots.end(); ++iter) @@ -140,18 +142,50 @@ QPDFPageDocumentHelper::flattenAnnotationsForPage( } if (process) { - resources.mergeDictionary(as.getDict().getKey("/Resources")); if (is_widget) { QTC::TC("qpdf", "QPDFPageDocumentHelper merge DR"); QPDFFormFieldObjectHelper ff = afdh.getFieldForAnnotation(aoh); - resources.mergeDictionary(ff.getInheritableFieldValue("/DR")); + QPDFObjectHandle as_resources = + as.getDict().getKey("/Resources"); + if (as_resources.isIndirect()) + { + QTC::TC("qpdf", "QPDFPageDocumentHelper indirect as resources"); + as.getDict().replaceKey( + "/Resources", as_resources.shallowCopy()); + as_resources = as.getDict().getKey("/Resources"); + } + as_resources.mergeResources( + ff.getInheritableFieldValue("/DR")); } else { QTC::TC("qpdf", "QPDFPageDocumentHelper non-widget annotation"); } - new_content += aoh.getPageContentForAppearance(rotate); + std::set names = resources.getResourceNames(); + std::string name; + while (next_fx < 1000000) + { + std::string candidate = "/Fxo" + QUtil::int_to_string(next_fx); + ++next_fx; + if (names.count(candidate) == 0) + { + name = candidate; + break; + } + } + if (name.empty()) + { + // There are already more than a million /Fxo names. + // Somehow I doubt this is going to actually happen. + // Just pick a name and forget conflicts. + name = "/FxConflict"; + } + resources.mergeResources( + QPDFObjectHandle::parse( + "<< /XObject << " + name + " null >> >>")); + resources.getKey("/XObject").replaceKey(name, as); + new_content += aoh.getPageContentForAppearance(name, rotate); } else { diff --git a/qpdf/qpdf.testcov b/qpdf/qpdf.testcov index 37ecb28a..3c40b734 100644 --- a/qpdf/qpdf.testcov +++ b/qpdf/qpdf.testcov @@ -371,12 +371,9 @@ qpdf required parameter 0 qpdf required choices 0 QPDFObjectHandle merge top type mismatch 0 QPDFObjectHandle merge shallow copy 0 -QPDFObjectHandle nested merge 0 QPDFObjectHandle merge array 0 QPDFObjectHandle merge array dup 0 QPDFObjectHandle merge copy from other 0 -QPDFObjectHandle merge loop 0 -QPDFObjectHandle merge equal indirect 0 QPDFAnnotationObjectHelper explicit matrix 0 QPDFAnnotationObjectHelper default matrix 0 QPDFAnnotationObjectHelper rotate 90 0 @@ -389,3 +386,5 @@ QPDFPageDocumentHelper non-widget annotation 0 QPDFPageDocumentHelper remove annots 0 QPDFPageDocumentHelper replace indirect annots 0 QPDFPageDocumentHelper replace direct annots 0 +QPDFObjectHandle replace with copy 0 +QPDFPageDocumentHelper indirect as resources 0 diff --git a/qpdf/qtest/qpdf/comment-annotation-direct-out.pdf b/qpdf/qtest/qpdf/comment-annotation-direct-out.pdf index 4c93ee8e..529ba511 100644 --- a/qpdf/qtest/qpdf/comment-annotation-direct-out.pdf +++ b/qpdf/qtest/qpdf/comment-annotation-direct-out.pdf @@ -38,19 +38,13 @@ endobj ] /Parent 2 0 R /Resources << - /ExtGState << - /GS0 << - /AIS false - /BM /Normal - /CA .6 - /Type /ExtGState - /ca .6 - >> - >> /Font << /F1 11 0 R >> /ProcSet 12 0 R + /XObject << + /Fxo1 13 0 R + >> >> /Type /Page >> @@ -60,7 +54,7 @@ endobj << /F 28 /Open false - /Parent 13 0 R + /Parent 15 0 R /Rect [ 612 601 @@ -114,14 +108,13 @@ stream Q q 1.00000 0.00000 0.00000 1.00000 235.00000 703.00000 cm -0.00000 0.00000 18.00000 18.00000 re W n -q 1 1 1 rg 0 i 1 w 4 M 1 j 0 J []0 d /GS0 gs 1 0 0 1 9 5.0908 cm 7.74 12.616 m -7.74 12.616 l -8.274 12.616 -8.707 12.184 -8.707 11.649 c -8.707 -3.831 l -8.707 -4.365 -8.274 -4.798 -7.74 -4.798 c 7.74 -4.798 l 8.274 -4.798 8.707 -4.365 8.707 -3.831 c 8.707 11.649 l 8.707 12.184 8.274 12.616 7.74 12.616 c h f Q 0 G 1 1 0 rg 0 i 0.60 w 4 M 1 j 0 J []0 d 1 1 0 rg 0 G 0 i 0.59 w 4 M 1 j 0 J []0 d 1 0 0 1 9 5.0908 cm 0 0 m -0.142 0 -0.28 0.008 -0.418 0.015 c -2.199 -1.969 -5.555 -2.242 -4.642 -1.42 c -4.024 -0.862 -3.916 0.111 -3.954 0.916 c -5.658 1.795 -6.772 3.222 -6.772 4.839 c -6.772 7.509 -3.74 9.674 0 9.674 c 3.74 9.674 6.772 7.509 6.772 4.839 c 6.772 2.167 3.74 0 0 0 c 7.74 12.616 m -7.74 12.616 l -8.274 12.616 -8.707 12.184 -8.707 11.649 c -8.707 -3.831 l -8.707 -4.365 -8.274 -4.798 -7.74 -4.798 c 7.74 -4.798 l 8.274 -4.798 8.707 -4.365 8.707 -3.831 c 8.707 11.649 l 8.707 12.184 8.274 12.616 7.74 12.616 c b +/Fxo1 Do Q endstream endobj 10 0 obj -1032 +71 endobj 11 0 obj @@ -142,9 +135,42 @@ endobj endobj 13 0 obj +<< + /BBox [ + 0 + 0 + 18 + 18 + ] + /Resources << + /ExtGState << + /GS0 << + /AIS false + /BM /Normal + /CA .6 + /Type /ExtGState + /ca .6 + >> + >> + >> + /Subtype /Form + /Type /XObject + /Length 14 0 R +>> +stream +q 1 1 1 rg 0 i 1 w 4 M 1 j 0 J []0 d /GS0 gs 1 0 0 1 9 5.0908 cm 7.74 12.616 m -7.74 12.616 l -8.274 12.616 -8.707 12.184 -8.707 11.649 c -8.707 -3.831 l -8.707 -4.365 -8.274 -4.798 -7.74 -4.798 c 7.74 -4.798 l 8.274 -4.798 8.707 -4.365 8.707 -3.831 c 8.707 11.649 l 8.707 12.184 8.274 12.616 7.74 12.616 c h f Q 0 G 1 1 0 rg 0 i 0.60 w 4 M 1 j 0 J []0 d 1 1 0 rg 0 G 0 i 0.59 w 4 M 1 j 0 J []0 d 1 0 0 1 9 5.0908 cm 0 0 m -0.142 0 -0.28 0.008 -0.418 0.015 c -2.199 -1.969 -5.555 -2.242 -4.642 -1.42 c -4.024 -0.862 -3.916 0.111 -3.954 0.916 c -5.658 1.795 -6.772 3.222 -6.772 4.839 c -6.772 7.509 -3.74 9.674 0 9.674 c 3.74 9.674 6.772 7.509 6.772 4.839 c 6.772 2.167 3.74 0 0 0 c 7.74 12.616 m -7.74 12.616 l -8.274 12.616 -8.707 12.184 -8.707 11.649 c -8.707 -3.831 l -8.707 -4.365 -8.274 -4.798 -7.74 -4.798 c 7.74 -4.798 l 8.274 -4.798 8.707 -4.365 8.707 -3.831 c 8.707 11.649 l 8.707 12.184 8.274 12.616 7.74 12.616 c b +endstream +endobj + +%QDF: ignore_newline +14 0 obj +928 +endobj + +15 0 obj << /AP << - /N 14 0 R + /N 13 0 R >> /C [ 1 @@ -171,62 +197,29 @@ endobj >> endobj -14 0 obj -<< - /BBox [ - 0 - 0 - 18 - 18 - ] - /Resources << - /ExtGState << - /GS0 << - /AIS false - /BM /Normal - /CA .6 - /Type /ExtGState - /ca .6 - >> - >> - >> - /Subtype /Form - /Type /XObject - /Length 15 0 R ->> -stream -q 1 1 1 rg 0 i 1 w 4 M 1 j 0 J []0 d /GS0 gs 1 0 0 1 9 5.0908 cm 7.74 12.616 m -7.74 12.616 l -8.274 12.616 -8.707 12.184 -8.707 11.649 c -8.707 -3.831 l -8.707 -4.365 -8.274 -4.798 -7.74 -4.798 c 7.74 -4.798 l 8.274 -4.798 8.707 -4.365 8.707 -3.831 c 8.707 11.649 l 8.707 12.184 8.274 12.616 7.74 12.616 c h f Q 0 G 1 1 0 rg 0 i 0.60 w 4 M 1 j 0 J []0 d 1 1 0 rg 0 G 0 i 0.59 w 4 M 1 j 0 J []0 d 1 0 0 1 9 5.0908 cm 0 0 m -0.142 0 -0.28 0.008 -0.418 0.015 c -2.199 -1.969 -5.555 -2.242 -4.642 -1.42 c -4.024 -0.862 -3.916 0.111 -3.954 0.916 c -5.658 1.795 -6.772 3.222 -6.772 4.839 c -6.772 7.509 -3.74 9.674 0 9.674 c 3.74 9.674 6.772 7.509 6.772 4.839 c 6.772 2.167 3.74 0 0 0 c 7.74 12.616 m -7.74 12.616 l -8.274 12.616 -8.707 12.184 -8.707 11.649 c -8.707 -3.831 l -8.707 -4.365 -8.274 -4.798 -7.74 -4.798 c 7.74 -4.798 l 8.274 -4.798 8.707 -4.365 8.707 -3.831 c 8.707 11.649 l 8.707 12.184 8.274 12.616 7.74 12.616 c b -endstream -endobj - -%QDF: ignore_newline -15 0 obj -928 -endobj - xref 0 16 0000000000 65535 f 0000000025 00000 n 0000000079 00000 n 0000000161 00000 n -0000000553 00000 n -0000000716 00000 n -0000000773 00000 n -0000000814 00000 n -0000000913 00000 n -0000000955 00000 n -0000002043 00000 n -0000002065 00000 n -0000002184 00000 n -0000002220 00000 n -0000002550 00000 n -0000003794 00000 n +0000000453 00000 n +0000000616 00000 n +0000000673 00000 n +0000000714 00000 n +0000000813 00000 n +0000000855 00000 n +0000000982 00000 n +0000001002 00000 n +0000001121 00000 n +0000001157 00000 n +0000002401 00000 n +0000002422 00000 n trailer << /Root 1 0 R /Size 16 /ID [<31415926535897932384626433832795>] >> startxref -3815 +2752 %%EOF diff --git a/qpdf/qtest/qpdf/comment-annotation-out.pdf b/qpdf/qtest/qpdf/comment-annotation-out.pdf index f71f1f84..e7728a2d 100644 --- a/qpdf/qtest/qpdf/comment-annotation-out.pdf +++ b/qpdf/qtest/qpdf/comment-annotation-out.pdf @@ -36,19 +36,13 @@ endobj ] /Parent 2 0 R /Resources << - /ExtGState << - /GS0 << - /AIS false - /BM /Normal - /CA .6 - /Type /ExtGState - /ca .6 - >> - >> /Font << /F1 11 0 R >> /ProcSet 12 0 R + /XObject << + /Fxo1 13 0 R + >> >> /Type /Page >> @@ -56,7 +50,7 @@ endobj 4 0 obj [ - 13 0 R + 15 0 R ] endobj @@ -102,14 +96,13 @@ stream Q q 1.00000 0.00000 0.00000 1.00000 235.00000 703.00000 cm -0.00000 0.00000 18.00000 18.00000 re W n -q 1 1 1 rg 0 i 1 w 4 M 1 j 0 J []0 d /GS0 gs 1 0 0 1 9 5.0908 cm 7.74 12.616 m -7.74 12.616 l -8.274 12.616 -8.707 12.184 -8.707 11.649 c -8.707 -3.831 l -8.707 -4.365 -8.274 -4.798 -7.74 -4.798 c 7.74 -4.798 l 8.274 -4.798 8.707 -4.365 8.707 -3.831 c 8.707 11.649 l 8.707 12.184 8.274 12.616 7.74 12.616 c h f Q 0 G 1 1 0 rg 0 i 0.60 w 4 M 1 j 0 J []0 d 1 1 0 rg 0 G 0 i 0.59 w 4 M 1 j 0 J []0 d 1 0 0 1 9 5.0908 cm 0 0 m -0.142 0 -0.28 0.008 -0.418 0.015 c -2.199 -1.969 -5.555 -2.242 -4.642 -1.42 c -4.024 -0.862 -3.916 0.111 -3.954 0.916 c -5.658 1.795 -6.772 3.222 -6.772 4.839 c -6.772 7.509 -3.74 9.674 0 9.674 c 3.74 9.674 6.772 7.509 6.772 4.839 c 6.772 2.167 3.74 0 0 0 c 7.74 12.616 m -7.74 12.616 l -8.274 12.616 -8.707 12.184 -8.707 11.649 c -8.707 -3.831 l -8.707 -4.365 -8.274 -4.798 -7.74 -4.798 c 7.74 -4.798 l 8.274 -4.798 8.707 -4.365 8.707 -3.831 c 8.707 11.649 l 8.707 12.184 8.274 12.616 7.74 12.616 c b +/Fxo1 Do Q endstream endobj 10 0 obj -1032 +71 endobj 11 0 obj @@ -130,52 +123,6 @@ endobj endobj 13 0 obj -<< - /F 28 - /Open false - /Parent 14 0 R - /Rect [ - 612 - 601 - 792 - 721 - ] - /Subtype /Popup - /Type /Annot ->> -endobj - -14 0 obj -<< - /AP << - /N 15 0 R - >> - /C [ - 1 - 1 - 0 - ] - /CA 1 - /Contents (Salad) - /CreationDate (D:20181231235455Z00'00) - /F 28 - /M (D:20181231235455Z00'00) - /Name /Comment - /P 3 0 R - /Popup 13 0 R - /Rect [ - 235 - 703 - 253 - 721 - ] - /Subtype /Text - /T (Jay Berkenbilt) - /Type /Annot ->> -endobj - -15 0 obj << /BBox [ 0 @@ -196,7 +143,7 @@ endobj >> /Subtype /Form /Type /XObject - /Length 16 0 R + /Length 14 0 R >> stream q 1 1 1 rg 0 i 1 w 4 M 1 j 0 J []0 d /GS0 gs 1 0 0 1 9 5.0908 cm 7.74 12.616 m -7.74 12.616 l -8.274 12.616 -8.707 12.184 -8.707 11.649 c -8.707 -3.831 l -8.707 -4.365 -8.274 -4.798 -7.74 -4.798 c 7.74 -4.798 l 8.274 -4.798 8.707 -4.365 8.707 -3.831 c 8.707 11.649 l 8.707 12.184 8.274 12.616 7.74 12.616 c h f Q 0 G 1 1 0 rg 0 i 0.60 w 4 M 1 j 0 J []0 d 1 1 0 rg 0 G 0 i 0.59 w 4 M 1 j 0 J []0 d 1 0 0 1 9 5.0908 cm 0 0 m -0.142 0 -0.28 0.008 -0.418 0.015 c -2.199 -1.969 -5.555 -2.242 -4.642 -1.42 c -4.024 -0.862 -3.916 0.111 -3.954 0.916 c -5.658 1.795 -6.772 3.222 -6.772 4.839 c -6.772 7.509 -3.74 9.674 0 9.674 c 3.74 9.674 6.772 7.509 6.772 4.839 c 6.772 2.167 3.74 0 0 0 c 7.74 12.616 m -7.74 12.616 l -8.274 12.616 -8.707 12.184 -8.707 11.649 c -8.707 -3.831 l -8.707 -4.365 -8.274 -4.798 -7.74 -4.798 c 7.74 -4.798 l 8.274 -4.798 8.707 -4.365 8.707 -3.831 c 8.707 11.649 l 8.707 12.184 8.274 12.616 7.74 12.616 c b @@ -204,34 +151,80 @@ endstream endobj %QDF: ignore_newline -16 0 obj +14 0 obj 928 endobj +15 0 obj +<< + /F 28 + /Open false + /Parent 16 0 R + /Rect [ + 612 + 601 + 792 + 721 + ] + /Subtype /Popup + /Type /Annot +>> +endobj + +16 0 obj +<< + /AP << + /N 13 0 R + >> + /C [ + 1 + 1 + 0 + ] + /CA 1 + /Contents (Salad) + /CreationDate (D:20181231235455Z00'00) + /F 28 + /M (D:20181231235455Z00'00) + /Name /Comment + /P 3 0 R + /Popup 15 0 R + /Rect [ + 235 + 703 + 253 + 721 + ] + /Subtype /Text + /T (Jay Berkenbilt) + /Type /Annot +>> +endobj + xref 0 17 0000000000 65535 f 0000000025 00000 n 0000000079 00000 n 0000000161 00000 n -0000000543 00000 n -0000000595 00000 n -0000000652 00000 n -0000000693 00000 n -0000000792 00000 n -0000000834 00000 n -0000001922 00000 n -0000001944 00000 n -0000002063 00000 n -0000002099 00000 n -0000002240 00000 n -0000002571 00000 n -0000003815 00000 n +0000000443 00000 n +0000000495 00000 n +0000000552 00000 n +0000000593 00000 n +0000000692 00000 n +0000000734 00000 n +0000000861 00000 n +0000000881 00000 n +0000001000 00000 n +0000001036 00000 n +0000002280 00000 n +0000002301 00000 n +0000002442 00000 n trailer << /Root 1 0 R /Size 17 /ID [<31415926535897932384626433832795>] >> startxref -3836 +2773 %%EOF diff --git a/qpdf/qtest/qpdf/form-field-types-out.pdf b/qpdf/qtest/qpdf/form-field-types-out.pdf index b56d47a0..ec44e3fc 100644 --- a/qpdf/qtest/qpdf/form-field-types-out.pdf +++ b/qpdf/qtest/qpdf/form-field-types-out.pdf @@ -1440,14 +1440,7 @@ endobj /ExtGState << /FXE1 42 0 R >> - /Font << - /ArialMT 26 0 R - /F2 24 0 R - /F3 26 0 R - /FXF1 26 0 R - /Helv 29 0 R - /ZaDi 13 0 R - >> + /Font 4 0 R /ProcSet [ /PDF /Text @@ -1456,6 +1449,19 @@ endobj /ImageB ] /XObject << + /Fxo1 46 0 R + /Fxo10 58 0 R + /Fxo11 66 0 R + /Fxo12 66 0 R + /Fxo13 68 0 R + /Fxo2 48 0 R + /Fxo3 72 0 R + /Fxo4 50 0 R + /Fxo5 52 0 R + /Fxo6 54 0 R + /Fxo7 60 0 R + /Fxo8 56 0 R + /Fxo9 70 0 R >> >> /Type /Page @@ -1478,7 +1484,29 @@ endobj 0 0 ] - /Resources 33 0 R + /Resources << + /Encoding << + /PDFDocEncoding 41 0 R + >> + /Font << + /ArialMT 26 0 R + /F2 24 0 R + /F3 26 0 R + /FXF1 26 0 R + /Helv 29 0 R + /ZaDi 13 0 R + >> + /ProcSet [ + /PDF + /Text + /ImageC + /ImageI + /ImageB + ] + /XObject << + >> + >> + /Subtype /Form /Length 47 0 R >> stream @@ -1520,7 +1548,29 @@ endobj 0 0 ] - /Resources 34 0 R + /Resources << + /Encoding << + /PDFDocEncoding 41 0 R + >> + /Font << + /ArialMT 26 0 R + /F2 24 0 R + /F3 26 0 R + /FXF1 26 0 R + /Helv 29 0 R + /ZaDi 13 0 R + >> + /ProcSet [ + /PDF + /Text + /ImageC + /ImageI + /ImageB + ] + /XObject << + >> + >> + /Subtype /Form /Length 49 0 R >> stream @@ -1562,7 +1612,29 @@ endobj 0 0 ] - /Resources 36 0 R + /Resources << + /Encoding << + /PDFDocEncoding 41 0 R + >> + /Font << + /ArialMT 26 0 R + /F2 24 0 R + /F3 26 0 R + /FXF1 26 0 R + /Helv 29 0 R + /ZaDi 13 0 R + >> + /ProcSet [ + /PDF + /Text + /ImageC + /ImageI + /ImageB + ] + /XObject << + >> + >> + /Subtype /Form /Length 51 0 R >> stream @@ -1583,7 +1655,29 @@ endobj 150 14.2 ] - /Resources 30 0 R + /Resources << + /Encoding << + /PDFDocEncoding 41 0 R + >> + /Font << + /ArialMT 26 0 R + /F2 24 0 R + /F3 26 0 R + /FXF1 26 0 R + /Helv 29 0 R + /ZaDi 13 0 R + >> + /ProcSet [ + /PDF + /Text + /ImageC + /ImageI + /ImageB + ] + /XObject << + >> + >> + /Subtype /Form /Length 53 0 R >> stream @@ -1613,7 +1707,29 @@ endobj 0 0 ] - /Resources 37 0 R + /Resources << + /Encoding << + /PDFDocEncoding 41 0 R + >> + /Font << + /ArialMT 26 0 R + /F2 24 0 R + /F3 26 0 R + /FXF1 26 0 R + /Helv 29 0 R + /ZaDi 13 0 R + >> + /ProcSet [ + /PDF + /Text + /ImageC + /ImageI + /ImageB + ] + /XObject << + >> + >> + /Subtype /Form /Length 55 0 R >> stream @@ -1642,7 +1758,29 @@ endobj 0 0 ] - /Resources 39 0 R + /Resources << + /Encoding << + /PDFDocEncoding 41 0 R + >> + /Font << + /ArialMT 26 0 R + /F2 24 0 R + /F3 26 0 R + /FXF1 26 0 R + /Helv 29 0 R + /ZaDi 13 0 R + >> + /ProcSet [ + /PDF + /Text + /ImageC + /ImageI + /ImageB + ] + /XObject << + >> + >> + /Subtype /Form /Length 57 0 R >> stream @@ -1671,7 +1809,29 @@ endobj 0 0 ] - /Resources 32 0 R + /Resources << + /Encoding << + /PDFDocEncoding 41 0 R + >> + /Font << + /ArialMT 26 0 R + /F2 24 0 R + /F3 26 0 R + /FXF1 26 0 R + /Helv 29 0 R + /ZaDi 13 0 R + >> + /ProcSet [ + /PDF + /Text + /ImageC + /ImageI + /ImageB + ] + /XObject << + >> + >> + /Subtype /Form /Length 59 0 R >> stream @@ -1700,7 +1860,29 @@ endobj 0 0 ] - /Resources 38 0 R + /Resources << + /Encoding << + /PDFDocEncoding 41 0 R + >> + /Font << + /ArialMT 26 0 R + /F2 24 0 R + /F3 26 0 R + /FXF1 26 0 R + /Helv 29 0 R + /ZaDi 13 0 R + >> + /ProcSet [ + /PDF + /Text + /ImageC + /ImageI + /ImageB + ] + /XObject << + >> + >> + /Subtype /Form /Length 61 0 R >> stream @@ -1816,6 +1998,9 @@ endobj 0 ] /Resources << + /Font << + /ZaDi 13 0 R + >> /ProcSet [ /PDF ] @@ -1851,7 +2036,29 @@ endobj 157.1 14.2 ] - /Resources 40 0 R + /Resources << + /Encoding << + /PDFDocEncoding 41 0 R + >> + /Font << + /ArialMT 26 0 R + /F2 24 0 R + /F3 26 0 R + /FXF1 26 0 R + /Helv 29 0 R + /ZaDi 13 0 R + >> + /ProcSet [ + /PDF + /Text + /ImageC + /ImageI + /ImageB + ] + /XObject << + >> + >> + /Subtype /Form /Length 69 0 R >> stream @@ -1888,7 +2095,29 @@ endobj 0 0 ] - /Resources 31 0 R + /Resources << + /Encoding << + /PDFDocEncoding 41 0 R + >> + /Font << + /ArialMT 26 0 R + /F2 24 0 R + /F3 26 0 R + /FXF1 26 0 R + /Helv 29 0 R + /ZaDi 13 0 R + >> + /ProcSet [ + /PDF + /Text + /ImageC + /ImageI + /ImageB + ] + /XObject << + >> + >> + /Subtype /Form /Length 71 0 R >> stream @@ -1930,7 +2159,29 @@ endobj 0 0 ] - /Resources 35 0 R + /Resources << + /Encoding << + /PDFDocEncoding 41 0 R + >> + /Font << + /ArialMT 26 0 R + /F2 24 0 R + /F3 26 0 R + /FXF1 26 0 R + /Helv 29 0 R + /ZaDi 13 0 R + >> + /ProcSet [ + /PDF + /Text + /ImageC + /ImageI + /ImageB + ] + /XObject << + >> + >> + /Subtype /Form /Length 73 0 R >> stream @@ -2400,164 +2651,61 @@ stream Q q 1.00000 0.00000 0.00000 1.00000 165.70000 453.70000 cm -0.00000 0.00000 150.00000 14.20000 re W n -q -Q -/Tx BMC -q -1 1 148 12.2 re -W -n -BT -0 0 0 rg -1 3.28299 Td -/FXF1 11 Tf -(ABC) Tj -ET -Q -EMC - +/Fxo1 Do Q q 1.00000 0.00000 0.00000 1.00000 165.70000 421.20000 cm -0.00000 0.00000 150.00000 14.20000 re W n -q -Q -/Tx BMC -q -1 1 148 12.2 re -W -n -BT -0 0 0 rg -1 3.28299 Td -/FXF1 11 Tf -(DEF) Tj -ET -Q -EMC - +/Fxo2 Do Q q 1.00000 0.00000 0.00000 1.00000 165.70000 388.30000 cm -0.00000 0.00000 150.00000 14.20000 re W n -q -Q - +/Fxo3 Do Q q 1.00000 0.00000 0.00000 1.00000 378.40000 388.40000 cm -0.00000 0.00000 68.50000 14.20000 re W n -q -Q - +/Fxo4 Do Q q 1.00000 0.00000 0.00000 1.00000 165.70000 368.40000 cm -0.00000 0.00000 150.00000 14.20000 re W n -/Tx BMC -EMC +/Fxo5 Do Q q 1.00000 0.00000 0.00000 1.00000 165.70000 348.50000 cm -0.00000 0.00000 72.80000 14.20000 re W n -q -Q - +/Fxo6 Do Q q 1.00000 0.00000 0.00000 1.00000 297.10000 348.50000 cm -0.00000 0.00000 150.10000 14.20000 re W n -q -Q - +/Fxo7 Do Q q 1.00000 0.00000 0.00000 1.00000 165.70000 315.90000 cm -0.00000 0.00000 150.00000 14.20000 re W n -q -Q - +/Fxo8 Do Q q 1.00000 0.00000 0.00000 1.00000 165.70000 283.40000 cm -0.00000 0.00000 75.50000 14.20000 re W n -q -Q -/Tx BMC -q -1 1 60.5 12.2 re -W -n -BT -0 0 0 rg -1 3.24501 Td -/FXF1 11 Tf -(Man) Tj -ET -Q -EMC - +/Fxo9 Do Q q 1.00000 0.00000 0.00000 1.00000 165.70000 250.80000 cm -0.00000 0.00000 72.30000 14.20000 re W n -q -Q - +/Fxo10 Do Q q 1.00000 0.00000 0.00000 1.00000 164.10000 221.40000 cm -0.00000 0.00000 11.30000 10.90000 re W n -q -1 1 9.3 8.9 re -W -n -0 G -2.2 8.9 m -9.1 2 l -9.1 8.9 m -2.2 2 l -s -Q - +/Fxo11 Do Q q 1.00000 0.00000 0.00000 1.00000 154.80000 177.60000 cm -0.00000 0.00000 11.30000 10.90000 re W n -q -1 1 9.3 8.9 re -W -n -0 G -2.2 8.9 m -9.1 2 l -9.1 8.9 m -2.2 2 l -s -Q - +/Fxo12 Do Q q 1.00000 0.00000 0.00000 1.00000 165.70000 143.40000 cm -0.00000 0.00000 157.10000 14.20000 re W n -1 1 0.6 rg -0 0 156.9 14.4 re f* -/Tx BMC -BT -0 0 0 rg /F3 11 Tf -0 g -2 2.106 Td -(Blue) Tj -ET -EMC - +/Fxo13 Do Q endstream endobj 83 0 obj -1852 +891 endobj 84 0 obj @@ -2603,10 +2751,10 @@ endobj >> stream   -    !"#$%&'BP P@RSTUUUUVxVW=WPXXXXYYZZ\)\=]|]^i^}__`H`[eFfz(< +    !"#$%&'BP P@SnUUWXYZ[[]]__aacceefwfghjj+lklnhn{:f  /    endstream endobj startxref -66108 +68762 %%EOF diff --git a/qpdf/qtest/qpdf/form-filled-by-acrobat-out.pdf b/qpdf/qtest/qpdf/form-filled-by-acrobat-out.pdf index bfc3aa10..eb36880a 100644 --- a/qpdf/qtest/qpdf/form-filled-by-acrobat-out.pdf +++ b/qpdf/qtest/qpdf/form-filled-by-acrobat-out.pdf @@ -47,16 +47,20 @@ endobj ] /Parent 4 0 R /Resources << - /Font << - /F1 11 0 R - /F2 12 0 R - /F3 13 0 R - /ZaDi 14 0 R - >> + /Font 11 0 R /ProcSet [ /PDF /Text ] + /XObject << + /Fxo1 12 0 R + /Fxo2 14 0 R + /Fxo3 16 0 R + /Fxo4 18 0 R + /Fxo5 20 0 R + /Fxo6 22 0 R + /Fxo7 24 0 R + >> >> /Type /Page >> @@ -67,8 +71,8 @@ endobj /Count 3 /Kids [ 3 0 R - 15 0 R - 16 0 R + 26 0 R + 27 0 R ] /Type /Pages >> @@ -359,7 +363,163 @@ stream Q q 1.00000 0.00000 0.00000 1.00000 123.40000 692.09998 cm -0.00000 0.00000 137.50000 14.60004 re W n +/Fxo1 Do +Q +q +1.01653 0.00000 0.00000 0.98347 149.30000 648.50000 cm +/Fxo2 Do +Q +q +1.01653 0.00000 0.00000 0.98347 152.70000 627.30000 cm +/Fxo3 Do +Q +q +1.01653 0.00000 0.00000 0.98347 151.30000 601.70000 cm +/Fxo4 Do +Q +q +1.01653 0.00000 0.00000 0.98347 121.90000 559.10000 cm +/Fxo5 Do +Q +q +1.01653 0.00000 0.00000 0.98347 118.60000 527.70000 cm +/Fxo6 Do +Q +q +1.01653 0.00000 0.00000 0.98347 118.60000 500.50000 cm +/Fxo7 Do +Q +endstream +endobj + +10 0 obj +479 +endobj + +11 0 obj +<< + /F1 28 0 R + /F2 29 0 R + /F3 30 0 R + /ZaDi 31 0 R +>> +endobj + +12 0 obj +<< + /BBox [ + 0 + 0 + 137.5 + 14.600037 + ] + /FormType 1 + /Matrix [ + 1 + 0 + 0 + 1 + 0 + 0 + ] + /Resources << + /Font << + /F1 << + /BaseFont /BAAAAA+LiberationSerif + /FirstChar 0 + /FontDescriptor 32 0 R + /LastChar 33 + /Subtype /TrueType + /ToUnicode 33 0 R + /Type /Font + /Widths [ + 777 + 943 + 500 + 443 + 333 + 333 + 389 + 250 + 777 + 500 + 333 + 500 + 443 + 610 + 500 + 277 + 556 + 277 + 277 + 500 + 722 + 500 + 250 + 722 + 443 + 333 + 500 + 500 + 500 + 722 + 722 + 500 + 610 + 556 + ] + >> + /F2 29 0 R + /F3 << + /BaseFont /DAAAAA+LiberationSans + /FirstChar 0 + /FontDescriptor 35 0 R + /LastChar 22 + /Subtype /TrueType + /ToUnicode 36 0 R + /Type /Font + /Widths [ + 750 + 333 + 556 + 333 + 556 + 556 + 500 + 722 + 556 + 556 + 500 + 277 + 666 + 556 + 500 + 556 + 556 + 777 + 556 + 277 + 222 + 556 + 556 + ] + >> + /ZaDi << + /BaseFont /ZapfDingbats + /Subtype /Type1 + /Type /Font + >> + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 13 0 R +>> +stream /Tx BMC q 1 1 135.5 12.600037 re @@ -369,15 +529,42 @@ n BT 0.18039 0.20392 0.21176 rg /F2 12 Tf 2 3.208019 Td -(abcpotato) Tj +(abc\240potato) Tj ET Q EMC +endstream +endobj -Q -q -1.01653 0.00000 0.00000 0.98347 149.30000 648.50000 cm -0.00000 0.00000 12.10000 12.10000 re W n +13 0 obj +142 +endobj + +14 0 obj +<< + /BBox [ + 0 + 0 + 12.1 + 12.1 + ] + /Resources << + /Font << + /F1 28 0 R + /F2 29 0 R + /F3 30 0 R + /ZaDi 31 0 R + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 15 0 R +>> +stream /Tx BMC q BT 0.18039 0.20392 0.21176 rg /ZaDi 12.1 Tf @@ -391,32 +578,140 @@ Q 3.6 7.4 4.6 8.4 6 8.4 c f* EMC +endstream +endobj -Q -q -1.01653 0.00000 0.00000 0.98347 152.70000 627.30000 cm -0.00000 0.00000 12.10000 12.10000 re W n +15 0 obj +205 +endobj + +16 0 obj +<< + /BBox [ + 0 + 0 + 12.1 + 12.1 + ] + /Resources << + /Font << + /F1 28 0 R + /F2 29 0 R + /F3 30 0 R + /ZaDi 31 0 R + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 17 0 R +>> +stream /Tx BMC EMC +endstream +endobj -Q -q -1.01653 0.00000 0.00000 0.98347 151.30000 601.70000 cm -0.00000 0.00000 12.10000 12.10000 re W n +17 0 obj +12 +endobj + +18 0 obj +<< + /BBox [ + 0 + 0 + 12.1 + 12.1 + ] + /Resources << + /Font << + /F1 28 0 R + /F2 29 0 R + /F3 30 0 R + /ZaDi 31 0 R + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 19 0 R +>> +stream /Tx BMC EMC +endstream +endobj -Q -q -1.01653 0.00000 0.00000 0.98347 121.90000 559.10000 cm -0.00000 0.00000 12.10000 12.10000 re W n +19 0 obj +12 +endobj + +20 0 obj +<< + /BBox [ + 0 + 0 + 12.1 + 12.1 + ] + /Resources << + /Font << + /F1 28 0 R + /F2 29 0 R + /F3 30 0 R + /ZaDi 31 0 R + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 21 0 R +>> +stream /Tx BMC EMC +endstream +endobj -Q -q -1.01653 0.00000 0.00000 0.98347 118.60000 527.70000 cm -0.00000 0.00000 12.10000 12.10000 re W n +21 0 obj +12 +endobj + +22 0 obj +<< + /BBox [ + 0 + 0 + 12.1 + 12.1 + ] + /Resources << + /Font << + /F1 28 0 R + /F2 29 0 R + /F3 30 0 R + /ZaDi 31 0 R + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 23 0 R +>> +stream /Tx BMC q BT 0.18039 0.20392 0.21176 rg /ZaDi 12.1 Tf @@ -424,30 +719,119 @@ q BT ET Q EMC - -Q -q -1.01653 0.00000 0.00000 0.98347 118.60000 500.50000 cm -0.00000 0.00000 12.10000 12.10000 re W n -/Tx BMC -EMC - -Q endstream endobj -10 0 obj -1184 +23 0 obj +81 endobj -11 0 obj +24 0 obj +<< + /BBox [ + 0 + 0 + 12.1 + 12.1 + ] + /Resources << + /Font << + /F1 28 0 R + /F2 29 0 R + /F3 30 0 R + /ZaDi 31 0 R + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 25 0 R +>> +stream +/Tx BMC +EMC +endstream +endobj + +25 0 obj +12 +endobj + +%% Page 2 +26 0 obj +<< + /Contents 38 0 R + /Group << + /CS /DeviceRGB + /I true + /S /Transparency + >> + /MediaBox [ + 0 + 0 + 611.971653543307 + 791.971653543307 + ] + /Parent 4 0 R + /Resources << + /Font 11 0 R + /ProcSet [ + /PDF + /Text + ] + >> + /Type /Page +>> +endobj + +%% Page 3 +27 0 obj +<< + /Contents [ + 40 0 R + 42 0 R + 44 0 R + ] + /Group << + /CS /DeviceRGB + /I true + /S /Transparency + >> + /MediaBox [ + 0 + 0 + 611.971653543307 + 791.971653543307 + ] + /Parent 4 0 R + /Resources << + /Font 11 0 R + /ProcSet [ + /PDF + /Text + ] + /XObject << + /Fxo1 46 0 R + /Fxo2 48 0 R + /Fxo3 50 0 R + /Fxo4 52 0 R + >> + >> + /Type /Page +>> +endobj + +28 0 obj << /BaseFont /BAAAAA+LiberationSerif /FirstChar 0 - /FontDescriptor 17 0 R + /FontDescriptor 32 0 R /LastChar 33 /Subtype /TrueType - /ToUnicode 18 0 R + /ToUnicode 33 0 R /Type /Font /Widths [ 777 @@ -488,12 +872,12 @@ endobj >> endobj -12 0 obj +29 0 obj << /BaseFont /LiberationSans /Encoding /WinAnsiEncoding /FirstChar 32 - /FontDescriptor 20 0 R + /FontDescriptor 54 0 R /LastChar 255 /Subtype /TrueType /Type /Font @@ -726,14 +1110,14 @@ endobj >> endobj -13 0 obj +30 0 obj << /BaseFont /DAAAAA+LiberationSans /FirstChar 0 - /FontDescriptor 21 0 R + /FontDescriptor 35 0 R /LastChar 22 /Subtype /TrueType - /ToUnicode 22 0 R + /ToUnicode 36 0 R /Type /Font /Widths [ 750 @@ -763,7 +1147,7 @@ endobj >> endobj -14 0 obj +31 0 obj << /BaseFont /ZapfDingbats /Subtype /Type1 @@ -771,73 +1155,7 @@ endobj >> endobj -%% Page 2 -15 0 obj -<< - /Contents 24 0 R - /Group << - /CS /DeviceRGB - /I true - /S /Transparency - >> - /MediaBox [ - 0 - 0 - 611.971653543307 - 791.971653543307 - ] - /Parent 4 0 R - /Resources << - /Font 26 0 R - /ProcSet [ - /PDF - /Text - ] - >> - /Type /Page ->> -endobj - -%% Page 3 -16 0 obj -<< - /Contents [ - 27 0 R - 29 0 R - 31 0 R - ] - /Group << - /CS /DeviceRGB - /I true - /S /Transparency - >> - /MediaBox [ - 0 - 0 - 611.971653543307 - 791.971653543307 - ] - /Parent 4 0 R - /Resources << - /Font << - /F1 11 0 R - /F2 12 0 R - /F3 13 0 R - /ZaDi 14 0 R - >> - /ProcSet [ - /PDF - /Text - ] - /XObject << - /RMIm0 33 0 R - >> - >> - /Type /Page ->> -endobj - -17 0 obj +32 0 obj << /Ascent 891 /CapHeight 981 @@ -849,7 +1167,7 @@ endobj 1277 981 ] - /FontFile2 35 0 R + /FontFile2 55 0 R /FontName /BAAAAA+LiberationSerif /ItalicAngle 0 /StemV 80 @@ -857,9 +1175,9 @@ endobj >> endobj -18 0 obj +33 0 obj << - /Length 19 0 R + /Length 34 0 R >> stream /CIDInit/ProcSet findresource begin @@ -917,11 +1235,11 @@ end endstream endobj -19 0 obj +34 0 obj 714 endobj -20 0 obj +35 0 obj << /Ascent 905 /CapHeight 979 @@ -933,26 +1251,7 @@ endobj 1300 979 ] - /FontName /LiberationSans - /ItalicAngle 0 - /StemV 80 - /Type /FontDescriptor ->> -endobj - -21 0 obj -<< - /Ascent 905 - /CapHeight 979 - /Descent -211 - /Flags 4 - /FontBBox [ - -543 - -303 - 1300 - 979 - ] - /FontFile2 37 0 R + /FontFile2 57 0 R /FontName /DAAAAA+LiberationSans /ItalicAngle 0 /StemV 80 @@ -960,9 +1259,9 @@ endobj >> endobj -22 0 obj +36 0 obj << - /Length 23 0 R + /Length 37 0 R >> stream /CIDInit/ProcSet findresource begin @@ -1009,14 +1308,14 @@ end endstream endobj -23 0 obj +37 0 obj 582 endobj %% Contents for page 2 -24 0 obj +38 0 obj << - /Length 25 0 R + /Length 39 0 R >> stream 0.1 w @@ -1282,37 +1581,28 @@ endstream endobj %QDF: ignore_newline -25 0 obj +39 0 obj 2634 endobj -26 0 obj -<< - /F1 11 0 R - /F2 12 0 R - /F3 13 0 R - /ZaDi 14 0 R ->> -endobj - %% Contents for page 3 -27 0 obj +40 0 obj << - /Length 28 0 R + /Length 41 0 R >> stream q endstream endobj -28 0 obj +41 0 obj 2 endobj %% Contents for page 3 -29 0 obj +42 0 obj << - /Length 30 0 R + /Length 43 0 R >> stream 0.1 w @@ -1401,28 +1691,100 @@ endstream endobj %QDF: ignore_newline -30 0 obj +43 0 obj 1753 endobj %% Contents for page 3 -31 0 obj +44 0 obj << - /Length 32 0 R + /Length 45 0 R >> stream Q q 1.01653 0.00000 0.00000 0.98347 118.60000 555.70000 cm -0.00000 0.00000 12.10000 12.10000 re W n -/Tx BMC -EMC - +/Fxo1 Do Q q 1.01653 0.00000 0.00000 0.98347 119.30000 514.80000 cm -0.00000 0.00000 12.10000 12.10000 re W n +/Fxo2 Do +Q +q +1.01653 0.00000 0.00000 0.98347 121.30000 472.50000 cm +/Fxo3 Do +Q +q +1.00000 0.00000 0.00000 1.00000 113.60000 378.50000 cm +/Fxo4 Do +Q +endstream +endobj + +45 0 obj +275 +endobj + +46 0 obj +<< + /BBox [ + 0 + 0 + 12.1 + 12.1 + ] + /Resources << + /Font << + /F1 28 0 R + /F2 29 0 R + /F3 30 0 R + /ZaDi 31 0 R + >> + /ProcSet [ + /PDF + /Text + ] + >> + /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.1 + 12.1 + ] + /Resources << + /Font << + /F1 28 0 R + /F2 29 0 R + /F3 30 0 R + /ZaDi 31 0 R + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 49 0 R +>> +stream /Tx BMC q BT 0.18039 0.20392 0.21176 rg /ZaDi 12.1 Tf @@ -1436,63 +1798,114 @@ Q 3.6 7.4 4.6 8.4 6 8.4 c f* EMC +endstream +endobj -Q -q -1.01653 0.00000 0.00000 0.98347 121.30000 472.50000 cm -0.00000 0.00000 12.10000 12.10000 re W n +49 0 obj +205 +endobj + +50 0 obj +<< + /BBox [ + 0 + 0 + 12.1 + 12.1 + ] + /Resources << + /Font << + /F1 28 0 R + /F2 29 0 R + /F3 30 0 R + /ZaDi 31 0 R + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 51 0 R +>> +stream /Tx BMC EMC +endstream +endobj -Q -q -1.00000 0.00000 0.00000 1.00000 113.60000 378.50000 cm -0.00000 0.00000 237.69998 17.79999 re W n +51 0 obj +12 +endobj + +52 0 obj +<< + /BBox [ + 0 + 0 + 237.699982 + 17.799988 + ] + /FormType 1 + /Matrix [ + 1 + 0 + 0 + 1 + 0 + 0 + ] + /Resources << + /Font << + /F1 28 0 R + /F2 29 0 R + /F3 30 0 R + /ZaDi 31 0 R + >> + /XObject << + /RMIm0 59 0 R + >> + >> + /Subtype /Form + /Type /XObject + /Length 53 0 R +>> +stream q 235.699982 0 0 15.799988 1 1 cm /RMIm0 Do -Q - Q endstream endobj -32 0 obj -683 +53 0 obj +46 endobj -33 0 obj +54 0 obj << - /BitsPerComponent 8 - /ColorSpace /DeviceRGB - /Height 66 - /Mask [ - 255 - 255 - 255 - 255 - 255 - 255 + /Ascent 905 + /CapHeight 979 + /Descent -211 + /Flags 4 + /FontBBox [ + -543 + -303 + 1300 + 979 ] - /Subtype /Image - /Type /XObject - /Width 983 - /Length 34 0 R + /FontName /LiberationSans + /ItalicAngle 0 + /StemV 80 + /Type /FontDescriptor >> -stream -𤧧-35-35-35-35HMO-35-35-35-35-35-35-35HMO-35-35-35曞󛞟-35-35-35-35HMO-35-35-35-35-35SXZ-35-35/57-35-35-35-35-35-35-35HMO-35-35-35-35-35-35_ce-35-35-35-35-35W[]-35-35-35-35HMO-35-35-356;=-35-35-35-35-35-35|swx-35-35-35-35-35-35HMO-35-35-35vz{-35-35-35-35179-358>@>CE-35-35-35-35-35-35HMO-35-35-35-35-35swyswx-35178-35-35-35-35;AC-35-35-35-35HMO-35-35-35-35-35?DF39;-35osu-35-35-35-35~-35-35-35-35HMO-35-35-35Y^_-35-35-35-35TY[-35GLN-35-35-35-35-35-35HMO-35-35-35-35-35-35-35-35-35afg-35-35갲cgiRWYRWXcgi|Пswx^cdNSUW[]imn-35-35-35-35Пswx^cdNSUW[]imnʉjopRWXY^_osuHMO-35-35-35-35-35?DF-35^cd-35-35179-35afgش䴶´Ӵ178-35-35-35-35-35-35-35-35-35swxRWY-35-35-35-35-35-35-35-35-35>CE-35-35-35-35RWY-35-35-35-35-35-35-35-35-35>CEJOQ-35-35-35-35-35-35-35-35fklHMO-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35koq>CE-356;=-35-35BGI-356;=-35-359?@-35-35-35{-35-35-35-35-35-35-35-35-35-35-35-35-35[`b-35-35-35-35{-35-35-35-35-35-35-35-35-35-35-35-35-35[`b-35-35-35-35-35-35-35-35-35-35-3539;HMO-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35koq-35-35-35-35-35-35-35-35-35-35-35-35?DF-35-35-3539;imn-35-35-35.46-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35;@B-35-35-35-35-35@FHX]_W\^;@B-35-35-35-35-35178jop-35-35-35-35-359?@cgiosu`ef6;=-35-35-35-35-35X]_-35-35-35-35jop-35-35-35-35-359?@cgiosu`ef6;=-35-35-35-35-35X]_-35-35-35-35-35-35-35-35-35-35[`b-35-35-35-35_ce39;-35-35-35imn8>@-35-35-35~-35-35-35-35]bc-35-35-35-35~-35-35-35-35-35-35-35-35nrs@-35-35-35PUW-35-35-35-35-35-356;=6;=-35-35-35;@B-35-35-35]bc?DF-35-35-35imnDJK-35-35-35-35-35-35-35x|}-35-35-35LQS-35-35-35-35-35-35-35-35-35-35-35-35.46-35-35-35swyHMO-35-35-35PUW-35-35-35-35-35-356;=-35-35-35-35~-35-35-35178-35-35-35.46-35-35-35-35-35-35-35-35`ef-35-35-35-35178-35-35-35-35-35-35-35178-35-35-35-35-35-35-35HMO-35-35-35PUW-35-35-35-35-35-356;=cgi-35-35-35[_a-35-35-35-35-35-35-35-35-35-35-35BGI4:<-35-35-35@-35-35-35-35-35-35-35@FHcgi-35-35-35gkmeij-35-35-3539;-35-35-35>CE❟TY[-35-35-35-35-35-35-35-35-35-35-35-35-35-35_ce178-35-35-35-35-35-35-35-35-35-35-35-35_ce178-35-35-35-35-35-35OTVHMO-35-35-35PUW-35-35-35-35-35-356;=-35-35179swx-35-35-35-35-35DJK-35-35-35-35-35-35-35-35-35.46-35-35-35RWX-35-35-35-35W\^-35-35-35-35-35-35dhj.46-35-35-35RWY178-35-35-35-35-35-35-35.46-35-35-35RWY178-35-35-35-35-35-35@FHHMO-35-35-35PUW-35-35-35-35-35-356;=.46-35-3539;-35-35-35-35-35-35-35-35-35-35-35@FH178-35-35-35-35-35-35TY[~-35-35-35-35嗚6;=-35-35-35-35quv-35-35-35EKL178-35-35-35-35-35-35-35quv-35-35-35EKL178-35-35-35-35-35-35.46HMO-35-35-35PUW-35-35-35-35-35-356;=dhj-35-35-35-35-35-35GLNLQS-35-35DJK-35-35-35-35-35-35-35y}~vz{-35-35-35gkmtxy-35-35-35-35-35-35-35dhj8>@-35-35-35;AC/57-35-35-35178-35-35-35-35-35-35-35/57-35-35-35178-35-35-35-35-35-35-35HMO-35-35-35PUW-35-35-35-35-35-356;=-35-35-35-35{-35-35-35-35178-35-35-354:<-35-35-35-35-35-35-35-3539;-35-35-3539;-35-35-35?DF-35-35-35-35-35-35-35-35178-35-35-35-35-35-35-35-35-35-35-35178-35-35-35-35-35-35-35HMO-35-35-35PUW-35-35-35-35-35-356;=-35-35LQS?DF-35[`b-35-35-35-35lpr-35-35-35-35nst-35-35-35@FH;@B-35-35-35-35-35-35_ceRWX-35-35-35-35-35-35-35@-35-35-35-35-35-35-35gkm-35-35-35-35}-35-35-35.46-35-35-35-35RWX-35-35-35-35-35-35-35-35-35-35-35-35-35RWX-35-35-35-35-35178-35-35-35EKL>CE-35-35-35-35PUW-35-35-35-35-35-35-35-35-35PUW-35JOQ-35-35;@B-35NSU-35-35-35-35RWX-35-35-35@FHJOQ-35-35-35-35-35-35imn39;-35-35-35AGH-35-35-35-35.46-35-35-35ptvhln-35-35-35-35rvwx{}-35-35-35-35-35-35-35-35-35-35hln-35-35-35-35rvwx{}-35-35-35-35-35-35-35-35-35-35UZ[;AC-35-35-35-35-35PUW-35-35-35-35-35-35-35179-35INO-35-354:<-35INO-35-35HMO-35-35-35>CE-35-35-35-35{-35-35-35-35-35-35PUW-35-35-35-35EKL-35-35-35-356<>̦]bc-35-35-35-35178-35-35-35-35-358>@~hln-35-35-35-35-35-35-35-35|-35-35-35-35-35-35-35-35-358>@~hln-35-35-35-35-35-35-35-35|RWX-35-35-35-35.46ptvSXZ-35-35-35-35-35-35-35PUW-35-35-35-35-35-35-35-35Y^_lprptv-35-35-35-35x{}-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35/57-35-35-35-35;ACvz{vz{vz{vz{vz{vz{vz{vz{vz{vz{vz{vz{vz{vz{vz{-35-35-35-35cgi;AC-35-35-35@FH\ab-35-35-35-35swx\ab-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35]bc-35-35-35-35-35-35-35-35-35-35-35-35INO.46-35-35-35-35-35-35-35-35-35/57-35-35-35-35-35-35-35-35.46-35-35-35-35-35-35-35-35-35/57-35-35-35-35[_a-35-35-35-35-35-35-35-35-35-35koq񉌍-35-35-35PUW-35-35-35OTV-35-35-35-35-35-35-35-35-35-35.46-35-35x{}INO-35-35-35/57-35-35-35-35{-35-35-35-35\ab-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35hln/57-35-35-35-35-35-35-35UZ[x|}/57-35-35-35-35-356;=~-35-35-35-35-35-35-35-35x|}/57-35-35-35-35-356;=~-35-35-35-35MRS-35-35-35-35-35-35_ce-35-35-35PUW-35-35-35󐓔6<>-35-35-35-35EKLSXZ-35-35eij-35-35-35-35-35-35afg-35-35-35-35-35-35-354:<\ab-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35ҽηη®-35-35-35||-35-35-3539;-35-35;@B-35-35-35DIK-35-35-35ino-35-35-35]bcʴ6<>-35-35-35-35> stream true @cmapcvt =O;fpgm\glyfX h&|head026hheahy3$hmtx }3@locan&3Fmaxp9X4 name?H40 vpostd$? prepLb?  @@ -1549,14 +1962,14 @@ endstream endobj %QDF: ignore_newline -36 0 obj +56 0 obj 17240 endobj -37 0 obj +57 0 obj << /Length1 11088 - /Length 38 0 R + /Length 58 0 R >> stream true @cmapU=8Hcvt K&fpgm\hglyfQe hheadAI.6hheae$hmtx4SZloca,%<0maxpg/l name R ^post*' prepI( C  @@ -1597,58 +2010,108 @@ endstream endobj %QDF: ignore_newline -38 0 obj +58 0 obj 11088 endobj +59 0 obj +<< + /BitsPerComponent 8 + /ColorSpace /DeviceRGB + /Height 66 + /Mask [ + 255 + 255 + 255 + 255 + 255 + 255 + ] + /Subtype /Image + /Type /XObject + /Width 983 + /Length 60 0 R +>> +stream +𤧧-35-35-35-35HMO-35-35-35-35-35-35-35HMO-35-35-35曞󛞟-35-35-35-35HMO-35-35-35-35-35SXZ-35-35/57-35-35-35-35-35-35-35HMO-35-35-35-35-35-35_ce-35-35-35-35-35W[]-35-35-35-35HMO-35-35-356;=-35-35-35-35-35-35|swx-35-35-35-35-35-35HMO-35-35-35vz{-35-35-35-35179-358>@>CE-35-35-35-35-35-35HMO-35-35-35-35-35swyswx-35178-35-35-35-35;AC-35-35-35-35HMO-35-35-35-35-35?DF39;-35osu-35-35-35-35~-35-35-35-35HMO-35-35-35Y^_-35-35-35-35TY[-35GLN-35-35-35-35-35-35HMO-35-35-35-35-35-35-35-35-35afg-35-35갲cgiRWYRWXcgi|Пswx^cdNSUW[]imn-35-35-35-35Пswx^cdNSUW[]imnʉjopRWXY^_osuHMO-35-35-35-35-35?DF-35^cd-35-35179-35afgش䴶´Ӵ178-35-35-35-35-35-35-35-35-35swxRWY-35-35-35-35-35-35-35-35-35>CE-35-35-35-35RWY-35-35-35-35-35-35-35-35-35>CEJOQ-35-35-35-35-35-35-35-35fklHMO-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35koq>CE-356;=-35-35BGI-356;=-35-359?@-35-35-35{-35-35-35-35-35-35-35-35-35-35-35-35-35[`b-35-35-35-35{-35-35-35-35-35-35-35-35-35-35-35-35-35[`b-35-35-35-35-35-35-35-35-35-35-3539;HMO-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35koq-35-35-35-35-35-35-35-35-35-35-35-35?DF-35-35-3539;imn-35-35-35.46-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35;@B-35-35-35-35-35@FHX]_W\^;@B-35-35-35-35-35178jop-35-35-35-35-359?@cgiosu`ef6;=-35-35-35-35-35X]_-35-35-35-35jop-35-35-35-35-359?@cgiosu`ef6;=-35-35-35-35-35X]_-35-35-35-35-35-35-35-35-35-35[`b-35-35-35-35_ce39;-35-35-35imn8>@-35-35-35~-35-35-35-35]bc-35-35-35-35~-35-35-35-35-35-35-35-35nrs@-35-35-35PUW-35-35-35-35-35-356;=6;=-35-35-35;@B-35-35-35]bc?DF-35-35-35imnDJK-35-35-35-35-35-35-35x|}-35-35-35LQS-35-35-35-35-35-35-35-35-35-35-35-35.46-35-35-35swyHMO-35-35-35PUW-35-35-35-35-35-356;=-35-35-35-35~-35-35-35178-35-35-35.46-35-35-35-35-35-35-35-35`ef-35-35-35-35178-35-35-35-35-35-35-35178-35-35-35-35-35-35-35HMO-35-35-35PUW-35-35-35-35-35-356;=cgi-35-35-35[_a-35-35-35-35-35-35-35-35-35-35-35BGI4:<-35-35-35@-35-35-35-35-35-35-35@FHcgi-35-35-35gkmeij-35-35-3539;-35-35-35>CE❟TY[-35-35-35-35-35-35-35-35-35-35-35-35-35-35_ce178-35-35-35-35-35-35-35-35-35-35-35-35_ce178-35-35-35-35-35-35OTVHMO-35-35-35PUW-35-35-35-35-35-356;=-35-35179swx-35-35-35-35-35DJK-35-35-35-35-35-35-35-35-35.46-35-35-35RWX-35-35-35-35W\^-35-35-35-35-35-35dhj.46-35-35-35RWY178-35-35-35-35-35-35-35.46-35-35-35RWY178-35-35-35-35-35-35@FHHMO-35-35-35PUW-35-35-35-35-35-356;=.46-35-3539;-35-35-35-35-35-35-35-35-35-35-35@FH178-35-35-35-35-35-35TY[~-35-35-35-35嗚6;=-35-35-35-35quv-35-35-35EKL178-35-35-35-35-35-35-35quv-35-35-35EKL178-35-35-35-35-35-35.46HMO-35-35-35PUW-35-35-35-35-35-356;=dhj-35-35-35-35-35-35GLNLQS-35-35DJK-35-35-35-35-35-35-35y}~vz{-35-35-35gkmtxy-35-35-35-35-35-35-35dhj8>@-35-35-35;AC/57-35-35-35178-35-35-35-35-35-35-35/57-35-35-35178-35-35-35-35-35-35-35HMO-35-35-35PUW-35-35-35-35-35-356;=-35-35-35-35{-35-35-35-35178-35-35-354:<-35-35-35-35-35-35-35-3539;-35-35-3539;-35-35-35?DF-35-35-35-35-35-35-35-35178-35-35-35-35-35-35-35-35-35-35-35178-35-35-35-35-35-35-35HMO-35-35-35PUW-35-35-35-35-35-356;=-35-35LQS?DF-35[`b-35-35-35-35lpr-35-35-35-35nst-35-35-35@FH;@B-35-35-35-35-35-35_ceRWX-35-35-35-35-35-35-35@-35-35-35-35-35-35-35gkm-35-35-35-35}-35-35-35.46-35-35-35-35RWX-35-35-35-35-35-35-35-35-35-35-35-35-35RWX-35-35-35-35-35178-35-35-35EKL>CE-35-35-35-35PUW-35-35-35-35-35-35-35-35-35PUW-35JOQ-35-35;@B-35NSU-35-35-35-35RWX-35-35-35@FHJOQ-35-35-35-35-35-35imn39;-35-35-35AGH-35-35-35-35.46-35-35-35ptvhln-35-35-35-35rvwx{}-35-35-35-35-35-35-35-35-35-35hln-35-35-35-35rvwx{}-35-35-35-35-35-35-35-35-35-35UZ[;AC-35-35-35-35-35PUW-35-35-35-35-35-35-35179-35INO-35-354:<-35INO-35-35HMO-35-35-35>CE-35-35-35-35{-35-35-35-35-35-35PUW-35-35-35-35EKL-35-35-35-356<>̦]bc-35-35-35-35178-35-35-35-35-358>@~hln-35-35-35-35-35-35-35-35|-35-35-35-35-35-35-35-35-358>@~hln-35-35-35-35-35-35-35-35|RWX-35-35-35-35.46ptvSXZ-35-35-35-35-35-35-35PUW-35-35-35-35-35-35-35-35Y^_lprptv-35-35-35-35x{}-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35/57-35-35-35-35;ACvz{vz{vz{vz{vz{vz{vz{vz{vz{vz{vz{vz{vz{vz{vz{-35-35-35-35cgi;AC-35-35-35@FH\ab-35-35-35-35swx\ab-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35]bc-35-35-35-35-35-35-35-35-35-35-35-35INO.46-35-35-35-35-35-35-35-35-35/57-35-35-35-35-35-35-35-35.46-35-35-35-35-35-35-35-35-35/57-35-35-35-35[_a-35-35-35-35-35-35-35-35-35-35koq񉌍-35-35-35PUW-35-35-35OTV-35-35-35-35-35-35-35-35-35-35.46-35-35x{}INO-35-35-35/57-35-35-35-35{-35-35-35-35\ab-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35hln/57-35-35-35-35-35-35-35UZ[x|}/57-35-35-35-35-356;=~-35-35-35-35-35-35-35-35x|}/57-35-35-35-35-356;=~-35-35-35-35MRS-35-35-35-35-35-35_ce-35-35-35PUW-35-35-35󐓔6<>-35-35-35-35EKLSXZ-35-35eij-35-35-35-35-35-35afg-35-35-35-35-35-35-354:<\ab-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35-35ҽηη®-35-35-35||-35-35-3539;-35-35;@B-35-35-35DIK-35-35-35ino-35-35-35]bcʴ6<>-35-35-35-35<31415926535897932384626433832795>] >> startxref -240885 +245469 %%EOF diff --git a/qpdf/qtest/qpdf/manual-appearances-out.pdf b/qpdf/qtest/qpdf/manual-appearances-out.pdf index 5ddddfc5..940af75c 100644 --- a/qpdf/qtest/qpdf/manual-appearances-out.pdf +++ b/qpdf/qtest/qpdf/manual-appearances-out.pdf @@ -55,6 +55,11 @@ endobj /PDF /Text ] + /XObject << + /Fxo1 13 0 R + /Fxo2 15 0 R + /Fxo3 17 0 R + >> >> /StructParents 0 /Type /Page @@ -66,14 +71,14 @@ endobj /Count 9 /Kids [ 3 0 R - 13 0 R - 14 0 R - 15 0 R - 16 0 R - 17 0 R - 18 0 R 19 0 R 20 0 R + 21 0 R + 22 0 R + 23 0 R + 24 0 R + 25 0 R + 26 0 R ] /Type /Pages >> @@ -82,9 +87,9 @@ endobj 5 0 obj << /K [ - 21 0 R + 27 0 R ] - /ParentTree 22 0 R + /ParentTree 28 0 R /RoleMap << /Document /Document /Standard /P @@ -148,7 +153,49 @@ stream Q q 1.00003 0.00000 0.00000 0.99996 129.84900 651.15100 cm -0.00000 0.00000 67.30000 50.95000 re W n +/Fxo1 Do +Q +q +1.00002 0.00000 0.00000 0.99996 129.84900 542.75100 cm +/Fxo2 Do +Q +q +1.00003 0.00000 0.00000 0.99998 294.14900 430.25100 cm +/Fxo3 Do +Q +endstream +endobj + +11 0 obj +207 +endobj + +12 0 obj +<< +>> +endobj + +13 0 obj +<< + /BBox [ + 0 + 0 + 67.3 + 50.95 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 14 0 R +>> +stream q 60 r 1 0 0 RG @@ -157,51 +204,97 @@ q 0 1 0 RG 5 5 15 15 re s Q +endstream +endobj -Q -q -1.00002 0.00000 0.00000 0.99996 129.84900 542.75100 cm -0.00000 0.00000 103.45000 53.00000 re W n +14 0 obj +66 +endobj + +15 0 obj +<< + /BBox [ + 0 + 0 + 103.45 + 53 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 16 0 R +>> +stream q 0 1 0 RG 5 w 0 0 103.45 53 re s 0 0 1 RG 5 5 15 15 re s +1 w +1 0 0 RG +-10 25 m +113.45 25 l +52 -10 m +52 63 l +s Q +endstream +endobj -Q -q -1.00003 0.00000 0.00000 0.99998 294.14900 430.25100 cm -0.00000 0.00000 72.80000 98.00000 re W n +16 0 obj +113 +endobj + +17 0 obj +<< + /BBox [ + 0 + 0 + 72.8 + 98 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 18 0 R +>> +stream q 0 0 1 RG 5 w 0 0 72.8 98 re s 1 0 0 RG 5 5 15 15 re s -Q - Q endstream endobj -11 0 obj -491 -endobj - -12 0 obj -<< ->> +18 0 obj +58 endobj %% Page 2 -13 0 obj +19 0 obj << /Contents [ - 23 0 R - 25 0 R - 27 0 R + 29 0 R + 31 0 R + 33 0 R ] /Group << /CS /DeviceRGB @@ -216,11 +309,16 @@ endobj ] /Parent 4 0 R /Resources << - /Font 29 0 R + /Font 35 0 R /ProcSet [ /PDF /Text ] + /XObject << + /Fxo1 36 0 R + /Fxo2 38 0 R + /Fxo3 40 0 R + >> >> /Rotate 90 /StructParents 0 @@ -229,12 +327,12 @@ endobj endobj %% Page 3 -14 0 obj +20 0 obj << /Contents [ - 30 0 R - 32 0 R - 34 0 R + 42 0 R + 44 0 R + 46 0 R ] /Group << /CS /DeviceRGB @@ -249,11 +347,16 @@ endobj ] /Parent 4 0 R /Resources << - /Font 36 0 R + /Font 48 0 R /ProcSet [ /PDF /Text ] + /XObject << + /Fxo1 49 0 R + /Fxo2 51 0 R + /Fxo3 53 0 R + >> >> /StructParents 0 /Type /Page @@ -261,12 +364,12 @@ endobj endobj %% Page 4 -15 0 obj +21 0 obj << /Contents [ - 37 0 R - 39 0 R - 41 0 R + 55 0 R + 57 0 R + 59 0 R ] /Group << /CS /DeviceRGB @@ -281,11 +384,16 @@ endobj ] /Parent 4 0 R /Resources << - /Font 43 0 R + /Font 61 0 R /ProcSet [ /PDF /Text ] + /XObject << + /Fxo1 62 0 R + /Fxo2 64 0 R + /Fxo3 66 0 R + >> >> /Rotate 90 /StructParents 0 @@ -294,12 +402,12 @@ endobj endobj %% Page 5 -16 0 obj +22 0 obj << /Contents [ - 44 0 R - 46 0 R - 48 0 R + 68 0 R + 70 0 R + 72 0 R ] /Group << /CS /DeviceRGB @@ -314,11 +422,16 @@ endobj ] /Parent 4 0 R /Resources << - /Font 50 0 R + /Font 74 0 R /ProcSet [ /PDF /Text ] + /XObject << + /Fxo1 75 0 R + /Fxo2 77 0 R + /Fxo3 79 0 R + >> >> /Rotate 180 /StructParents 0 @@ -327,12 +440,12 @@ endobj endobj %% Page 6 -17 0 obj +23 0 obj << /Contents [ - 51 0 R - 53 0 R - 55 0 R + 81 0 R + 83 0 R + 85 0 R ] /Group << /CS /DeviceRGB @@ -347,11 +460,16 @@ endobj ] /Parent 4 0 R /Resources << - /Font 57 0 R + /Font 87 0 R /ProcSet [ /PDF /Text ] + /XObject << + /Fxo1 88 0 R + /Fxo2 90 0 R + /Fxo3 92 0 R + >> >> /Rotate 90 /StructParents 0 @@ -360,12 +478,12 @@ endobj endobj %% Page 7 -18 0 obj +24 0 obj << /Contents [ - 58 0 R - 60 0 R - 62 0 R + 94 0 R + 96 0 R + 98 0 R ] /Group << /CS /DeviceRGB @@ -380,11 +498,16 @@ endobj ] /Parent 4 0 R /Resources << - /Font 64 0 R + /Font 100 0 R /ProcSet [ /PDF /Text ] + /XObject << + /Fxo1 101 0 R + /Fxo2 103 0 R + /Fxo3 105 0 R + >> >> /StructParents 0 /Type /Page @@ -392,12 +515,12 @@ endobj endobj %% Page 8 -19 0 obj +25 0 obj << /Contents [ - 65 0 R - 67 0 R - 69 0 R + 107 0 R + 109 0 R + 111 0 R ] /Group << /CS /DeviceRGB @@ -412,11 +535,16 @@ endobj ] /Parent 4 0 R /Resources << - /Font 71 0 R + /Font 113 0 R /ProcSet [ /PDF /Text ] + /XObject << + /Fxo1 114 0 R + /Fxo2 116 0 R + /Fxo3 118 0 R + >> >> /Rotate 270 /StructParents 0 @@ -425,12 +553,12 @@ endobj endobj %% Page 9 -20 0 obj +26 0 obj << /Contents [ - 72 0 R - 74 0 R - 76 0 R + 120 0 R + 122 0 R + 124 0 R ] /Group << /CS /DeviceRGB @@ -445,24 +573,29 @@ endobj ] /Parent 4 0 R /Resources << - /Font 78 0 R + /Font 126 0 R /ProcSet [ /PDF /Text ] + /XObject << + /Fxo1 127 0 R + /Fxo2 129 0 R + /Fxo3 131 0 R + >> >> /StructParents 0 /Type /Page >> endobj -21 0 obj +27 0 obj << /K [ - 79 0 R - 80 0 R - 81 0 R - 82 0 R + 133 0 R + 134 0 R + 135 0 R + 136 0 R ] /P 5 0 R /Pg 3 0 R @@ -471,37 +604,37 @@ endobj >> endobj -22 0 obj +28 0 obj << /Nums [ 0 [ - 80 0 R - 81 0 R - 82 0 R + 134 0 R + 135 0 R + 136 0 R ] ] >> endobj %% Contents for page 2 -23 0 obj +29 0 obj << - /Length 24 0 R + /Length 30 0 R >> stream q endstream endobj -24 0 obj +30 0 obj 2 endobj %% Contents for page 2 -25 0 obj +31 0 obj << - /Length 26 0 R + /Length 32 0 R >> stream 0.1 w @@ -525,325 +658,260 @@ endstream endobj %QDF: ignore_newline -26 0 obj +32 0 obj 240 endobj %% Contents for page 2 -27 0 obj +33 0 obj << - /Length 28 0 R + /Length 34 0 R >> stream Q q 1.00003 0.00000 0.00000 0.99996 129.84900 651.15100 cm -0.00000 0.00000 67.30000 50.95000 re W n -q -1 0 0 RG -5 w -0 0 67.3 50.95 re s -0 1 0 RG -5 5 15 15 re s -Q - +/Fxo1 Do Q q 1.00002 0.00000 0.00000 0.99996 129.84900 542.75100 cm -0.00000 0.00000 103.45000 53.00000 re W n -q -0 1 0 RG -5 w -0 0 103.45 53 re s -0 0 1 RG -5 5 15 15 re s -Q - +/Fxo2 Do Q q 0.00000 1.00003 -0.99998 0.00000 392.14700 528.24900 cm -0.00000 0.00000 72.80000 98.00000 re W n -q -0 0 1 RG -5 w -0 0 72.8 98 re s -1 0 0 RG -5 5 15 15 re s -Q - +/Fxo3 Do Q endstream endobj -28 0 obj -487 -endobj - -29 0 obj -<< ->> -endobj - -%% Contents for page 3 -30 0 obj -<< - /Length 31 0 R ->> -stream -q -endstream -endobj - -31 0 obj -2 -endobj - -%% Contents for page 3 -32 0 obj -<< - /Length 33 0 R ->> -stream -0.1 w -/Artifact BMC -q 0 0.028 611.971 791.971 re -W* n -EMC -/Form<>BDC -0 0 0 RG -1 1 1 rg -127.35 648.65 72.3 55.95 re B* -EMC -/Form<>BDC -127.35 540.25 108.45 58 re B* -EMC -/Form<>BDC -291.65 427.75 77.8 103 re B* -EMC -Q -endstream -endobj - -%QDF: ignore_newline -33 0 obj -240 -endobj - -%% Contents for page 3 34 0 obj -<< - /Length 35 0 R ->> -stream - -Q -q -0.65131 0.36563 -0.46062 0.51700 153.31752 651.15100 cm -0.00000 0.00000 67.30000 50.95000 re W n -q -1 0 0 RG -5 w -0 0 67.3 50.95 re s -0 1 0 RG -5 5 15 15 re s -Q - -Q -q -0.88367 0.26685 0.22710 0.47909 129.84900 542.75100 cm -0.00000 0.00000 103.45000 53.00000 re W n -q -0 1 0 RG -5 w -0 0 103.45 53 re s -0 0 1 RG -5 5 15 15 re s -Q - -Q -q -1.00003 0.00000 0.00000 0.99998 294.14900 430.25100 cm -0.00000 0.00000 72.80000 98.00000 re W n -q -0 0 1 RG -5 w -0 0 72.8 98 re s -1 0 0 RG -5 5 15 15 re s -Q - -Q -endstream +208 endobj 35 0 obj -487 +<< +>> endobj 36 0 obj << ->> -endobj - -%% Contents for page 4 -37 0 obj -<< - /Length 38 0 R + /BBox [ + 0 + 0 + 67.3 + 50.95 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 37 0 R >> stream q -endstream -endobj - -38 0 obj -2 -endobj - -%% Contents for page 4 -39 0 obj -<< - /Length 40 0 R ->> -stream -0.1 w -/Artifact BMC -q 0 0.028 611.971 791.971 re -W* n -EMC -/Form<>BDC -0 0 0 RG -1 1 1 rg -127.35 648.65 72.3 55.95 re B* -EMC -/Form<>BDC -127.35 540.25 108.45 58 re B* -EMC -/Form<>BDC -291.65 427.75 77.8 103 re B* -EMC -Q -endstream -endobj - -%QDF: ignore_newline -40 0 obj -240 -endobj - -%% Contents for page 4 -41 0 obj -<< - /Length 42 0 R ->> -stream - -Q -q -0.65131 0.36563 -0.46062 0.51700 153.31752 651.15100 cm -0.00000 0.00000 67.30000 50.95000 re W n -q -60 r 1 0 0 RG 5 w 0 0 67.3 50.95 re s 0 1 0 RG 5 5 15 15 re s Q +endstream +endobj -Q -q -0.88367 0.26685 0.22710 0.47909 129.84900 542.75100 cm -0.00000 0.00000 103.45000 53.00000 re W n +37 0 obj +61 +endobj + +38 0 obj +<< + /BBox [ + 0 + 0 + 103.45 + 53 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 39 0 R +>> +stream q 0 1 0 RG 5 w 0 0 103.45 53 re s 0 0 1 RG 5 5 15 15 re s +1 w +1 0 0 RG +-10 25 m +113.45 25 l +52 -10 m +52 63 l +s Q +endstream +endobj -Q -q -1.00003 0.00000 0.00000 0.99998 294.14900 430.25100 cm -0.00000 0.00000 72.80000 98.00000 re W n +39 0 obj +113 +endobj + +40 0 obj +<< + /BBox [ + 0 + 0 + 72.8 + 98 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 41 0 R +>> +stream q 0 0 1 RG 5 w 0 0 72.8 98 re s 1 0 0 RG 5 5 15 15 re s -Q - Q endstream endobj +41 0 obj +58 +endobj + +%% Contents for page 3 42 0 obj -492 +<< + /Length 43 0 R +>> +stream +q +endstream endobj 43 0 obj -<< ->> +2 endobj -%% Contents for page 5 +%% Contents for page 3 44 0 obj << /Length 45 0 R >> stream -q +0.1 w +/Artifact BMC +q 0 0.028 611.971 791.971 re +W* n +EMC +/Form<>BDC +0 0 0 RG +1 1 1 rg +127.35 648.65 72.3 55.95 re B* +EMC +/Form<>BDC +127.35 540.25 108.45 58 re B* +EMC +/Form<>BDC +291.65 427.75 77.8 103 re B* +EMC +Q endstream endobj +%QDF: ignore_newline 45 0 obj -2 +240 endobj -%% Contents for page 5 +%% Contents for page 3 46 0 obj << /Length 47 0 R >> stream -0.1 w -/Artifact BMC -q 0 0.028 611.971 791.971 re -W* n -EMC -/Form<>BDC -0 0 0 RG -1 1 1 rg -127.35 648.65 72.3 55.95 re B* -EMC -/Form<>BDC -127.35 540.25 108.45 58 re B* -EMC -/Form<>BDC -291.65 427.75 77.8 103 re B* -EMC -Q -endstream -endobj - -%QDF: ignore_newline -47 0 obj -240 -endobj - -%% Contents for page 5 -48 0 obj -<< - /Length 49 0 R ->> -stream Q q -1.00003 0.00000 0.00000 0.99996 129.84900 651.15100 cm -0.00000 0.00000 67.30000 50.95000 re W n +0.92124 0.00000 0.00000 0.73126 153.31752 651.15100 cm +/Fxo1 Do +Q +q +0.88367 0.00000 0.00000 0.47909 129.84900 542.75100 cm +/Fxo2 Do +Q +q +1.00003 0.00000 0.00000 0.99998 294.14900 430.25100 cm +/Fxo3 Do +Q +endstream +endobj + +47 0 obj +207 +endobj + +48 0 obj +<< +>> +endobj + +49 0 obj +<< + /BBox [ + 0 + 0 + 67.3 + 50.95 + ] + /Matrix [ + .707 + .5 + -.5 + .707 + 0 + 0 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 50 0 R +>> +stream q 1 0 0 RG 5 w @@ -851,163 +919,116 @@ q 0 1 0 RG 5 5 15 15 re s Q +endstream +endobj -Q -q -1.00002 0.00000 0.00000 0.99996 129.84900 542.75100 cm -0.00000 0.00000 103.45000 53.00000 re W n +50 0 obj +61 +endobj + +51 0 obj +<< + /BBox [ + 0 + 0 + 103.45 + 53 + ] + /Matrix [ + 1 + .557 + .257 + 1 + 0 + 0 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 52 0 R +>> +stream q 0 1 0 RG 5 w 0 0 103.45 53 re s 0 0 1 RG 5 5 15 15 re s +1 w +1 0 0 RG +-10 25 m +113.45 25 l +52 -10 m +52 63 l +s Q +endstream +endobj -Q -q --1.00003 0.00000 0.00000 -0.99998 294.14900 626.24700 cm -0.00000 0.00000 72.80000 98.00000 re W n +52 0 obj +113 +endobj + +53 0 obj +<< + /BBox [ + 0 + 0 + 72.8 + 98 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 54 0 R +>> +stream q 0 0 1 RG 5 w 0 0 72.8 98 re s 1 0 0 RG 5 5 15 15 re s -Q - Q endstream endobj -49 0 obj -488 -endobj - -50 0 obj -<< ->> -endobj - -%% Contents for page 6 -51 0 obj -<< - /Length 52 0 R ->> -stream -q -endstream -endobj - -52 0 obj -2 -endobj - -%% Contents for page 6 -53 0 obj -<< - /Length 54 0 R ->> -stream -0.1 w -/Artifact BMC -q 0 0.028 611.971 791.971 re -W* n -EMC -/Form<>BDC -0 0 0 RG -1 1 1 rg -127.35 648.65 72.3 55.95 re B* -EMC -/Form<>BDC -127.35 540.25 108.45 58 re B* -EMC -/Form<>BDC -291.65 427.75 77.8 103 re B* -EMC -Q -endstream -endobj - -%QDF: ignore_newline 54 0 obj -240 +58 endobj -%% Contents for page 6 +%% Contents for page 4 55 0 obj << /Length 56 0 R >> stream - -Q q --0.36563 0.65131 -0.51700 -0.46062 180.79700 725.56752 cm -0.00000 0.00000 67.30000 50.95000 re W n -q -1 0 0 RG -5 w -0 0 67.3 50.95 re s -0 1 0 RG -5 5 15 15 re s -Q - -Q -q --0.26685 0.88387 -0.47909 0.22671 182.84700 595.74900 cm -0.00000 0.00000 103.45000 53.00000 re W n -q -0 1 0 RG -5 w -0 0 103.45 53 re s -0 0 1 RG -5 5 15 15 re s -Q - -Q -q -0.00000 1.00003 -0.99998 0.00000 392.14700 528.24900 cm -0.00000 0.00000 72.80000 98.00000 re W n -q -0 0 1 RG -5 w -0 0 72.8 98 re s -1 0 0 RG -5 5 15 15 re s -Q - -Q endstream endobj 56 0 obj -492 -endobj - -57 0 obj -<< ->> -endobj - -%% Contents for page 7 -58 0 obj -<< - /Length 59 0 R ->> -stream -q -endstream -endobj - -59 0 obj 2 endobj -%% Contents for page 7 -60 0 obj +%% Contents for page 4 +57 0 obj << - /Length 61 0 R + /Length 58 0 R >> stream 0.1 w @@ -1031,21 +1052,71 @@ endstream endobj %QDF: ignore_newline -61 0 obj +58 0 obj 240 endobj -%% Contents for page 7 -62 0 obj +%% Contents for page 4 +59 0 obj << - /Length 63 0 R + /Length 60 0 R >> stream Q q -1.00003 0.00000 0.00000 0.99996 129.84900 651.15100 cm -0.00000 0.00000 67.30000 50.95000 re W n +0.92124 0.00000 0.00000 0.73126 153.31752 651.15100 cm +/Fxo1 Do +Q +q +0.88367 0.00000 0.00000 0.47909 129.84900 542.75100 cm +/Fxo2 Do +Q +q +1.00003 0.00000 0.00000 0.99998 294.14900 430.25100 cm +/Fxo3 Do +Q +endstream +endobj + +60 0 obj +207 +endobj + +61 0 obj +<< +>> +endobj + +62 0 obj +<< + /BBox [ + 0 + 0 + 67.3 + 50.95 + ] + /Matrix [ + .707 + .5 + -.5 + .707 + 0 + 0 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 63 0 R +>> +stream q 60 r 1 0 0 RG @@ -1054,62 +1125,116 @@ q 0 1 0 RG 5 5 15 15 re s Q +endstream +endobj -Q -q -1.00002 0.00000 0.00000 0.99996 129.84900 542.75100 cm -0.00000 0.00000 103.45000 53.00000 re W n +63 0 obj +66 +endobj + +64 0 obj +<< + /BBox [ + 0 + 0 + 103.45 + 53 + ] + /Matrix [ + 1 + .557 + .257 + 1 + 0 + 0 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 65 0 R +>> +stream q 0 1 0 RG 5 w 0 0 103.45 53 re s 0 0 1 RG 5 5 15 15 re s +1 w +1 0 0 RG +-10 25 m +113.45 25 l +52 -10 m +52 63 l +s Q +endstream +endobj -Q -q -1.00003 0.00000 0.00000 0.99998 294.14900 430.25100 cm -0.00000 0.00000 72.80000 98.00000 re W n +65 0 obj +113 +endobj + +66 0 obj +<< + /BBox [ + 0 + 0 + 72.8 + 98 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 67 0 R +>> +stream q 0 0 1 RG 5 w 0 0 72.8 98 re s 1 0 0 RG 5 5 15 15 re s -Q - Q endstream endobj -63 0 obj -491 +67 0 obj +58 endobj -64 0 obj +%% Contents for page 5 +68 0 obj << ->> -endobj - -%% Contents for page 8 -65 0 obj -<< - /Length 66 0 R + /Length 69 0 R >> stream q endstream endobj -66 0 obj +69 0 obj 2 endobj -%% Contents for page 8 -67 0 obj +%% Contents for page 5 +70 0 obj << - /Length 68 0 R + /Length 71 0 R >> stream 0.1 w @@ -1133,84 +1258,172 @@ endstream endobj %QDF: ignore_newline -68 0 obj +71 0 obj 240 endobj -%% Contents for page 8 -69 0 obj -<< - /Length 70 0 R ->> -stream - -Q -q -1.00003 0.00000 0.00000 0.99996 129.84900 651.15100 cm -0.00000 0.00000 67.30000 50.95000 re W n -q -1 0 0 RG -5 w -0 0 67.3 50.95 re s -0 1 0 RG -5 5 15 15 re s -Q - -Q -q -1.00002 0.00000 0.00000 0.99996 129.84900 542.75100 cm -0.00000 0.00000 103.45000 53.00000 re W n -q -0 1 0 RG -5 w -0 0 103.45 53 re s -0 0 1 RG -5 5 15 15 re s -Q - -Q -q -0.00000 -1.00003 0.99998 0.00000 196.15100 528.24900 cm -0.00000 0.00000 72.80000 98.00000 re W n -q -0 0 1 RG -5 w -0 0 72.8 98 re s -1 0 0 RG -5 5 15 15 re s -Q - -Q -endstream -endobj - -70 0 obj -487 -endobj - -71 0 obj -<< ->> -endobj - -%% Contents for page 9 +%% Contents for page 5 72 0 obj << /Length 73 0 R >> stream + +Q q +1.00003 0.00000 0.00000 0.99996 129.84900 651.15100 cm +/Fxo1 Do +Q +q +1.00002 0.00000 0.00000 0.99996 129.84900 542.75100 cm +/Fxo2 Do +Q +q +-1.00003 0.00000 0.00000 -0.99998 294.14900 626.24700 cm +/Fxo3 Do +Q endstream endobj 73 0 obj +209 +endobj + +74 0 obj +<< +>> +endobj + +75 0 obj +<< + /BBox [ + 0 + 0 + 67.3 + 50.95 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 76 0 R +>> +stream +q +1 0 0 RG +5 w +0 0 67.3 50.95 re s +0 1 0 RG +5 5 15 15 re s +Q +endstream +endobj + +76 0 obj +61 +endobj + +77 0 obj +<< + /BBox [ + 0 + 0 + 103.45 + 53 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 78 0 R +>> +stream +q +0 1 0 RG +5 w +0 0 103.45 53 re s +0 0 1 RG +5 5 15 15 re s +1 w +1 0 0 RG +-10 25 m +113.45 25 l +52 -10 m +52 63 l +s +Q +endstream +endobj + +78 0 obj +113 +endobj + +79 0 obj +<< + /BBox [ + 0 + 0 + 72.8 + 98 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 80 0 R +>> +stream +q +0 0 1 RG +5 w +0 0 72.8 98 re s +1 0 0 RG +5 5 15 15 re s +Q +endstream +endobj + +80 0 obj +58 +endobj + +%% Contents for page 6 +81 0 obj +<< + /Length 82 0 R +>> +stream +q +endstream +endobj + +82 0 obj 2 endobj -%% Contents for page 9 -74 0 obj +%% Contents for page 6 +83 0 obj << - /Length 75 0 R + /Length 84 0 R >> stream 0.1 w @@ -1234,21 +1447,71 @@ endstream endobj %QDF: ignore_newline -75 0 obj +84 0 obj 240 endobj -%% Contents for page 9 -76 0 obj +%% Contents for page 6 +85 0 obj << - /Length 77 0 R + /Length 86 0 R >> stream Q q -1.00003 0.00000 0.00000 0.99996 129.84900 651.15100 cm -0.00000 0.00000 67.30000 50.95000 re W n +0.00000 0.92124 -0.73126 0.00000 180.79700 725.56752 cm +/Fxo1 Do +Q +q +0.00000 0.44193 -0.23955 0.00000 254.71087 551.55555 cm +/Fxo2 Do +Q +q +0.00000 1.00003 -0.99998 0.00000 392.14700 528.24900 cm +/Fxo3 Do +Q +endstream +endobj + +86 0 obj +210 +endobj + +87 0 obj +<< +>> +endobj + +88 0 obj +<< + /BBox [ + 0 + 0 + 67.3 + 50.95 + ] + /Matrix [ + .707 + .5 + -.5 + .707 + 0 + 0 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 89 0 R +>> +stream q 1 0 0 RG 5 w @@ -1256,23 +1519,84 @@ q 0 1 0 RG 5 5 15 15 re s Q +endstream +endobj -Q -q -1.00002 0.00000 0.00000 0.99996 129.84900 542.75100 cm -0.00000 0.00000 103.45000 53.00000 re W n +89 0 obj +61 +endobj + +90 0 obj +<< + /BBox [ + 0 + 0 + 103.45 + 53 + ] + /Matrix [ + 2 + 1.114 + .513 + 2 + 100 + 300 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 91 0 R +>> +stream q 0 1 0 RG 5 w 0 0 103.45 53 re s 0 0 1 RG 5 5 15 15 re s +1 w +1 0 0 RG +-10 25 m +113.45 25 l +52 -10 m +52 63 l +s Q +endstream +endobj -Q -q -1.00003 0.00000 0.00000 0.99998 294.14900 430.25100 cm -0.00000 0.00000 72.80000 98.00000 re W n +91 0 obj +113 +endobj + +92 0 obj +<< + /BBox [ + 0 + 0 + 72.8 + 98 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 93 0 R +>> +stream q 0 0 1 RG 5 w @@ -1280,67 +1604,628 @@ q 1 0 0 RG 5 5 15 15 re s Q +endstream +endobj +93 0 obj +58 +endobj + +%% Contents for page 7 +94 0 obj +<< + /Length 95 0 R +>> +stream +q +endstream +endobj + +95 0 obj +2 +endobj + +%% Contents for page 7 +96 0 obj +<< + /Length 97 0 R +>> +stream +0.1 w +/Artifact BMC +q 0 0.028 611.971 791.971 re +W* n +EMC +/Form<>BDC +0 0 0 RG +1 1 1 rg +127.35 648.65 72.3 55.95 re B* +EMC +/Form<>BDC +127.35 540.25 108.45 58 re B* +EMC +/Form<>BDC +291.65 427.75 77.8 103 re B* +EMC +Q +endstream +endobj + +%QDF: ignore_newline +97 0 obj +240 +endobj + +%% Contents for page 7 +98 0 obj +<< + /Length 99 0 R +>> +stream + +Q +q +1.00003 0.00000 0.00000 0.99996 129.84900 651.15100 cm +/Fxo1 Do +Q +q +1.00002 0.00000 0.00000 0.99996 129.84900 542.75100 cm +/Fxo2 Do +Q +q +1.00003 0.00000 0.00000 0.99998 294.14900 430.25100 cm +/Fxo3 Do Q endstream endobj -77 0 obj -486 +99 0 obj +207 endobj -78 0 obj +100 0 obj << >> endobj -79 0 obj +101 0 obj << - /A 83 0 R - /P 21 0 R + /BBox [ + 0 + 0 + 67.3 + 50.95 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 102 0 R +>> +stream +q +60 r +1 0 0 RG +5 w +0 0 67.3 50.95 re s +0 1 0 RG +5 5 15 15 re s +Q +endstream +endobj + +102 0 obj +66 +endobj + +103 0 obj +<< + /BBox [ + 0 + 0 + 103.45 + 53 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 104 0 R +>> +stream +q +0 1 0 RG +5 w +0 0 103.45 53 re s +0 0 1 RG +5 5 15 15 re s +1 w +1 0 0 RG +-10 25 m +113.45 25 l +52 -10 m +52 63 l +s +Q +endstream +endobj + +104 0 obj +113 +endobj + +105 0 obj +<< + /BBox [ + 0 + 0 + 72.8 + 98 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 106 0 R +>> +stream +q +0 0 1 RG +5 w +0 0 72.8 98 re s +1 0 0 RG +5 5 15 15 re s +Q +endstream +endobj + +106 0 obj +58 +endobj + +%% Contents for page 8 +107 0 obj +<< + /Length 108 0 R +>> +stream +q +endstream +endobj + +108 0 obj +2 +endobj + +%% Contents for page 8 +109 0 obj +<< + /Length 110 0 R +>> +stream +0.1 w +/Artifact BMC +q 0 0.028 611.971 791.971 re +W* n +EMC +/Form<>BDC +0 0 0 RG +1 1 1 rg +127.35 648.65 72.3 55.95 re B* +EMC +/Form<>BDC +127.35 540.25 108.45 58 re B* +EMC +/Form<>BDC +291.65 427.75 77.8 103 re B* +EMC +Q +endstream +endobj + +%QDF: ignore_newline +110 0 obj +240 +endobj + +%% Contents for page 8 +111 0 obj +<< + /Length 112 0 R +>> +stream + +Q +q +1.00003 0.00000 0.00000 0.99996 129.84900 651.15100 cm +/Fxo1 Do +Q +q +1.00002 0.00000 0.00000 0.99996 129.84900 542.75100 cm +/Fxo2 Do +Q +q +0.00000 -1.00003 0.99998 0.00000 196.15100 528.24900 cm +/Fxo3 Do +Q +endstream +endobj + +112 0 obj +208 +endobj + +113 0 obj +<< +>> +endobj + +114 0 obj +<< + /BBox [ + 0 + 0 + 67.3 + 50.95 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 115 0 R +>> +stream +q +1 0 0 RG +5 w +0 0 67.3 50.95 re s +0 1 0 RG +5 5 15 15 re s +Q +endstream +endobj + +115 0 obj +61 +endobj + +116 0 obj +<< + /BBox [ + 0 + 0 + 103.45 + 53 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 117 0 R +>> +stream +q +0 1 0 RG +5 w +0 0 103.45 53 re s +0 0 1 RG +5 5 15 15 re s +1 w +1 0 0 RG +-10 25 m +113.45 25 l +52 -10 m +52 63 l +s +Q +endstream +endobj + +117 0 obj +113 +endobj + +118 0 obj +<< + /BBox [ + 0 + 0 + 72.8 + 98 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 119 0 R +>> +stream +q +0 0 1 RG +5 w +0 0 72.8 98 re s +1 0 0 RG +5 5 15 15 re s +Q +endstream +endobj + +119 0 obj +58 +endobj + +%% Contents for page 9 +120 0 obj +<< + /Length 121 0 R +>> +stream +q +endstream +endobj + +121 0 obj +2 +endobj + +%% Contents for page 9 +122 0 obj +<< + /Length 123 0 R +>> +stream +0.1 w +/Artifact BMC +q 0 0.028 611.971 791.971 re +W* n +EMC +/Form<>BDC +0 0 0 RG +1 1 1 rg +127.35 648.65 72.3 55.95 re B* +EMC +/Form<>BDC +127.35 540.25 108.45 58 re B* +EMC +/Form<>BDC +291.65 427.75 77.8 103 re B* +EMC +Q +endstream +endobj + +%QDF: ignore_newline +123 0 obj +240 +endobj + +%% Contents for page 9 +124 0 obj +<< + /Length 125 0 R +>> +stream + +Q +q +1.00003 0.00000 0.00000 0.99996 129.84900 651.15100 cm +/Fxo1 Do +Q +q +1.00002 0.00000 0.00000 0.99996 129.84900 542.75100 cm +/Fxo2 Do +Q +q +1.00003 0.00000 0.00000 0.99998 294.14900 430.25100 cm +/Fxo3 Do +Q +endstream +endobj + +125 0 obj +207 +endobj + +126 0 obj +<< +>> +endobj + +127 0 obj +<< + /BBox [ + 0 + 0 + 67.3 + 50.95 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 128 0 R +>> +stream +q +1 0 0 RG +5 w +0 0 67.3 50.95 re s +0 1 0 RG +5 5 15 15 re s +Q +endstream +endobj + +128 0 obj +61 +endobj + +129 0 obj +<< + /BBox [ + 0 + 0 + 103.45 + 53 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 130 0 R +>> +stream +q +0 1 0 RG +5 w +0 0 103.45 53 re s +0 0 1 RG +5 5 15 15 re s +1 w +1 0 0 RG +-10 25 m +113.45 25 l +52 -10 m +52 63 l +s +Q +endstream +endobj + +130 0 obj +113 +endobj + +131 0 obj +<< + /BBox [ + 0 + 0 + 72.8 + 98 + ] + /Resources << + /Font << + >> + /ProcSet [ + /PDF + /Text + ] + >> + /Subtype /Form + /Type /XObject + /Length 132 0 R +>> +stream +q +0 0 1 RG +5 w +0 0 72.8 98 re s +1 0 0 RG +5 5 15 15 re s +Q +endstream +endobj + +132 0 obj +58 +endobj + +133 0 obj +<< + /A 137 0 R + /P 27 0 R /Pg 3 0 R /S /Standard /Type /StructElem >> endobj -80 0 obj +134 0 obj << /K [ 0 ] - /P 21 0 R + /P 27 0 R /Pg 3 0 R /S /Form /Type /StructElem >> endobj -81 0 obj +135 0 obj << /K [ 1 ] - /P 21 0 R + /P 27 0 R /Pg 3 0 R /S /Form /Type /StructElem >> endobj -82 0 obj +136 0 obj << /K [ 2 ] - /P 21 0 R + /P 27 0 R /Pg 3 0 R /S /Form /Type /StructElem >> endobj -83 0 obj +137 0 obj << /O /Layout /Placement /Block @@ -1348,98 +2233,152 @@ endobj endobj xref -0 84 +0 138 0000000000 65535 f 0000000025 00000 n 0000000219 00000 n 0000000414 00000 n -0000000731 00000 n -0000000891 00000 n -0000001063 00000 n -0000001120 00000 n -0000001161 00000 n -0000001478 00000 n -0000001521 00000 n -0000002069 00000 n -0000002090 00000 n -0000002123 00000 n -0000002466 00000 n -0000002796 00000 n -0000003139 00000 n -0000003483 00000 n -0000003826 00000 n -0000004156 00000 n -0000004500 00000 n -0000004820 00000 n -0000004956 00000 n -0000005073 00000 n -0000005132 00000 n -0000005174 00000 n -0000005493 00000 n -0000005537 00000 n -0000006081 00000 n -0000006102 00000 n -0000006148 00000 n -0000006207 00000 n -0000006249 00000 n -0000006568 00000 n -0000006612 00000 n -0000007156 00000 n -0000007177 00000 n -0000007223 00000 n -0000007282 00000 n -0000007324 00000 n -0000007643 00000 n -0000007687 00000 n -0000008236 00000 n -0000008257 00000 n -0000008303 00000 n -0000008362 00000 n -0000008404 00000 n -0000008723 00000 n -0000008767 00000 n -0000009312 00000 n -0000009333 00000 n -0000009379 00000 n -0000009438 00000 n -0000009480 00000 n -0000009799 00000 n -0000009843 00000 n -0000010392 00000 n -0000010413 00000 n -0000010459 00000 n -0000010518 00000 n -0000010560 00000 n -0000010879 00000 n -0000010923 00000 n -0000011471 00000 n -0000011492 00000 n -0000011538 00000 n -0000011597 00000 n -0000011639 00000 n -0000011958 00000 n -0000012002 00000 n -0000012546 00000 n -0000012567 00000 n -0000012613 00000 n -0000012672 00000 n -0000012714 00000 n -0000013033 00000 n -0000013077 00000 n -0000013620 00000 n -0000013641 00000 n -0000013664 00000 n -0000013758 00000 n -0000013853 00000 n -0000013948 00000 n -0000014043 00000 n +0000000811 00000 n +0000000971 00000 n +0000001143 00000 n +0000001200 00000 n +0000001241 00000 n +0000001558 00000 n +0000001601 00000 n +0000001865 00000 n +0000001886 00000 n +0000001909 00000 n +0000002196 00000 n +0000002216 00000 n +0000002549 00000 n +0000002570 00000 n +0000002846 00000 n +0000002876 00000 n +0000003299 00000 n +0000003709 00000 n +0000004132 00000 n +0000004556 00000 n +0000004979 00000 n +0000005393 00000 n +0000005824 00000 n +0000006231 00000 n +0000006371 00000 n +0000006491 00000 n +0000006550 00000 n +0000006592 00000 n +0000006911 00000 n +0000006955 00000 n +0000007220 00000 n +0000007241 00000 n +0000007264 00000 n +0000007546 00000 n +0000007566 00000 n +0000007899 00000 n +0000007920 00000 n +0000008196 00000 n +0000008239 00000 n +0000008298 00000 n +0000008340 00000 n +0000008659 00000 n +0000008703 00000 n +0000008967 00000 n +0000008988 00000 n +0000009011 00000 n +0000009354 00000 n +0000009374 00000 n +0000009765 00000 n +0000009786 00000 n +0000010062 00000 n +0000010105 00000 n +0000010164 00000 n +0000010206 00000 n +0000010525 00000 n +0000010569 00000 n +0000010833 00000 n +0000010854 00000 n +0000010877 00000 n +0000011225 00000 n +0000011245 00000 n +0000011636 00000 n +0000011657 00000 n +0000011933 00000 n +0000011976 00000 n +0000012035 00000 n +0000012077 00000 n +0000012396 00000 n +0000012440 00000 n +0000012706 00000 n +0000012727 00000 n +0000012750 00000 n +0000013032 00000 n +0000013052 00000 n +0000013385 00000 n +0000013406 00000 n +0000013682 00000 n +0000013725 00000 n +0000013784 00000 n +0000013826 00000 n +0000014145 00000 n +0000014189 00000 n +0000014456 00000 n +0000014477 00000 n +0000014500 00000 n +0000014843 00000 n +0000014863 00000 n +0000015259 00000 n +0000015280 00000 n +0000015556 00000 n +0000015599 00000 n +0000015658 00000 n +0000015700 00000 n +0000016019 00000 n +0000016063 00000 n +0000016327 00000 n +0000016348 00000 n +0000016372 00000 n +0000016661 00000 n +0000016682 00000 n +0000017017 00000 n +0000017039 00000 n +0000017317 00000 n +0000017361 00000 n +0000017422 00000 n +0000017465 00000 n +0000017786 00000 n +0000017831 00000 n +0000018098 00000 n +0000018120 00000 n +0000018144 00000 n +0000018428 00000 n +0000018449 00000 n +0000018784 00000 n +0000018806 00000 n +0000019084 00000 n +0000019128 00000 n +0000019189 00000 n +0000019232 00000 n +0000019553 00000 n +0000019598 00000 n +0000019864 00000 n +0000019886 00000 n +0000019910 00000 n +0000020194 00000 n +0000020215 00000 n +0000020550 00000 n +0000020572 00000 n +0000020850 00000 n +0000020871 00000 n +0000020967 00000 n +0000021063 00000 n +0000021159 00000 n +0000021255 00000 n trailer << /DocChecksum /DA785F789D02970D387C264D0A6C8CB0 /Info 2 0 R /Root 1 0 R - /Size 84 + /Size 138 /ID [<976442cb303b8d5e88a36a127de2a19f><31415926535897932384626433832795>] >> startxref -14099 +21312 %%EOF diff --git a/qpdf/qtest/qpdf/manual-appearances.pdf b/qpdf/qtest/qpdf/manual-appearances.pdf index 9e9d3df3..a714d428 100644 --- a/qpdf/qtest/qpdf/manual-appearances.pdf +++ b/qpdf/qtest/qpdf/manual-appearances.pdf @@ -956,12 +956,19 @@ q 0 0 103.45 53 re s 0 0 1 RG 5 5 15 15 re s +1 w +1 0 0 RG +-10 25 m +113.45 25 l +52 -10 m +52 63 l +s Q endstream endobj 38 0 obj -60 +113 endobj %% Original object ID: 39 0 @@ -1084,12 +1091,19 @@ q 0 0 103.45 53 re s 0 0 1 RG 5 5 15 15 re s +1 w +1 0 0 RG +-10 25 m +113.45 25 l +52 -10 m +52 63 l +s Q endstream endobj 46 0 obj -60 +113 endobj %% Original object ID: 47 0 @@ -1227,12 +1241,19 @@ q 0 0 103.45 53 re s 0 0 1 RG 5 5 15 15 re s +1 w +1 0 0 RG +-10 25 m +113.45 25 l +52 -10 m +52 63 l +s Q endstream endobj 54 0 obj -60 +113 endobj %% Original object ID: 55 0 @@ -1372,12 +1393,19 @@ q 0 0 103.45 53 re s 0 0 1 RG 5 5 15 15 re s +1 w +1 0 0 RG +-10 25 m +113.45 25 l +52 -10 m +52 63 l +s Q endstream endobj 62 0 obj -60 +113 endobj %% Original object ID: 63 0 @@ -1500,12 +1528,19 @@ q 0 0 103.45 53 re s 0 0 1 RG 5 5 15 15 re s +1 w +1 0 0 RG +-10 25 m +113.45 25 l +52 -10 m +52 63 l +s Q endstream endobj 70 0 obj -60 +113 endobj %% Original object ID: 71 0 @@ -1644,12 +1679,19 @@ q 0 0 103.45 53 re s 0 0 1 RG 5 5 15 15 re s +1 w +1 0 0 RG +-10 25 m +113.45 25 l +52 -10 m +52 63 l +s Q endstream endobj 78 0 obj -60 +113 endobj %% Original object ID: 79 0 @@ -1772,12 +1814,19 @@ q 0 0 103.45 53 re s 0 0 1 RG 5 5 15 15 re s +1 w +1 0 0 RG +-10 25 m +113.45 25 l +52 -10 m +52 63 l +s Q endstream endobj 86 0 obj -60 +113 endobj %% Original object ID: 87 0 @@ -1900,12 +1949,19 @@ q 0 0 103.45 53 re s 0 0 1 RG 5 5 15 15 re s +1 w +1 0 0 RG +-10 25 m +113.45 25 l +52 -10 m +52 63 l +s Q endstream endobj 94 0 obj -60 +113 endobj %% Original object ID: 95 0 @@ -2027,12 +2083,19 @@ q 0 0 103.45 53 re s 0 0 1 RG 5 5 15 15 re s +1 w +1 0 0 RG +-10 25 m +113.45 25 l +52 -10 m +52 63 l +s Q endstream endobj 102 0 obj -60 +113 endobj %% Original object ID: 103 0 @@ -2568,106 +2631,106 @@ xref 0000010828 00000 n 0000011049 00000 n 0000011097 00000 n -0000011311 00000 n -0000011359 00000 n -0000011569 00000 n -0000011617 00000 n -0000011835 00000 n -0000011883 00000 n -0000011944 00000 n -0000012321 00000 n -0000012537 00000 n -0000012585 00000 n -0000012797 00000 n -0000012845 00000 n -0000013124 00000 n -0000013172 00000 n -0000013233 00000 n -0000013600 00000 n -0000013874 00000 n -0000013922 00000 n -0000014134 00000 n -0000014182 00000 n -0000014466 00000 n -0000014514 00000 n -0000014575 00000 n -0000014955 00000 n -0000015229 00000 n -0000015277 00000 n -0000015489 00000 n -0000015537 00000 n -0000015755 00000 n -0000015803 00000 n -0000015864 00000 n -0000016245 00000 n +0000011364 00000 n +0000011413 00000 n +0000011623 00000 n +0000011671 00000 n +0000011889 00000 n +0000011937 00000 n +0000011998 00000 n +0000012375 00000 n +0000012644 00000 n +0000012693 00000 n +0000012905 00000 n +0000012953 00000 n +0000013232 00000 n +0000013280 00000 n +0000013341 00000 n +0000013708 00000 n +0000014035 00000 n +0000014084 00000 n +0000014296 00000 n +0000014344 00000 n +0000014628 00000 n +0000014676 00000 n +0000014737 00000 n +0000015117 00000 n +0000015444 00000 n +0000015493 00000 n +0000015705 00000 n +0000015753 00000 n +0000015971 00000 n +0000016019 00000 n +0000016080 00000 n 0000016461 00000 n -0000016509 00000 n -0000016721 00000 n -0000016769 00000 n -0000017048 00000 n -0000017096 00000 n -0000017157 00000 n -0000017537 00000 n -0000017816 00000 n -0000017864 00000 n -0000018076 00000 n -0000018124 00000 n -0000018347 00000 n -0000018395 00000 n -0000018456 00000 n -0000018823 00000 n -0000019039 00000 n -0000019087 00000 n -0000019299 00000 n -0000019347 00000 n -0000019565 00000 n -0000019613 00000 n -0000019674 00000 n -0000020055 00000 n -0000020271 00000 n -0000020319 00000 n -0000020531 00000 n -0000020579 00000 n -0000020797 00000 n -0000020845 00000 n -0000020907 00000 n -0000021276 00000 n -0000021494 00000 n -0000021544 00000 n -0000021758 00000 n -0000021831 00000 n -0000022152 00000 n -0000022203 00000 n -0000022375 00000 n -0000022502 00000 n -0000022629 00000 n -0000022950 00000 n -0000023001 00000 n -0000023128 00000 n -0000023449 00000 n -0000023500 00000 n -0000023627 00000 n -0000023948 00000 n -0000023999 00000 n -0000024126 00000 n -0000024447 00000 n -0000024498 00000 n -0000024625 00000 n -0000024946 00000 n -0000024997 00000 n -0000025124 00000 n -0000025445 00000 n -0000025496 00000 n -0000025623 00000 n -0000025944 00000 n -0000025995 00000 n -0000026122 00000 n -0000026443 00000 n -0000026494 00000 n -0000026621 00000 n -0000026748 00000 n -0000026875 00000 n -0000027002 00000 n +0000016730 00000 n +0000016779 00000 n +0000016991 00000 n +0000017039 00000 n +0000017318 00000 n +0000017366 00000 n +0000017427 00000 n +0000017807 00000 n +0000018139 00000 n +0000018188 00000 n +0000018400 00000 n +0000018448 00000 n +0000018671 00000 n +0000018719 00000 n +0000018780 00000 n +0000019147 00000 n +0000019416 00000 n +0000019465 00000 n +0000019677 00000 n +0000019725 00000 n +0000019943 00000 n +0000019991 00000 n +0000020052 00000 n +0000020433 00000 n +0000020702 00000 n +0000020751 00000 n +0000020963 00000 n +0000021011 00000 n +0000021229 00000 n +0000021277 00000 n +0000021339 00000 n +0000021708 00000 n +0000021979 00000 n +0000022030 00000 n +0000022244 00000 n +0000022317 00000 n +0000022638 00000 n +0000022689 00000 n +0000022861 00000 n +0000022988 00000 n +0000023115 00000 n +0000023436 00000 n +0000023487 00000 n +0000023614 00000 n +0000023935 00000 n +0000023986 00000 n +0000024113 00000 n +0000024434 00000 n +0000024485 00000 n +0000024612 00000 n +0000024933 00000 n +0000024984 00000 n +0000025111 00000 n +0000025432 00000 n +0000025483 00000 n +0000025610 00000 n +0000025931 00000 n +0000025982 00000 n +0000026109 00000 n +0000026430 00000 n +0000026481 00000 n +0000026608 00000 n +0000026929 00000 n +0000026980 00000 n +0000027107 00000 n +0000027234 00000 n +0000027361 00000 n +0000027488 00000 n trailer << /DocChecksum /DA785F789D02970D387C264D0A6C8CB0 /Info 2 0 R @@ -2676,5 +2739,5 @@ trailer << /ID [<976442cb303b8d5e88a36a127de2a19f><1f7f023bcea1641cee1f72048a9d0676>] >> startxref -27059 +27545 %%EOF diff --git a/qpdf/qtest/qpdf/merge-dict.out b/qpdf/qtest/qpdf/merge-dict.out index d2422142..e0b6dc3e 100644 --- a/qpdf/qtest/qpdf/merge-dict.out +++ b/qpdf/qtest/qpdf/merge-dict.out @@ -6,11 +6,9 @@ "/b": "conflict: seen", "/c": [ 2, - 3, - 1 + 3 ], "/d": { - "/x": 24, "/y": 25, "/z": 26 }, @@ -33,4 +31,14 @@ "two" ] } +/A +/B +/C +/a +/b +/c +/d +/e +/indirect2 +/recursive test 50 done diff --git a/qpdf/qtest/qpdf/need-appearances-out.pdf b/qpdf/qtest/qpdf/need-appearances-out.pdf index 1d616101..1553ba3f 100644 --- a/qpdf/qtest/qpdf/need-appearances-out.pdf +++ b/qpdf/qtest/qpdf/need-appearances-out.pdf @@ -5,7 +5,7 @@ 1 0 obj << /Type /ObjStm - /Length 18715 + /Length 18617 /N 44 /First 398 >> @@ -31,29 +31,29 @@ stream 20 8074 21 8505 22 9308 -23 10169 -24 10264 -25 12179 -26 12281 -27 12414 -28 12516 -29 14446 -30 15052 -31 15184 -32 15381 -33 15578 -34 15775 -35 15972 -36 16169 -37 16366 -38 16563 -39 16760 -40 16957 -41 17154 -42 17351 -43 17582 -44 17840 -45 18193 +23 10071 +24 10166 +25 12081 +26 12183 +27 12316 +28 12418 +29 14348 +30 14954 +31 15086 +32 15283 +33 15480 +34 15677 +35 15874 +36 16071 +37 16268 +38 16465 +39 16662 +40 16859 +41 17056 +42 17253 +43 17484 +44 17742 +45 18095 %% Object stream: object 2, index 0 << /AcroForm << @@ -719,13 +719,6 @@ stream >> /ExtGState << /FXE1 25 0 R - /GS0 << - /AIS false - /BM /Normal - /CA .6 - /Type /ExtGState - /ca .6 - >> >> /Font 26 0 R /ProcSet [ @@ -736,6 +729,7 @@ stream /ImageB ] /XObject << + /Fxo1 86 0 R >> >> /Type /Page @@ -1160,7 +1154,7 @@ stream /FontDescriptor 43 0 R /LastChar 50 /Subtype /TrueType - /ToUnicode 86 0 R + /ToUnicode 88 0 R /Type /Font /Widths [ 750 @@ -1429,7 +1423,7 @@ stream 2000 1006 ] - /FontFile2 88 0 R + /FontFile2 90 0 R /FontName /CAAAAA+ArialMT /ItalicAngle 0 /StemV 80 @@ -1438,7 +1432,7 @@ stream %% Object stream: object 44, index 42 << /AP << - /N 90 0 R + /N 86 0 R >> /C [ 1 @@ -2076,15 +2070,13 @@ stream Q q 1.00000 0.00000 0.00000 1.00000 235.00000 703.00000 cm -0.00000 0.00000 18.00000 18.00000 re W n -q 1 1 1 rg 0 i 1 w 4 M 1 j 0 J []0 d /GS0 gs 1 0 0 1 9 5.0908 cm 7.74 12.616 m -7.74 12.616 l -8.274 12.616 -8.707 12.184 -8.707 11.649 c -8.707 -3.831 l -8.707 -4.365 -8.274 -4.798 -7.74 -4.798 c 7.74 -4.798 l 8.274 -4.798 8.707 -4.365 8.707 -3.831 c 8.707 11.649 l 8.707 12.184 8.274 12.616 7.74 12.616 c h f Q 0 G 1 1 0 rg 0 i 0.60 w 4 M 1 j 0 J []0 d 1 1 0 rg 0 G 0 i 0.59 w 4 M 1 j 0 J []0 d 1 0 0 1 9 5.0908 cm 0 0 m -0.142 0 -0.28 0.008 -0.418 0.015 c -2.199 -1.969 -5.555 -2.242 -4.642 -1.42 c -4.024 -0.862 -3.916 0.111 -3.954 0.916 c -5.658 1.795 -6.772 3.222 -6.772 4.839 c -6.772 7.509 -3.74 9.674 0 9.674 c 3.74 9.674 6.772 7.509 6.772 4.839 c 6.772 2.167 3.74 0 0 0 c 7.74 12.616 m -7.74 12.616 l -8.274 12.616 -8.707 12.184 -8.707 11.649 c -8.707 -3.831 l -8.707 -4.365 -8.274 -4.798 -7.74 -4.798 c 7.74 -4.798 l 8.274 -4.798 8.707 -4.365 8.707 -3.831 c 8.707 11.649 l 8.707 12.184 8.274 12.616 7.74 12.616 c b - +/Fxo1 Do Q endstream endobj 81 0 obj -1033 +71 endobj 82 0 obj @@ -2120,9 +2112,41 @@ endobj 86 0 obj << + /BBox [ + 0 + 0 + 18 + 18 + ] + /Resources << + /ExtGState << + /GS0 << + /AIS false + /BM /Normal + /CA .6 + /Type /ExtGState + /ca .6 + >> + >> + >> + /Subtype /Form + /Type /XObject /Length 87 0 R >> stream +q 1 1 1 rg 0 i 1 w 4 M 1 j 0 J []0 d /GS0 gs 1 0 0 1 9 5.0908 cm 7.74 12.616 m -7.74 12.616 l -8.274 12.616 -8.707 12.184 -8.707 11.649 c -8.707 -3.831 l -8.707 -4.365 -8.274 -4.798 -7.74 -4.798 c 7.74 -4.798 l 8.274 -4.798 8.707 -4.365 8.707 -3.831 c 8.707 11.649 l 8.707 12.184 8.274 12.616 7.74 12.616 c h f Q 0 G 1 1 0 rg 0 i 0.60 w 4 M 1 j 0 J []0 d 1 1 0 rg 0 G 0 i 0.59 w 4 M 1 j 0 J []0 d 1 0 0 1 9 5.0908 cm 0 0 m -0.142 0 -0.28 0.008 -0.418 0.015 c -2.199 -1.969 -5.555 -2.242 -4.642 -1.42 c -4.024 -0.862 -3.916 0.111 -3.954 0.916 c -5.658 1.795 -6.772 3.222 -6.772 4.839 c -6.772 7.509 -3.74 9.674 0 9.674 c 3.74 9.674 6.772 7.509 6.772 4.839 c 6.772 2.167 3.74 0 0 0 c 7.74 12.616 m -7.74 12.616 l -8.274 12.616 -8.707 12.184 -8.707 11.649 c -8.707 -3.831 l -8.707 -4.365 -8.274 -4.798 -7.74 -4.798 c 7.74 -4.798 l 8.274 -4.798 8.707 -4.365 8.707 -3.831 c 8.707 11.649 l 8.707 12.184 8.274 12.616 7.74 12.616 c b +endstream +endobj + +87 0 obj +929 +endobj + +88 0 obj +<< + /Length 89 0 R +>> +stream /CIDInit/ProcSet findresource begin 12 dict begin begincmap @@ -2195,14 +2219,14 @@ end endstream endobj -87 0 obj +89 0 obj 918 endobj -88 0 obj +90 0 obj << /Length1 37060 - /Length 89 0 R + /Length 91 0 R >> stream true @cmapY:.Rcvt .0fpgm bxRnglyf!$IheadNp7X6hheaXP$hmtxXtlocab YDjmaxp @@ -2518,40 +2542,8 @@ endstream endobj %QDF: ignore_newline -89 0 obj -37060 -endobj - -90 0 obj -<< - /BBox [ - 0 - 0 - 18 - 18 - ] - /Resources << - /ExtGState << - /GS0 << - /AIS false - /BM /Normal - /CA .6 - /Type /ExtGState - /ca .6 - >> - >> - >> - /Subtype /Form - /Type /XObject - /Length 91 0 R ->> -stream -q 1 1 1 rg 0 i 1 w 4 M 1 j 0 J []0 d /GS0 gs 1 0 0 1 9 5.0908 cm 7.74 12.616 m -7.74 12.616 l -8.274 12.616 -8.707 12.184 -8.707 11.649 c -8.707 -3.831 l -8.707 -4.365 -8.274 -4.798 -7.74 -4.798 c 7.74 -4.798 l 8.274 -4.798 8.707 -4.365 8.707 -3.831 c 8.707 11.649 l 8.707 12.184 8.274 12.616 7.74 12.616 c h f Q 0 G 1 1 0 rg 0 i 0.60 w 4 M 1 j 0 J []0 d 1 1 0 rg 0 G 0 i 0.59 w 4 M 1 j 0 J []0 d 1 0 0 1 9 5.0908 cm 0 0 m -0.142 0 -0.28 0.008 -0.418 0.015 c -2.199 -1.969 -5.555 -2.242 -4.642 -1.42 c -4.024 -0.862 -3.916 0.111 -3.954 0.916 c -5.658 1.795 -6.772 3.222 -6.772 4.839 c -6.772 7.509 -3.74 9.674 0 9.674 c 3.74 9.674 6.772 7.509 6.772 4.839 c 6.772 2.167 3.74 0 0 0 c 7.74 12.616 m -7.74 12.616 l -8.274 12.616 -8.707 12.184 -8.707 11.649 c -8.707 -3.831 l -8.707 -4.365 -8.274 -4.798 -7.74 -4.798 c 7.74 -4.798 l 8.274 -4.798 8.707 -4.365 8.707 -3.831 c 8.707 11.649 l 8.707 12.184 8.274 12.616 7.74 12.616 c b -endstream -endobj - 91 0 obj -929 +37060 endobj 92 0 obj @@ -2566,10 +2558,10 @@ endobj >> stream   -    !"#$%&'()*+IWW/X4XHYMYaZZ$ZZ[[\G\Z] ]]]^^__``bNbbccdddehBhnllm[monn1rr9P, +    !"#$%&'()*+I.VVWWXXYYZsZ[ [4[[\\]m]^^_L__`{`abc?cSd,dWddgh hhi5iIij nnrr endstream endobj startxref -67628 +66566 %%EOF diff --git a/qpdf/test_driver.cc b/qpdf/test_driver.cc index 8fb645f9..88149cf3 100644 --- a/qpdf/test_driver.cc +++ b/qpdf/test_driver.cc @@ -1760,10 +1760,16 @@ void runtest(int n, char const* filename1, char const* arg2) // merge-dict.pdf QPDFObjectHandle d1 = pdf.getTrailer().getKey("/Dict1"); QPDFObjectHandle d2 = pdf.getTrailer().getKey("/Dict2"); - d1.mergeDictionary(d2); + d1.mergeResources(d2); std::cout << d1.getJSON().unparse() << std::endl; // Top-level type mismatch - d1.mergeDictionary(d2.getKey("/k1")); + d1.mergeResources(d2.getKey("/k1")); + std::set names = d1.getResourceNames(); + for (std::set::iterator iter = names.begin(); + iter != names.end(); ++iter) + { + std::cout << *iter << std::endl; + } } else {