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>
* Add QPDFPageObjectHelper::flattenRotation and --flatten-rotation

View File

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

View File

@ -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()
{

View File

@ -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(