summaryrefslogtreecommitdiff
path: root/source/pdf/pdf-op-filter.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/pdf/pdf-op-filter.c')
-rw-r--r--source/pdf/pdf-op-filter.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/source/pdf/pdf-op-filter.c b/source/pdf/pdf-op-filter.c
index 52e38883..17bd3af0 100644
--- a/source/pdf/pdf-op-filter.c
+++ b/source/pdf/pdf-op-filter.c
@@ -45,23 +45,28 @@ typedef struct pdf_filter_state_s
pdf_obj *resources;
} pdf_filter_state;
-static void insert_resource(pdf_csi *csi, pdf_filter_state *state, const char *key)
+static void insert_resource_name(pdf_csi *csi, pdf_filter_state *state, const char *key, const char *name)
{
pdf_obj *xobj;
pdf_obj *obj;
- if (!state->resources)
+ if (!state->resources || !name || name[0] == 0)
return;
xobj = pdf_dict_gets(csi->rdb, key);
- obj = pdf_dict_gets(xobj, csi->name);
+ obj = pdf_dict_gets(xobj, name);
xobj = pdf_dict_gets(state->resources, key);
if (xobj == NULL) {
xobj = pdf_new_dict(csi->doc, 1);
pdf_dict_puts_drop(state->resources, key, xobj);
}
- pdf_dict_putp(xobj, csi->name, obj);
+ pdf_dict_putp(xobj, name, obj);
+}
+
+static void insert_resource(pdf_csi *csi, pdf_filter_state *state, const char *key)
+{
+ insert_resource_name(csi, state, key, csi->name);
}
static inline void call_op(pdf_csi *csi, pdf_filter_state *state, int op)
@@ -403,6 +408,8 @@ pdf_filter_BDC(pdf_csi *csi, void *state_)
{
pdf_filter_state *state = (pdf_filter_state *)state_;
+ insert_resource_name(csi, state, "Properties", pdf_to_name(csi->obj));
+
filter_flush(csi, state, 0);
call_op(csi, state, PDF_OP_BDC);
}
@@ -460,6 +467,8 @@ pdf_filter_DP(pdf_csi *csi, void *state_)
{
pdf_filter_state *state = (pdf_filter_state *)state_;
+ insert_resource_name(csi, state, "Properties", pdf_to_name(csi->obj));
+
filter_flush(csi, state, 0);
call_op(csi, state, PDF_OP_DP);
}