summaryrefslogtreecommitdiff
path: root/pdf/pdf_js.c
diff options
context:
space:
mode:
Diffstat (limited to 'pdf/pdf_js.c')
-rw-r--r--pdf/pdf_js.c101
1 files changed, 101 insertions, 0 deletions
diff --git a/pdf/pdf_js.c b/pdf/pdf_js.c
index e690ad09..d8efe74e 100644
--- a/pdf/pdf_js.c
+++ b/pdf/pdf_js.c
@@ -568,6 +568,106 @@ static pdf_jsimp_obj *doc_print(void *jsctx, void *obj, int argc, pdf_jsimp_obj
return NULL;
}
+static pdf_jsimp_obj *doc_mailDoc(void *jsctx, void *obj, int argc, pdf_jsimp_obj *args[])
+{
+ pdf_js *js = (pdf_js *)jsctx;
+ fz_context *ctx = js->doc->ctx;
+ pdf_jsimp_obj *bUI_obj = NULL;
+ pdf_jsimp_obj *cTo_obj = NULL;
+ pdf_jsimp_obj *cCc_obj = NULL;
+ pdf_jsimp_obj *cBcc_obj = NULL;
+ pdf_jsimp_obj *cSubject_obj = NULL;
+ pdf_jsimp_obj *cMessage_obj = NULL;
+ fz_mail_doc_event event;
+ int arg_is_obj = 0;
+
+ if (argc < 1 || argc > 6)
+ return NULL;
+
+ event.ask_user = 1;
+ event.to = "";
+ event.cc = "";
+ event.bcc = "";
+ event.subject = "";
+ event.message = "";
+
+ fz_var(bUI_obj);
+ fz_var(cTo_obj);
+ fz_var(cCc_obj);
+ fz_var(cBcc_obj);
+ fz_var(cSubject_obj);
+ fz_var(cMessage_obj);
+ fz_try(ctx)
+ {
+ arg_is_obj = (argc == 1 && pdf_jsimp_to_type(js->imp, args[0]) != JS_TYPE_BOOLEAN);
+ if (arg_is_obj)
+ {
+ bUI_obj = pdf_jsimp_property(js->imp, args[0], "bUI");
+ cTo_obj = pdf_jsimp_property(js->imp, args[0], "cTo");
+ cCc_obj = pdf_jsimp_property(js->imp, args[0], "cCc");
+ cBcc_obj = pdf_jsimp_property(js->imp, args[0], "cBcc");
+ cSubject_obj = pdf_jsimp_property(js->imp, args[0], "cSubject");
+ cMessage_obj = pdf_jsimp_property(js->imp, args[0], "cMessage");
+ }
+ else
+ {
+ switch (argc)
+ {
+ case 6:
+ cMessage_obj = args[5];
+ case 5:
+ cSubject_obj = args[4];
+ case 4:
+ cBcc_obj = args[3];
+ case 3:
+ cCc_obj = args[2];
+ case 2:
+ cTo_obj = args[1];
+ case 1:
+ bUI_obj = args[0];
+ }
+ }
+
+ if (bUI_obj)
+ event.ask_user = (int)pdf_jsimp_to_number(js->imp, bUI_obj);
+
+ if (cTo_obj)
+ event.to = pdf_jsimp_to_string(js->imp, cTo_obj);
+
+ if (cCc_obj)
+ event.cc = pdf_jsimp_to_string(js->imp, cCc_obj);
+
+ if (cBcc_obj)
+ event.bcc = pdf_jsimp_to_string(js->imp, cBcc_obj);
+
+ if (cSubject_obj)
+ event.subject = pdf_jsimp_to_string(js->imp, cSubject_obj);
+
+ if (cMessage_obj)
+ event.message = pdf_jsimp_to_string(js->imp, cMessage_obj);
+
+ pdf_event_issue_mail_doc(js->doc, &event);
+ }
+ fz_always(ctx)
+ {
+ if (arg_is_obj)
+ {
+ pdf_jsimp_drop_obj(js->imp, bUI_obj);
+ pdf_jsimp_drop_obj(js->imp, cTo_obj);
+ pdf_jsimp_drop_obj(js->imp, cCc_obj);
+ pdf_jsimp_drop_obj(js->imp, cBcc_obj);
+ pdf_jsimp_drop_obj(js->imp, cSubject_obj);
+ pdf_jsimp_drop_obj(js->imp, cMessage_obj);
+ }
+ }
+ fz_catch(ctx)
+ {
+ fz_rethrow(ctx);
+ }
+
+ return NULL;
+}
+
static void declare_dom(pdf_js *js)
{
pdf_jsimp *imp = js->imp;
@@ -577,6 +677,7 @@ static void declare_dom(pdf_js *js)
pdf_jsimp_addmethod(imp, js->doctype, "getField", doc_getField);
pdf_jsimp_addmethod(imp, js->doctype, "resetForm", doc_resetForm);
pdf_jsimp_addmethod(imp, js->doctype, "print", doc_print);
+ pdf_jsimp_addmethod(imp, js->doctype, "mailDoc", doc_mailDoc);
pdf_jsimp_addproperty(imp, js->doctype, "event", doc_getEvent, doc_setEvent);
pdf_jsimp_addproperty(imp, js->doctype, "app", doc_getApp, doc_setApp);