Commit 1562d34c096424b4916be09e8dcd2f0f3effb17f

Authored by Jay Berkenbilt
1 parent c97bd632

Add QPDFObjectHandle::isFormXObject

ChangeLog
  1 +2020-12-31 Jay Berkenbilt <ejb@ql.org>
  2 +
  3 + * Add QPDFObjectHandle::isFormXObject to test whether an object is
  4 + a form XObject.
  5 +
1 6 2020-12-30 Jay Berkenbilt <ejb@ql.org>
2 7  
3 8 * Add QPDFPageObjectHelper::flattenRotation and --flatten-rotation
... ...
include/qpdf/QPDFObjectHandle.hh
... ... @@ -1147,6 +1147,9 @@ class QPDFObjectHandle
1147 1147 QPDF_DLL
1148 1148 void assertPageObject();
1149 1149  
  1150 + QPDF_DLL
  1151 + bool isFormXObject();
  1152 +
1150 1153 private:
1151 1154 QPDFObjectHandle(QPDF*, int objid, int generation);
1152 1155 QPDFObjectHandle(QPDFObject*);
... ...
libqpdf/QPDFObjectHandle.cc
... ... @@ -2962,6 +2962,20 @@ QPDFObjectHandle::isPagesObject()
2962 2962 return (this->isDictionary() && this->hasKey("/Kids"));
2963 2963 }
2964 2964  
  2965 +bool
  2966 +QPDFObjectHandle::isFormXObject()
  2967 +{
  2968 + if (! this->isStream())
  2969 + {
  2970 + return false;
  2971 + }
  2972 + QPDFObjectHandle dict = this->getDict();
  2973 + return (dict.getKey("/Type").isName() &&
  2974 + ("/XObject" == dict.getKey("/Type").getName()) &&
  2975 + dict.getKey("/Subtype").isName() &&
  2976 + ("/Form" == dict.getKey("/Subtype").getName()));
  2977 +}
  2978 +
2965 2979 void
2966 2980 QPDFObjectHandle::assertPageObject()
2967 2981 {
... ...
libqpdf/QPDFPageObjectHelper.cc
... ... @@ -565,11 +565,7 @@ QPDFPageObjectHelper::removeUnreferencedResourcesHelper(
565 565 dict.removeKey(*k_iter);
566 566 }
567 567 QPDFObjectHandle resource = dict.getKey(*k_iter);
568   - if (resource.isStream() &&
569   - resource.getDict().getKey("/Type").isName() &&
570   - ("/XObject" == resource.getDict().getKey("/Type").getName()) &&
571   - resource.getDict().getKey("/Subtype").isName() &&
572   - ("/Form" == resource.getDict().getKey("/Subtype").getName()))
  568 + if (resource.isFormXObject())
573 569 {
574 570 QTC::TC("qpdf", "QPDFPageObjectHelper filter form xobject");
575 571 removeUnreferencedResourcesHelper(
... ...