summaryrefslogtreecommitdiff
path: root/source/pdf/pdf-form.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/pdf/pdf-form.c')
-rw-r--r--source/pdf/pdf-form.c211
1 files changed, 91 insertions, 120 deletions
diff --git a/source/pdf/pdf-form.c b/source/pdf/pdf-form.c
index 4caadd25..f18396c4 100644
--- a/source/pdf/pdf-form.c
+++ b/source/pdf/pdf-form.c
@@ -27,15 +27,15 @@ static int pdf_field_dirties_document(fz_context *ctx, pdf_document *doc, pdf_ob
* share the same name */
static pdf_obj *find_head_of_field_group(fz_context *ctx, pdf_obj *obj)
{
- if (obj == NULL || pdf_dict_gets(ctx, obj, "T"))
+ if (obj == NULL || pdf_dict_get(ctx, obj, PDF_NAME_T))
return obj;
else
- return find_head_of_field_group(ctx, pdf_dict_gets(ctx, obj, "Parent"));
+ return find_head_of_field_group(ctx, pdf_dict_get(ctx, obj, PDF_NAME_Parent));
}
static void pdf_field_mark_dirty(fz_context *ctx, pdf_document *doc, pdf_obj *field)
{
- pdf_obj *kids = pdf_dict_gets(ctx, field, "Kids");
+ pdf_obj *kids = pdf_dict_get(ctx, field, PDF_NAME_Kids);
if (kids)
{
int i, n = pdf_array_len(ctx, kids);
@@ -67,7 +67,7 @@ static void update_field_value(fz_context *ctx, pdf_document *doc, pdf_obj *obj,
fz_try(ctx)
{
sobj = pdf_new_string(ctx, doc, text, strlen(text));
- pdf_dict_puts(ctx, obj, "V", sobj);
+ pdf_dict_put(ctx, obj, PDF_NAME_V, sobj);
}
fz_always(ctx)
{
@@ -92,7 +92,7 @@ static pdf_obj *find_field(fz_context *ctx, pdf_obj *dict, char *name, int len)
char *part;
field = pdf_array_get(ctx, dict, i);
- part = pdf_to_str_buf(ctx, pdf_dict_gets(ctx, field, "T"));
+ part = pdf_to_str_buf(ctx, pdf_dict_get(ctx, field, PDF_NAME_T));
if (strlen(part) == (size_t)len && !memcmp(part, name, len))
return field;
}
@@ -119,7 +119,7 @@ pdf_obj *pdf_lookup_field(fz_context *ctx, pdf_obj *form, char *name)
len = dot ? dot - namep : strlen(namep);
dict = find_field(ctx, form, namep, len);
if (dot)
- form = pdf_dict_gets(ctx, dict, "Kids");
+ form = pdf_dict_get(ctx, dict, PDF_NAME_Kids);
}
return dict;
@@ -134,13 +134,13 @@ static void reset_field(fz_context *ctx, pdf_document *doc, pdf_obj *field)
* At the bottom of the hierarchy we may find widget annotations
* that aren't also fields, but DV and V will not be present in their
* dictionaries, and attempts to remove V will be harmless. */
- pdf_obj *dv = pdf_dict_gets(ctx, field, "DV");
- pdf_obj *kids = pdf_dict_gets(ctx, field, "Kids");
+ pdf_obj *dv = pdf_dict_get(ctx, field, PDF_NAME_DV);
+ pdf_obj *kids = pdf_dict_get(ctx, field, PDF_NAME_Kids);
if (dv)
- pdf_dict_puts(ctx, field, "V", dv);
+ pdf_dict_put(ctx, field, PDF_NAME_V, dv);
else
- pdf_dict_dels(ctx, field, "V");
+ pdf_dict_del(ctx, field, PDF_NAME_V);
if (kids == NULL)
{
@@ -153,16 +153,16 @@ static void reset_field(fz_context *ctx, pdf_document *doc, pdf_obj *field)
case PDF_WIDGET_TYPE_RADIOBUTTON:
case PDF_WIDGET_TYPE_CHECKBOX:
{
- pdf_obj *leafv = pdf_get_inheritable(ctx, doc, field, "V");
+ pdf_obj *leafv = pdf_get_inheritable(ctx, doc, field, PDF_NAME_V);
if (leafv)
pdf_keep_obj(ctx, leafv);
else
- leafv = pdf_new_name(ctx, doc, "Off");
+ leafv = PDF_NAME_Off;
fz_try(ctx)
{
- pdf_dict_puts(ctx, field, "AS", leafv);
+ pdf_dict_put(ctx, field, PDF_NAME_AS, leafv);
}
fz_always(ctx)
{
@@ -190,7 +190,7 @@ static void reset_field(fz_context *ctx, pdf_document *doc, pdf_obj *field)
void pdf_field_reset(fz_context *ctx, pdf_document *doc, pdf_obj *field)
{
- pdf_obj *kids = pdf_dict_gets(ctx, field, "Kids");
+ pdf_obj *kids = pdf_dict_get(ctx, field, PDF_NAME_Kids);
reset_field(ctx, doc, field);
@@ -205,8 +205,8 @@ void pdf_field_reset(fz_context *ctx, pdf_document *doc, pdf_obj *field)
static void add_field_hierarchy_to_array(fz_context *ctx, pdf_obj *array, pdf_obj *field)
{
- pdf_obj *kids = pdf_dict_gets(ctx, field, "Kids");
- pdf_obj *exclude = pdf_dict_gets(ctx, field, "Exclude");
+ pdf_obj *kids = pdf_dict_get(ctx, field, PDF_NAME_Kids);
+ pdf_obj *exclude = pdf_dict_get(ctx, field, PDF_NAME_Exclude);
if (exclude)
return;
@@ -231,7 +231,7 @@ static void add_field_hierarchy_to_array(fz_context *ctx, pdf_obj *array, pdf_ob
*/
static pdf_obj *specified_fields(fz_context *ctx, pdf_document *doc, pdf_obj *fields, int exclude)
{
- pdf_obj *form = pdf_dict_getp(ctx, pdf_trailer(ctx, doc), "Root/AcroForm/Fields");
+ pdf_obj *form = pdf_dict_getl(ctx, pdf_trailer(ctx, doc), PDF_NAME_Root, PDF_NAME_AcroForm, PDF_NAME_Fields, NULL);
int i, n;
pdf_obj *result = pdf_new_array(ctx, doc, 0);
pdf_obj *nil = NULL;
@@ -256,7 +256,7 @@ static pdf_obj *specified_fields(fz_context *ctx, pdf_document *doc, pdf_obj *fi
field = pdf_lookup_field(ctx, form, pdf_to_str_buf(ctx, field));
if (field)
- pdf_dict_puts(ctx, field, "Exclude", nil);
+ pdf_dict_put(ctx, field, PDF_NAME_Exclude, nil);
}
/* Act upon all unmarked fields */
@@ -276,7 +276,7 @@ static pdf_obj *specified_fields(fz_context *ctx, pdf_document *doc, pdf_obj *fi
field = pdf_lookup_field(ctx, form, pdf_to_str_buf(ctx, field));
if (field)
- pdf_dict_dels(ctx, field, "Exclude");
+ pdf_dict_del(ctx, field, PDF_NAME_Exclude);
}
}
else
@@ -333,11 +333,11 @@ static void execute_action(fz_context *ctx, pdf_document *doc, pdf_obj *obj, pdf
{
if (a)
{
- char *type = pdf_to_name(ctx, pdf_dict_gets(ctx, a, "S"));
+ pdf_obj *type = pdf_dict_get(ctx, a, PDF_NAME_S);
- if (!strcmp(type, "JavaScript"))
+ if (pdf_name_eq(ctx, type, PDF_NAME_JavaScript))
{
- pdf_obj *js = pdf_dict_gets(ctx, a, "JS");
+ pdf_obj *js = pdf_dict_get(ctx, a, PDF_NAME_JS);
if (js)
{
char *code = pdf_to_utf8(ctx, doc, js);
@@ -355,15 +355,15 @@ static void execute_action(fz_context *ctx, pdf_document *doc, pdf_obj *obj, pdf
}
}
}
- else if (!strcmp(type, "ResetForm"))
+ else if (pdf_name_eq(ctx, type, PDF_NAME_ResetForm))
{
- reset_form(ctx, doc, pdf_dict_gets(ctx, a, "Fields"), pdf_to_int(ctx, pdf_dict_gets(ctx, a, "Flags")) & 1);
+ reset_form(ctx, doc, pdf_dict_get(ctx, a, PDF_NAME_Fields), pdf_to_int(ctx, pdf_dict_get(ctx, a, PDF_NAME_Flags)) & 1);
}
- else if (!strcmp(type, "Named"))
+ else if (pdf_name_eq(ctx, type, PDF_NAME_Named))
{
- char *name = pdf_to_name(ctx, pdf_dict_gets(ctx, a, "N"));
+ pdf_obj *name = pdf_dict_get(ctx, a, PDF_NAME_N);
- if (!strcmp(name, "Print"))
+ if (pdf_name_eq(ctx, name, PDF_NAME_Print))
pdf_event_issue_print(ctx, doc);
}
}
@@ -371,7 +371,7 @@ static void execute_action(fz_context *ctx, pdf_document *doc, pdf_obj *obj, pdf
static void execute_action_chain(fz_context *ctx, pdf_document *doc, pdf_obj *obj)
{
- pdf_obj *a = pdf_dict_gets(ctx, obj, "A");
+ pdf_obj *a = pdf_dict_get(ctx, obj, PDF_NAME_A);
pdf_js_event e;
e.target = obj;
@@ -381,7 +381,7 @@ static void execute_action_chain(fz_context *ctx, pdf_document *doc, pdf_obj *ob
while (a)
{
execute_action(ctx, doc, obj, a);
- a = pdf_dict_gets(ctx, a, "Next");
+ a = pdf_dict_get(ctx, a, PDF_NAME_Next);
}
}
@@ -402,56 +402,29 @@ static void execute_additional_action(fz_context *ctx, pdf_document *doc, pdf_ob
static void check_off(fz_context *ctx, pdf_document *doc, pdf_obj *obj)
{
- pdf_obj *off = NULL;
-
- fz_var(off);
- fz_try(ctx);
- {
- off = pdf_new_name(ctx, doc, "Off");
- pdf_dict_puts(ctx, obj, "AS", off);
- }
- fz_always(ctx)
- {
- pdf_drop_obj(ctx, off);
- }
- fz_catch(ctx)
- {
- fz_rethrow(ctx);
- }
+ pdf_dict_put(ctx, obj, PDF_NAME_AS, PDF_NAME_Off);
}
-static void set_check(fz_context *ctx, pdf_document *doc, pdf_obj *chk, char *name)
+static void set_check(fz_context *ctx, pdf_document *doc, pdf_obj *chk, pdf_obj *name)
{
pdf_obj *n = pdf_dict_getp(ctx, chk, "AP/N");
- pdf_obj *val = NULL;
+ pdf_obj *val;
- fz_var(val);
- fz_try(ctx)
- {
- /* If name is a possible value of this check
- * box then use it, otherwise use "Off" */
- if (pdf_dict_gets(ctx, n, name))
- val = pdf_new_name(ctx, doc, name);
- else
- val = pdf_new_name(ctx, doc, "Off");
+ /* If name is a possible value of this check
+ * box then use it, otherwise use "Off" */
+ if (pdf_dict_get(ctx, n, name))
+ val = name;
+ else
+ val = PDF_NAME_Off;
- pdf_dict_puts(ctx, chk, "AS", val);
- }
- fz_always(ctx)
- {
- pdf_drop_obj(ctx, val);
- }
- fz_catch(ctx)
- {
- fz_rethrow(ctx);
- }
+ pdf_dict_put_drop(ctx, chk, PDF_NAME_AS, val);
}
/* Set the values of all fields in a group defined by a node
* in the hierarchy */
-static void set_check_grp(fz_context *ctx, pdf_document *doc, pdf_obj *grp, char *val)
+static void set_check_grp(fz_context *ctx, pdf_document *doc, pdf_obj *grp, pdf_obj *val)
{
- pdf_obj *kids = pdf_dict_gets(ctx, grp, "Kids");
+ pdf_obj *kids = pdf_dict_get(ctx, grp, PDF_NAME_Kids);
if (kids == NULL)
{
@@ -512,16 +485,16 @@ static void recalculate(fz_context *ctx, pdf_document *doc)
static void toggle_check_box(fz_context *ctx, pdf_document *doc, pdf_obj *obj)
{
- pdf_obj *as = pdf_dict_gets(ctx, obj, "AS");
+ pdf_obj *as = pdf_dict_get(ctx, obj, PDF_NAME_AS);
int ff = pdf_get_field_flags(ctx, doc, obj);
int radio = ((ff & (Ff_Pushbutton|Ff_Radio)) == Ff_Radio);
char *val = NULL;
- pdf_obj *grp = radio ? pdf_dict_gets(ctx, obj, "Parent") : find_head_of_field_group(ctx, obj);
+ pdf_obj *grp = radio ? pdf_dict_get(ctx, obj, PDF_NAME_Parent) : find_head_of_field_group(ctx, obj);
if (!grp)
grp = obj;
- if (as && strcmp(pdf_to_name(ctx, as), "Off"))
+ if (as && !pdf_name_eq(ctx, as, PDF_NAME_Off))
{
/* "as" neither missing nor set to Off. Set it to Off, unless
* this is a non-toggle-off radio button. */
@@ -543,7 +516,7 @@ static void toggle_check_box(fz_context *ctx, pdf_document *doc, pdf_obj *obj)
for (i = 0; i < len; i++)
{
key = pdf_dict_get_key(ctx, n, i);
- if (pdf_is_name(ctx, key) && strcmp(pdf_to_name(ctx, key), "Off"))
+ if (pdf_is_name(ctx, key) && !pdf_name_eq(ctx, key, PDF_NAME_Off))
break;
}
@@ -551,19 +524,17 @@ static void toggle_check_box(fz_context *ctx, pdf_document *doc, pdf_obj *obj)
if (!key)
return;
- val = pdf_to_name(ctx, key);
-
if (radio)
{
/* For radio buttons, first turn off all buttons in the group and
* then set the one that was clicked */
- pdf_obj *kids = pdf_dict_gets(ctx, grp, "Kids");
+ pdf_obj *kids = pdf_dict_get(ctx, grp, PDF_NAME_Kids);
len = pdf_array_len(ctx, kids);
for (i = 0; i < len; i++)
check_off(ctx, doc, pdf_array_get(ctx, kids, i));
- pdf_dict_puts(ctx, obj, "AS", key);
+ pdf_dict_put(ctx, obj, PDF_NAME_AS, key);
}
else
{
@@ -572,9 +543,9 @@ static void toggle_check_box(fz_context *ctx, pdf_document *doc, pdf_obj *obj)
* all to the same value. This may cause the group to act like
* radio buttons, if each have distinct "On" values */
if (grp)
- set_check_grp(ctx, doc, grp, val);
+ set_check_grp(ctx, doc, grp, key);
else
- set_check(ctx, doc, obj, val);
+ set_check(ctx, doc, obj, key);
}
}
@@ -586,7 +557,7 @@ static void toggle_check_box(fz_context *ctx, pdf_document *doc, pdf_obj *obj)
fz_try(ctx)
{
v = pdf_new_string(ctx, doc, val, strlen(val));
- pdf_dict_puts(ctx, grp, "V", v);
+ pdf_dict_put(ctx, grp, PDF_NAME_V, v);
}
fz_always(ctx)
{
@@ -625,7 +596,7 @@ int pdf_pass_event(fz_context *ctx, pdf_document *doc, pdf_page *page, pdf_ui_ev
if (annot)
{
- int f = pdf_to_int(ctx, pdf_dict_gets(ctx, annot->obj, "F"));
+ int f = pdf_to_int(ctx, pdf_dict_get(ctx, annot->obj, PDF_NAME_F));
if (f & (F_Hidden|F_NoView))
annot = NULL;
@@ -805,13 +776,13 @@ pdf_widget *pdf_create_widget(fz_context *ctx, pdf_document *doc, pdf_page *page
fz_try(ctx)
{
pdf_set_field_type(ctx, doc, annot->obj, type);
- pdf_dict_puts_drop(ctx, annot->obj, "T", pdf_new_string(ctx, doc, fieldname, strlen(fieldname)));
+ pdf_dict_put_drop(ctx, annot->obj, PDF_NAME_T, pdf_new_string(ctx, doc, fieldname, strlen(fieldname)));
annot->widget_type = type;
if (type == PDF_WIDGET_TYPE_SIGNATURE)
{
int sigflags = (old_sigflags | (SigFlag_SignaturesExist|SigFlag_AppendOnly));
- pdf_dict_putp_drop(ctx, pdf_trailer(ctx, doc), "Root/AcroForm/SigFlags", pdf_new_int(ctx, doc, sigflags));
+ pdf_dict_putl_drop(ctx, pdf_trailer(ctx, doc), pdf_new_int(ctx, doc, sigflags), PDF_NAME_Root, PDF_NAME_AcroForm, PDF_NAME_SigFlags, NULL);
}
/*
@@ -822,7 +793,7 @@ pdf_widget *pdf_create_widget(fz_context *ctx, pdf_document *doc, pdf_page *page
if (!form)
{
form = pdf_new_array(ctx, doc, 1);
- pdf_dict_putp_drop(ctx, pdf_trailer(ctx, doc), "Root/AcroForm/Fields", form);
+ pdf_dict_putl_drop(ctx, pdf_trailer(ctx, doc), form, PDF_NAME_Root, PDF_NAME_AcroForm, PDF_NAME_Fields, NULL);
}
pdf_array_push(ctx, form, annot->obj); /* Cleanup relies on this statement being last */
@@ -834,7 +805,7 @@ pdf_widget *pdf_create_widget(fz_context *ctx, pdf_document *doc, pdf_page *page
/* An empty Fields array may have been created, but that is harmless */
if (type == PDF_WIDGET_TYPE_SIGNATURE)
- pdf_dict_putp_drop(ctx, pdf_trailer(ctx, doc), "Root/AcroForm/SigFlags", pdf_new_int(ctx, doc, old_sigflags));
+ pdf_dict_putl_drop(ctx, pdf_trailer(ctx, doc), pdf_new_int(ctx, doc, old_sigflags), PDF_NAME_Root, PDF_NAME_AcroForm, PDF_NAME_SigFlags, NULL);
fz_rethrow(ctx);
}
@@ -876,7 +847,7 @@ static int set_text_field_value(fz_context *ctx, pdf_document *doc, pdf_obj *fie
static void update_checkbox_selector(fz_context *ctx, pdf_document *doc, pdf_obj *field, char *val)
{
- pdf_obj *kids = pdf_dict_gets(ctx, field, "Kids");
+ pdf_obj *kids = pdf_dict_get(ctx, field, PDF_NAME_Kids);
if (kids)
{
@@ -896,9 +867,9 @@ static void update_checkbox_selector(fz_context *ctx, pdf_document *doc, pdf_obj
if (pdf_dict_gets(ctx, n, val))
oval = pdf_new_name(ctx, doc, val);
else
- oval = pdf_new_name(ctx, doc, "Off");
+ oval = PDF_NAME_Off;
- pdf_dict_puts(ctx, field, "AS", oval);
+ pdf_dict_put(ctx, field, PDF_NAME_AS, oval);
}
fz_always(ctx)
{
@@ -947,7 +918,7 @@ int pdf_field_set_value(fz_context *ctx, pdf_document *doc, pdf_obj *field, char
char *pdf_field_border_style(fz_context *ctx, pdf_document *doc, pdf_obj *field)
{
- char *bs = pdf_to_name(ctx, pdf_dict_getp(ctx, field, "BS/S"));
+ char *bs = pdf_to_name(ctx, pdf_dict_getl(ctx, field, PDF_NAME_BS, PDF_NAME_S, NULL));
switch (*bs)
{
@@ -966,21 +937,21 @@ void pdf_field_set_border_style(fz_context *ctx, pdf_document *doc, pdf_obj *fie
pdf_obj *val = NULL;
if (!strcmp(text, "Solid"))
- val = pdf_new_name(ctx, doc, "S");
+ val = PDF_NAME_S;
else if (!strcmp(text, "Dashed"))
- val = pdf_new_name(ctx, doc, "D");
+ val = PDF_NAME_D;
else if (!strcmp(text, "Beveled"))
- val = pdf_new_name(ctx, doc, "B");
+ val = PDF_NAME_B;
else if (!strcmp(text, "Inset"))
- val = pdf_new_name(ctx, doc, "I");
+ val = PDF_NAME_I;
else if (!strcmp(text, "Underline"))
- val = pdf_new_name(ctx, doc, "U");
+ val = PDF_NAME_U;
else
return;
fz_try(ctx);
{
- pdf_dict_putp(ctx, field, "BS/S", val);
+ pdf_dict_putl(ctx, field, val, PDF_NAME_BS, PDF_NAME_S, NULL);
pdf_field_mark_dirty(ctx, doc, field);
}
fz_always(ctx)
@@ -1001,7 +972,7 @@ void pdf_field_set_button_caption(fz_context *ctx, pdf_document *doc, pdf_obj *f
{
if (pdf_field_type(ctx, doc, field) == PDF_WIDGET_TYPE_PUSHBUTTON)
{
- pdf_dict_putp(ctx, field, "MK/CA", val);
+ pdf_dict_putl(ctx, field, val, PDF_NAME_MK, PDF_NAME_CA, NULL);
pdf_field_mark_dirty(ctx, doc, field);
}
}
@@ -1023,10 +994,10 @@ int pdf_field_display(fz_context *ctx, pdf_document *doc, pdf_obj *field)
/* Base response on first of children. Not ideal,
* but not clear how to handle children with
* differing values */
- while ((kids = pdf_dict_gets(ctx, field, "Kids")) != NULL)
+ while ((kids = pdf_dict_get(ctx, field, PDF_NAME_Kids)) != NULL)
field = pdf_array_get(ctx, kids, 0);
- f = pdf_to_int(ctx, pdf_dict_gets(ctx, field, "F"));
+ f = pdf_to_int(ctx, pdf_dict_get(ctx, field, PDF_NAME_F));
if (f & F_Hidden)
{
@@ -1055,8 +1026,8 @@ int pdf_field_display(fz_context *ctx, pdf_document *doc, pdf_obj *field)
static char *get_field_name(fz_context *ctx, pdf_document *doc, pdf_obj *field, int spare)
{
char *res = NULL;
- pdf_obj *parent = pdf_dict_gets(ctx, field, "Parent");
- char *lname = pdf_to_str_buf(ctx, pdf_dict_gets(ctx, field, "T"));
+ pdf_obj *parent = pdf_dict_get(ctx, field, PDF_NAME_Parent);
+ char *lname = pdf_to_str_buf(ctx, pdf_dict_get(ctx, field, PDF_NAME_T));
int llen = strlen(lname);
/*
@@ -1094,12 +1065,12 @@ char *pdf_field_name(fz_context *ctx, pdf_document *doc, pdf_obj *field)
void pdf_field_set_display(fz_context *ctx, pdf_document *doc, pdf_obj *field, int d)
{
- pdf_obj *kids = pdf_dict_gets(ctx, field, "Kids");
+ pdf_obj *kids = pdf_dict_get(ctx, field, PDF_NAME_Kids);
if (!kids)
{
int mask = (F_Hidden|F_Print|F_NoView);
- int f = pdf_to_int(ctx, pdf_dict_gets(ctx, field, "F")) & ~mask;
+ int f = pdf_to_int(ctx, pdf_dict_get(ctx, field, PDF_NAME_F)) & ~mask;
pdf_obj *fo = NULL;
switch (d)
@@ -1121,7 +1092,7 @@ void pdf_field_set_display(fz_context *ctx, pdf_document *doc, pdf_obj *field, i
fz_try(ctx)
{
fo = pdf_new_int(ctx, doc, f);
- pdf_dict_puts(ctx, field, "F", fo);
+ pdf_dict_put(ctx, field, PDF_NAME_F, fo);
}
fz_always(ctx)
{
@@ -1146,7 +1117,7 @@ void pdf_field_set_fill_color(fz_context *ctx, pdf_document *doc, pdf_obj *field
/* col == NULL mean transparent, but we can simply pass it on as with
* non-NULL values because pdf_dict_putp interprets a NULL value as
* delete */
- pdf_dict_putp(ctx, field, "MK/BG", col);
+ pdf_dict_putl(ctx, field, col, PDF_NAME_MK, PDF_NAME_BG, NULL);
pdf_field_mark_dirty(ctx, doc, field);
}
@@ -1154,7 +1125,7 @@ void pdf_field_set_text_color(fz_context *ctx, pdf_document *doc, pdf_obj *field
{
pdf_da_info di;
fz_buffer *fzbuf = NULL;
- char *da = pdf_to_str_buf(ctx, pdf_get_inheritable(ctx, doc, field, "DA"));
+ char *da = pdf_to_str_buf(ctx, pdf_get_inheritable(ctx, doc, field, PDF_NAME_DA));
unsigned char *buf;
int len;
pdf_obj *daobj = NULL;
@@ -1179,7 +1150,7 @@ void pdf_field_set_text_color(fz_context *ctx, pdf_document *doc, pdf_obj *field
pdf_fzbuf_print_da(ctx, fzbuf, &di);
len = fz_buffer_storage(ctx, fzbuf, &buf);
daobj = pdf_new_string(ctx, doc, (char *)buf, len);
- pdf_dict_puts(ctx, field, "DA", daobj);
+ pdf_dict_put(ctx, field, PDF_NAME_DA, daobj);
pdf_field_mark_dirty(ctx, doc, field);
}
fz_always(ctx)
@@ -1227,7 +1198,7 @@ int pdf_text_widget_max_len(fz_context *ctx, pdf_document *doc, pdf_widget *tw)
{
pdf_annot *annot = (pdf_annot *)tw;
- return pdf_to_int(ctx, pdf_get_inheritable(ctx, doc, annot->obj, "MaxLen"));
+ return pdf_to_int(ctx, pdf_get_inheritable(ctx, doc, annot->obj, PDF_NAME_MaxLen));
}
int pdf_text_widget_content_type(fz_context *ctx, pdf_document *doc, pdf_widget *tw)
@@ -1239,7 +1210,7 @@ int pdf_text_widget_content_type(fz_context *ctx, pdf_document *doc, pdf_widget
fz_var(code);
fz_try(ctx)
{
- code = pdf_get_string_or_stream(ctx, doc, pdf_dict_getp(ctx, annot->obj, "AA/F/JS"));
+ code = pdf_get_string_or_stream(ctx, doc, pdf_dict_getl(ctx, annot->obj, PDF_NAME_AA, PDF_NAME_F, PDF_NAME_JS, NULL));
if (code)
{
if (strstr(code, "AFNumber_Format"))
@@ -1266,7 +1237,7 @@ int pdf_text_widget_content_type(fz_context *ctx, pdf_document *doc, pdf_widget
static int run_keystroke(fz_context *ctx, pdf_document *doc, pdf_obj *field, char **text)
{
- pdf_obj *k = pdf_dict_getp(ctx, field, "AA/K");
+ pdf_obj *k = pdf_dict_getl(ctx, field, PDF_NAME_AA, PDF_NAME_K, NULL);
if (k && doc->js)
{
@@ -1314,7 +1285,7 @@ int pdf_choice_widget_options(fz_context *ctx, pdf_document *doc, pdf_widget *tw
if (!annot)
return 0;
- optarr = pdf_dict_gets(ctx, annot->obj, "Opt");
+ optarr = pdf_dict_get(ctx, annot->obj, PDF_NAME_Opt);
n = pdf_array_len(ctx, optarr);
if (opts)
@@ -1353,7 +1324,7 @@ int pdf_choice_widget_value(fz_context *ctx, pdf_document *doc, pdf_widget *tw,
if (!annot)
return 0;
- optarr = pdf_dict_gets(ctx, annot->obj, "V");
+ optarr = pdf_dict_get(ctx, annot->obj, PDF_NAME_V);
if (pdf_is_string(ctx, optarr))
{
@@ -1408,18 +1379,18 @@ void pdf_choice_widget_set_value(fz_context *ctx, pdf_document *doc, pdf_widget
opt = NULL;
}
- pdf_dict_puts(ctx, annot->obj, "V", optarr);
+ pdf_dict_put(ctx, annot->obj, PDF_NAME_V, optarr);
pdf_drop_obj(ctx, optarr);
}
else
{
opt = pdf_new_string(ctx, doc, opts[0], strlen(opts[0]));
- pdf_dict_puts(ctx, annot->obj, "V", opt);
+ pdf_dict_put(ctx, annot->obj, PDF_NAME_V, opt);
pdf_drop_obj(ctx, opt);
}
/* FIXME: when n > 1, we should be regenerating the indexes */
- pdf_dict_dels(ctx, annot->obj, "I");
+ pdf_dict_del(ctx, annot->obj, PDF_NAME_I);
pdf_field_mark_dirty(ctx, doc, annot->obj);
if (pdf_field_dirties_document(ctx, doc, annot->obj))
@@ -1436,7 +1407,7 @@ void pdf_choice_widget_set_value(fz_context *ctx, pdf_document *doc, pdf_widget
int pdf_signature_widget_byte_range(fz_context *ctx, pdf_document *doc, pdf_widget *widget, int (*byte_range)[2])
{
pdf_annot *annot = (pdf_annot *)widget;
- pdf_obj *br = pdf_dict_getp(ctx, annot->obj, "V/ByteRange");
+ pdf_obj *br = pdf_dict_getl(ctx, annot->obj, PDF_NAME_V, PDF_NAME_ByteRange, NULL);
int i, n = pdf_array_len(ctx, br)/2;
if (byte_range)
@@ -1454,7 +1425,7 @@ int pdf_signature_widget_byte_range(fz_context *ctx, pdf_document *doc, pdf_widg
int pdf_signature_widget_contents(fz_context *ctx, pdf_document *doc, pdf_widget *widget, char **contents)
{
pdf_annot *annot = (pdf_annot *)widget;
- pdf_obj *c = pdf_dict_getp(ctx, annot->obj, "V/Contents");
+ pdf_obj *c = pdf_dict_getl(ctx, annot->obj, PDF_NAME_V, PDF_NAME_Contents, NULL);
if (contents)
*contents = pdf_to_str_buf(ctx, c);
return pdf_to_str_len(ctx, c);
@@ -1474,7 +1445,7 @@ void pdf_signature_set_value(fz_context *ctx, pdf_document *doc, pdf_obj *field,
vnum = pdf_create_object(ctx, doc);
indv = pdf_new_indirect(ctx, doc, vnum, 0);
- pdf_dict_puts_drop(ctx, field, "V", indv);
+ pdf_dict_put_drop(ctx, field, PDF_NAME_V, indv);
fz_var(v);
fz_try(ctx)
@@ -1492,13 +1463,13 @@ void pdf_signature_set_value(fz_context *ctx, pdf_document *doc, pdf_obj *field,
}
byte_range = pdf_new_array(ctx, doc, 4);
- pdf_dict_puts_drop(ctx, v, "ByteRange", byte_range);
+ pdf_dict_put_drop(ctx, v, PDF_NAME_ByteRange, byte_range);
contents = pdf_new_string(ctx, doc, buf, sizeof(buf));
- pdf_dict_puts_drop(ctx, v, "Contents", contents);
+ pdf_dict_put_drop(ctx, v, PDF_NAME_Contents, contents);
- pdf_dict_puts_drop(ctx, v, "Filter", pdf_new_name(ctx, doc, "Adobe.PPKLite"));
- pdf_dict_puts_drop(ctx, v, "SubFilter", pdf_new_name(ctx, doc, "adbe.pkcs7.detached"));
+ pdf_dict_put_drop(ctx, v, PDF_NAME_Filter, PDF_NAME_Adobe_PPKLite);
+ pdf_dict_put_drop(ctx, v, PDF_NAME_SubFilter, PDF_NAME_adbe_pkcs7_detached);
/* Record details within the document structure so that contents
* and byte_range can be updated with their correct values at