diff options
author | Jay Berkenbilt <ejb@ql.org> | 2020-12-31 19:05:02 +0100 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2021-01-01 13:36:10 +0100 |
commit | 1562d34c096424b4916be09e8dcd2f0f3effb17f (patch) | |
tree | ae76dcd3e5d1de1d100e0e7523ee7664d7bef681 | |
parent | c97bd6323e7f8988b4ff24b913a37e683eeaacf6 (diff) | |
download | qpdf-1562d34c096424b4916be09e8dcd2f0f3effb17f.tar.zst |
Add QPDFObjectHandle::isFormXObject
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | include/qpdf/QPDFObjectHandle.hh | 3 | ||||
-rw-r--r-- | libqpdf/QPDFObjectHandle.cc | 14 | ||||
-rw-r--r-- | libqpdf/QPDFPageObjectHelper.cc | 6 |
4 files changed, 23 insertions, 5 deletions
@@ -1,3 +1,8 @@ +2020-12-31 Jay Berkenbilt <ejb@ql.org> + + * Add QPDFObjectHandle::isFormXObject to test whether an object is + a form XObject. + 2020-12-30 Jay Berkenbilt <ejb@ql.org> * Add QPDFPageObjectHelper::flattenRotation and --flatten-rotation diff --git a/include/qpdf/QPDFObjectHandle.hh b/include/qpdf/QPDFObjectHandle.hh index ac59d428..e383e274 100644 --- a/include/qpdf/QPDFObjectHandle.hh +++ b/include/qpdf/QPDFObjectHandle.hh @@ -1147,6 +1147,9 @@ class QPDFObjectHandle QPDF_DLL void assertPageObject(); + QPDF_DLL + bool isFormXObject(); + private: QPDFObjectHandle(QPDF*, int objid, int generation); QPDFObjectHandle(QPDFObject*); diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc index 7b36fffe..181793f4 100644 --- a/libqpdf/QPDFObjectHandle.cc +++ b/libqpdf/QPDFObjectHandle.cc @@ -2962,6 +2962,20 @@ QPDFObjectHandle::isPagesObject() return (this->isDictionary() && this->hasKey("/Kids")); } +bool +QPDFObjectHandle::isFormXObject() +{ + if (! this->isStream()) + { + return false; + } + QPDFObjectHandle dict = this->getDict(); + return (dict.getKey("/Type").isName() && + ("/XObject" == dict.getKey("/Type").getName()) && + dict.getKey("/Subtype").isName() && + ("/Form" == dict.getKey("/Subtype").getName())); +} + void QPDFObjectHandle::assertPageObject() { diff --git a/libqpdf/QPDFPageObjectHelper.cc b/libqpdf/QPDFPageObjectHelper.cc index 58747814..a80ab641 100644 --- a/libqpdf/QPDFPageObjectHelper.cc +++ b/libqpdf/QPDFPageObjectHelper.cc @@ -565,11 +565,7 @@ QPDFPageObjectHelper::removeUnreferencedResourcesHelper( dict.removeKey(*k_iter); } QPDFObjectHandle resource = dict.getKey(*k_iter); - if (resource.isStream() && - resource.getDict().getKey("/Type").isName() && - ("/XObject" == resource.getDict().getKey("/Type").getName()) && - resource.getDict().getKey("/Subtype").isName() && - ("/Form" == resource.getDict().getKey("/Subtype").getName())) + if (resource.isFormXObject()) { QTC::TC("qpdf", "QPDFPageObjectHelper filter form xobject"); removeUnreferencedResourcesHelper( |