aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf
diff options
context:
space:
mode:
Diffstat (limited to 'libqpdf')
-rw-r--r--libqpdf/QPDFObjectHandle.cc14
-rw-r--r--libqpdf/QPDFPageObjectHelper.cc6
2 files changed, 15 insertions, 5 deletions
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(