From 1562d34c096424b4916be09e8dcd2f0f3effb17f Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Thu, 31 Dec 2020 13:05:02 -0500 Subject: Add QPDFObjectHandle::isFormXObject --- ChangeLog | 5 +++++ include/qpdf/QPDFObjectHandle.hh | 3 +++ libqpdf/QPDFObjectHandle.cc | 14 ++++++++++++++ libqpdf/QPDFPageObjectHelper.cc | 6 +----- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9703de5f..79ed223a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2020-12-31 Jay Berkenbilt + + * Add QPDFObjectHandle::isFormXObject to test whether an object is + a form XObject. + 2020-12-30 Jay Berkenbilt * 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( -- cgit v1.2.3-70-g09d2