Commit 1562d34c096424b4916be09e8dcd2f0f3effb17f
1 parent
c97bd632
Add QPDFObjectHandle::isFormXObject
Showing
4 changed files
with
23 additions
and
5 deletions
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 | 2020-12-30 Jay Berkenbilt <ejb@ql.org> | 6 | 2020-12-30 Jay Berkenbilt <ejb@ql.org> |
| 2 | 7 | ||
| 3 | * Add QPDFPageObjectHelper::flattenRotation and --flatten-rotation | 8 | * Add QPDFPageObjectHelper::flattenRotation and --flatten-rotation |
include/qpdf/QPDFObjectHandle.hh
| @@ -1147,6 +1147,9 @@ class QPDFObjectHandle | @@ -1147,6 +1147,9 @@ class QPDFObjectHandle | ||
| 1147 | QPDF_DLL | 1147 | QPDF_DLL |
| 1148 | void assertPageObject(); | 1148 | void assertPageObject(); |
| 1149 | 1149 | ||
| 1150 | + QPDF_DLL | ||
| 1151 | + bool isFormXObject(); | ||
| 1152 | + | ||
| 1150 | private: | 1153 | private: |
| 1151 | QPDFObjectHandle(QPDF*, int objid, int generation); | 1154 | QPDFObjectHandle(QPDF*, int objid, int generation); |
| 1152 | QPDFObjectHandle(QPDFObject*); | 1155 | QPDFObjectHandle(QPDFObject*); |
libqpdf/QPDFObjectHandle.cc
| @@ -2962,6 +2962,20 @@ QPDFObjectHandle::isPagesObject() | @@ -2962,6 +2962,20 @@ QPDFObjectHandle::isPagesObject() | ||
| 2962 | return (this->isDictionary() && this->hasKey("/Kids")); | 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 | void | 2979 | void |
| 2966 | QPDFObjectHandle::assertPageObject() | 2980 | QPDFObjectHandle::assertPageObject() |
| 2967 | { | 2981 | { |
libqpdf/QPDFPageObjectHelper.cc
| @@ -565,11 +565,7 @@ QPDFPageObjectHelper::removeUnreferencedResourcesHelper( | @@ -565,11 +565,7 @@ QPDFPageObjectHelper::removeUnreferencedResourcesHelper( | ||
| 565 | dict.removeKey(*k_iter); | 565 | dict.removeKey(*k_iter); |
| 566 | } | 566 | } |
| 567 | QPDFObjectHandle resource = dict.getKey(*k_iter); | 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 | QTC::TC("qpdf", "QPDFPageObjectHelper filter form xobject"); | 570 | QTC::TC("qpdf", "QPDFPageObjectHelper filter form xobject"); |
| 575 | removeUnreferencedResourcesHelper( | 571 | removeUnreferencedResourcesHelper( |