2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-05-29 08:20:53 +00:00

Add QPDFObjectHandle::isFormXObject

This commit is contained in:
Jay Berkenbilt 2020-12-31 13:05:02 -05:00
parent c97bd6323e
commit 1562d34c09
4 changed files with 23 additions and 5 deletions

View File

@ -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> 2020-12-30 Jay Berkenbilt <ejb@ql.org>
* Add QPDFPageObjectHelper::flattenRotation and --flatten-rotation * Add QPDFPageObjectHelper::flattenRotation and --flatten-rotation

View File

@ -1147,6 +1147,9 @@ class QPDFObjectHandle
QPDF_DLL QPDF_DLL
void assertPageObject(); void assertPageObject();
QPDF_DLL
bool isFormXObject();
private: private:
QPDFObjectHandle(QPDF*, int objid, int generation); QPDFObjectHandle(QPDF*, int objid, int generation);
QPDFObjectHandle(QPDFObject*); QPDFObjectHandle(QPDFObject*);

View File

@ -2962,6 +2962,20 @@ QPDFObjectHandle::isPagesObject()
return (this->isDictionary() && this->hasKey("/Kids")); 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 void
QPDFObjectHandle::assertPageObject() QPDFObjectHandle::assertPageObject()
{ {

View File

@ -565,11 +565,7 @@ QPDFPageObjectHelper::removeUnreferencedResourcesHelper(
dict.removeKey(*k_iter); dict.removeKey(*k_iter);
} }
QPDFObjectHandle resource = dict.getKey(*k_iter); QPDFObjectHandle resource = dict.getKey(*k_iter);
if (resource.isStream() && if (resource.isFormXObject())
resource.getDict().getKey("/Type").isName() &&
("/XObject" == resource.getDict().getKey("/Type").getName()) &&
resource.getDict().getKey("/Subtype").isName() &&
("/Form" == resource.getDict().getKey("/Subtype").getName()))
{ {
QTC::TC("qpdf", "QPDFPageObjectHelper filter form xobject"); QTC::TC("qpdf", "QPDFPageObjectHelper filter form xobject");
removeUnreferencedResourcesHelper( removeUnreferencedResourcesHelper(