From 08a925d3ff7e703e1752dbdcd0f1188ec9cee8d0 Mon Sep 17 00:00:00 2001 From: Paul Gardiner Date: Thu, 19 Apr 2012 16:27:53 +0100 Subject: Implement dummy JavaScript engine just for the sake of viewing calc.pdf --- pdf/pdf_form.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'pdf/pdf_form.c') diff --git a/pdf/pdf_form.c b/pdf/pdf_form.c index d1bc7576..31e1ce49 100644 --- a/pdf/pdf_form.c +++ b/pdf/pdf_form.c @@ -580,6 +580,26 @@ void pdf_synthesize_missing_appearance(pdf_document *doc, pdf_obj *obj) } } +static void execute_action(pdf_document *doc, pdf_obj *obj) +{ + pdf_obj *a; + + a = pdf_dict_gets(obj, "A"); + while (a) + { + char *type = pdf_to_name(pdf_dict_gets(a, "S")); + + if (!strcmp(type, "JavaScript")) + { + pdf_obj *js = pdf_dict_gets(a, "JS"); + if (js) + pdf_js_execute(doc->js, pdf_to_str_buf(js)); + } + + a = pdf_dict_gets(a, "Next"); + } +} + static void toggle_check_box(pdf_document *doc, pdf_obj *obj) { pdf_obj *as; @@ -673,6 +693,8 @@ int pdf_pass_event(pdf_document *doc, pdf_page *page, fz_ui_event *ui_event) changed = 1; break; } + + execute_action(doc, annot->obj); } break; } -- cgit v1.2.3