aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2020-12-31 19:05:02 +0100
committerJay Berkenbilt <ejb@ql.org>2021-01-01 13:36:10 +0100
commit1562d34c096424b4916be09e8dcd2f0f3effb17f (patch)
treeae76dcd3e5d1de1d100e0e7523ee7664d7bef681
parentc97bd6323e7f8988b4ff24b913a37e683eeaacf6 (diff)
downloadqpdf-1562d34c096424b4916be09e8dcd2f0f3effb17f.tar.zst
Add QPDFObjectHandle::isFormXObject
-rw-r--r--ChangeLog5
-rw-r--r--include/qpdf/QPDFObjectHandle.hh3
-rw-r--r--libqpdf/QPDFObjectHandle.cc14
-rw-r--r--libqpdf/QPDFPageObjectHelper.cc6
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 <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(