Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
cjs_document.h
Go to the documentation of this file.
1// Copyright 2017 The PDFium Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7#ifndef FXJS_CJS_DOCUMENT_H_
8#define FXJS_CJS_DOCUMENT_H_
9
10#include <list>
11#include <memory>
12
13#include "core/fxcrt/observed_ptr.h"
14#include "core/fxcrt/span.h"
15#include "fxjs/cjs_object.h"
16#include "fxjs/js_define.h"
17
18class CPDFSDK_InteractiveForm;
20struct CJS_DelayData;
21
22class CJS_Document final : public CJS_Object, public Observable {
23 public:
24 static uint32_t GetObjDefnID();
25 static void DefineJSObjects(CFXJS_Engine* pEngine);
26
27 CJS_Document(v8::Local<v8::Object> pObject, CJS_Runtime* pRuntime);
28 ~CJS_Document() override;
29
30 void SetFormFillEnv(CPDFSDK_FormFillEnvironment* pFormFillEnv);
31 CPDFSDK_FormFillEnvironment* GetFormFillEnv() const {
32 return m_pFormFillEnv.Get();
33 }
34 void AddDelayData(std::unique_ptr<CJS_DelayData> pData);
35 void DoFieldDelay(const WideString& sFieldName, int nControlIndex);
36
37 JS_STATIC_PROP(ADBE, ADBE, CJS_Document)
38 JS_STATIC_PROP(author, author, CJS_Document)
39 JS_STATIC_PROP(baseURL, base_URL, CJS_Document)
40 JS_STATIC_PROP(bookmarkRoot, bookmark_root, CJS_Document)
41 JS_STATIC_PROP(calculate, calculate, CJS_Document)
42 JS_STATIC_PROP(Collab, collab, CJS_Document)
43 JS_STATIC_PROP(creationDate, creation_date, CJS_Document)
44 JS_STATIC_PROP(creator, creator, CJS_Document)
45 JS_STATIC_PROP(delay, delay, CJS_Document)
46 JS_STATIC_PROP(dirty, dirty, CJS_Document)
47 JS_STATIC_PROP(documentFileName, document_file_name, CJS_Document)
48 JS_STATIC_PROP(external, external, CJS_Document)
49 JS_STATIC_PROP(filesize, filesize, CJS_Document)
50 JS_STATIC_PROP(icons, icons, CJS_Document)
51 JS_STATIC_PROP(info, info, CJS_Document)
52 JS_STATIC_PROP(keywords, keywords, CJS_Document)
53 JS_STATIC_PROP(layout, layout, CJS_Document)
54 JS_STATIC_PROP(media, media, CJS_Document)
55 JS_STATIC_PROP(modDate, mod_date, CJS_Document)
56 JS_STATIC_PROP(mouseX, mouse_x, CJS_Document)
57 JS_STATIC_PROP(mouseY, mouse_y, CJS_Document)
58 JS_STATIC_PROP(numFields, num_fields, CJS_Document)
59 JS_STATIC_PROP(numPages, num_pages, CJS_Document)
60 JS_STATIC_PROP(pageNum, page_num, CJS_Document)
61 JS_STATIC_PROP(pageWindowRect, page_window_rect, CJS_Document)
62 JS_STATIC_PROP(path, path, CJS_Document)
63 JS_STATIC_PROP(producer, producer, CJS_Document)
64 JS_STATIC_PROP(subject, subject, CJS_Document)
65 JS_STATIC_PROP(title, title, CJS_Document)
66 JS_STATIC_PROP(URL, URL, CJS_Document)
67 JS_STATIC_PROP(zoom, zoom, CJS_Document)
68 JS_STATIC_PROP(zoomType, zoom_type, CJS_Document)
69
70 JS_STATIC_METHOD(addAnnot, CJS_Document)
71 JS_STATIC_METHOD(addField, CJS_Document)
72 JS_STATIC_METHOD(addLink, CJS_Document)
73 JS_STATIC_METHOD(addIcon, CJS_Document)
74 JS_STATIC_METHOD(calculateNow, CJS_Document)
75 JS_STATIC_METHOD(closeDoc, CJS_Document)
76 JS_STATIC_METHOD(createDataObject, CJS_Document)
77 JS_STATIC_METHOD(deletePages, CJS_Document)
78 JS_STATIC_METHOD(exportAsText, CJS_Document)
79 JS_STATIC_METHOD(exportAsFDF, CJS_Document)
80 JS_STATIC_METHOD(exportAsXFDF, CJS_Document)
81 JS_STATIC_METHOD(extractPages, CJS_Document)
82 JS_STATIC_METHOD(getAnnot, CJS_Document)
83 JS_STATIC_METHOD(getAnnots, CJS_Document)
84 JS_STATIC_METHOD(getAnnot3D, CJS_Document)
85 JS_STATIC_METHOD(getAnnots3D, CJS_Document)
86 JS_STATIC_METHOD(getField, CJS_Document)
87 JS_STATIC_METHOD(getIcon, CJS_Document)
88 JS_STATIC_METHOD(getLinks, CJS_Document)
89 JS_STATIC_METHOD(getNthFieldName, CJS_Document)
90 JS_STATIC_METHOD(getOCGs, CJS_Document)
91 JS_STATIC_METHOD(getPageBox, CJS_Document)
92 JS_STATIC_METHOD(getPageNthWord, CJS_Document)
93 JS_STATIC_METHOD(getPageNthWordQuads, CJS_Document)
94 JS_STATIC_METHOD(getPageNumWords, CJS_Document)
95 JS_STATIC_METHOD(getPrintParams, CJS_Document)
96 JS_STATIC_METHOD(getURL, CJS_Document)
97 JS_STATIC_METHOD(gotoNamedDest, CJS_Document)
98 JS_STATIC_METHOD(importAnFDF, CJS_Document)
99 JS_STATIC_METHOD(importAnXFDF, CJS_Document)
100 JS_STATIC_METHOD(importTextData, CJS_Document)
101 JS_STATIC_METHOD(insertPages, CJS_Document)
102 JS_STATIC_METHOD(mailDoc, CJS_Document)
103 JS_STATIC_METHOD(mailForm, CJS_Document)
104 JS_STATIC_METHOD(print, CJS_Document)
105 JS_STATIC_METHOD(removeField, CJS_Document)
106 JS_STATIC_METHOD(replacePages, CJS_Document)
107 JS_STATIC_METHOD(removeIcon, CJS_Document)
108 JS_STATIC_METHOD(resetForm, CJS_Document)
109 JS_STATIC_METHOD(saveAs, CJS_Document)
110 JS_STATIC_METHOD(submitForm, CJS_Document)
111 JS_STATIC_METHOD(syncAnnotScan, CJS_Document)
112
113 private:
114 static uint32_t ObjDefnID;
115 static const char kName[];
116 static const JSPropertySpec PropertySpecs[];
117 static const JSMethodSpec MethodSpecs[];
118
119 CJS_Result get_ADBE(CJS_Runtime* pRuntime);
120 CJS_Result set_ADBE(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
121
122 CJS_Result get_author(CJS_Runtime* pRuntime);
123 CJS_Result set_author(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
124
125 CJS_Result get_base_URL(CJS_Runtime* pRuntime);
126 CJS_Result set_base_URL(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
127
128 CJS_Result get_bookmark_root(CJS_Runtime* pRuntime);
129 CJS_Result set_bookmark_root(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
130
131 CJS_Result get_calculate(CJS_Runtime* pRuntime);
132 CJS_Result set_calculate(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
133
134 CJS_Result get_collab(CJS_Runtime* pRuntime);
135 CJS_Result set_collab(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
136
137 CJS_Result get_creation_date(CJS_Runtime* pRuntime);
138 CJS_Result set_creation_date(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
139
140 CJS_Result get_creator(CJS_Runtime* pRuntime);
141 CJS_Result set_creator(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
142
143 CJS_Result get_delay(CJS_Runtime* pRuntime);
144 CJS_Result set_delay(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
145
146 CJS_Result get_dirty(CJS_Runtime* pRuntime);
147 CJS_Result set_dirty(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
148
149 CJS_Result get_document_file_name(CJS_Runtime* pRuntime);
150 CJS_Result set_document_file_name(CJS_Runtime* pRuntime,
151 v8::Local<v8::Value> vp);
152
153 CJS_Result get_external(CJS_Runtime* pRuntime);
154 CJS_Result set_external(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
155
156 CJS_Result get_filesize(CJS_Runtime* pRuntime);
157 CJS_Result set_filesize(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
158
159 CJS_Result get_icons(CJS_Runtime* pRuntime);
160 CJS_Result set_icons(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
161
162 CJS_Result get_info(CJS_Runtime* pRuntime);
163 CJS_Result set_info(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
164
165 CJS_Result get_keywords(CJS_Runtime* pRuntime);
166 CJS_Result set_keywords(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
167
168 CJS_Result get_layout(CJS_Runtime* pRuntime);
169 CJS_Result set_layout(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
170
171 CJS_Result get_media(CJS_Runtime* pRuntime);
172 CJS_Result set_media(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
173
174 CJS_Result get_mod_date(CJS_Runtime* pRuntime);
175 CJS_Result set_mod_date(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
176
177 CJS_Result get_mouse_x(CJS_Runtime* pRuntime);
178 CJS_Result set_mouse_x(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
179
180 CJS_Result get_mouse_y(CJS_Runtime* pRuntime);
181 CJS_Result set_mouse_y(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
182
183 CJS_Result get_num_fields(CJS_Runtime* pRuntime);
184 CJS_Result set_num_fields(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
185
186 CJS_Result get_num_pages(CJS_Runtime* pRuntime);
187 CJS_Result set_num_pages(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
188
189 CJS_Result get_page_num(CJS_Runtime* pRuntime);
190 CJS_Result set_page_num(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
191
192 CJS_Result get_page_window_rect(CJS_Runtime* pRuntime);
193 CJS_Result set_page_window_rect(CJS_Runtime* pRuntime,
194 v8::Local<v8::Value> vp);
195
196 CJS_Result get_path(CJS_Runtime* pRuntime);
197 CJS_Result set_path(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
198
199 CJS_Result get_producer(CJS_Runtime* pRuntime);
200 CJS_Result set_producer(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
201
202 CJS_Result get_subject(CJS_Runtime* pRuntime);
203 CJS_Result set_subject(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
204
205 CJS_Result get_title(CJS_Runtime* pRuntime);
206 CJS_Result set_title(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
207
208 CJS_Result get_zoom(CJS_Runtime* pRuntime);
209 CJS_Result set_zoom(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
210
211 CJS_Result get_zoom_type(CJS_Runtime* pRuntime);
212 CJS_Result set_zoom_type(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
213
214 CJS_Result get_URL(CJS_Runtime* pRuntime);
215 CJS_Result set_URL(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
216
217 CJS_Result addAnnot(CJS_Runtime* pRuntime,
218 pdfium::span<v8::Local<v8::Value>> params);
219 CJS_Result addField(CJS_Runtime* pRuntime,
220 pdfium::span<v8::Local<v8::Value>> params);
221 CJS_Result addLink(CJS_Runtime* pRuntime,
222 pdfium::span<v8::Local<v8::Value>> params);
223 CJS_Result addIcon(CJS_Runtime* pRuntime,
224 pdfium::span<v8::Local<v8::Value>> params);
225 CJS_Result calculateNow(CJS_Runtime* pRuntime,
226 pdfium::span<v8::Local<v8::Value>> params);
227 CJS_Result closeDoc(CJS_Runtime* pRuntime,
228 pdfium::span<v8::Local<v8::Value>> params);
229 CJS_Result createDataObject(CJS_Runtime* pRuntime,
230 pdfium::span<v8::Local<v8::Value>> params);
231 CJS_Result deletePages(CJS_Runtime* pRuntime,
232 pdfium::span<v8::Local<v8::Value>> params);
233 CJS_Result exportAsText(CJS_Runtime* pRuntime,
234 pdfium::span<v8::Local<v8::Value>> params);
235 CJS_Result exportAsFDF(CJS_Runtime* pRuntime,
236 pdfium::span<v8::Local<v8::Value>> params);
237 CJS_Result exportAsXFDF(CJS_Runtime* pRuntime,
238 pdfium::span<v8::Local<v8::Value>> params);
239 CJS_Result extractPages(CJS_Runtime* pRuntime,
240 pdfium::span<v8::Local<v8::Value>> params);
241 CJS_Result getAnnot(CJS_Runtime* pRuntime,
242 pdfium::span<v8::Local<v8::Value>> params);
243 CJS_Result getAnnots(CJS_Runtime* pRuntime,
244 pdfium::span<v8::Local<v8::Value>> params);
245 CJS_Result getAnnot3D(CJS_Runtime* pRuntime,
246 pdfium::span<v8::Local<v8::Value>> params);
247 CJS_Result getAnnots3D(CJS_Runtime* pRuntime,
248 pdfium::span<v8::Local<v8::Value>> params);
249 CJS_Result getField(CJS_Runtime* pRuntime,
250 pdfium::span<v8::Local<v8::Value>> params);
251 CJS_Result getIcon(CJS_Runtime* pRuntime,
252 pdfium::span<v8::Local<v8::Value>> params);
253 CJS_Result getLinks(CJS_Runtime* pRuntime,
254 pdfium::span<v8::Local<v8::Value>> params);
255 CJS_Result getNthFieldName(CJS_Runtime* pRuntime,
256 pdfium::span<v8::Local<v8::Value>> params);
257 CJS_Result getOCGs(CJS_Runtime* pRuntime,
258 pdfium::span<v8::Local<v8::Value>> params);
259 CJS_Result getPageBox(CJS_Runtime* pRuntime,
260 pdfium::span<v8::Local<v8::Value>> params);
261 CJS_Result getPageNthWord(CJS_Runtime* pRuntime,
262 pdfium::span<v8::Local<v8::Value>> params);
263 CJS_Result getPageNthWordQuads(CJS_Runtime* pRuntime,
264 pdfium::span<v8::Local<v8::Value>> params);
265 CJS_Result getPageNumWords(CJS_Runtime* pRuntime,
266 pdfium::span<v8::Local<v8::Value>> params);
267 CJS_Result getPrintParams(CJS_Runtime* pRuntime,
268 pdfium::span<v8::Local<v8::Value>> params);
269 CJS_Result getURL(CJS_Runtime* pRuntime,
270 pdfium::span<v8::Local<v8::Value>> params);
271 CJS_Result gotoNamedDest(CJS_Runtime* pRuntime,
272 pdfium::span<v8::Local<v8::Value>> params);
273 CJS_Result importAnFDF(CJS_Runtime* pRuntime,
274 pdfium::span<v8::Local<v8::Value>> params);
275 CJS_Result importAnXFDF(CJS_Runtime* pRuntime,
276 pdfium::span<v8::Local<v8::Value>> params);
277 CJS_Result importTextData(CJS_Runtime* pRuntime,
278 pdfium::span<v8::Local<v8::Value>> params);
279 CJS_Result insertPages(CJS_Runtime* pRuntime,
280 pdfium::span<v8::Local<v8::Value>> params);
281 CJS_Result mailForm(CJS_Runtime* pRuntime,
282 pdfium::span<v8::Local<v8::Value>> params);
283 CJS_Result print(CJS_Runtime* pRuntime,
284 pdfium::span<v8::Local<v8::Value>> params);
285 CJS_Result removeField(CJS_Runtime* pRuntime,
286 pdfium::span<v8::Local<v8::Value>> params);
287 CJS_Result replacePages(CJS_Runtime* pRuntime,
288 pdfium::span<v8::Local<v8::Value>> params);
289 CJS_Result resetForm(CJS_Runtime* pRuntime,
290 pdfium::span<v8::Local<v8::Value>> params);
291 CJS_Result saveAs(CJS_Runtime* pRuntime,
292 pdfium::span<v8::Local<v8::Value>> params);
293 CJS_Result submitForm(CJS_Runtime* pRuntime,
294 pdfium::span<v8::Local<v8::Value>> params);
295 CJS_Result syncAnnotScan(CJS_Runtime* pRuntime,
296 pdfium::span<v8::Local<v8::Value>> params);
297 CJS_Result mailDoc(CJS_Runtime* pRuntime,
298 pdfium::span<v8::Local<v8::Value>> params);
299 CJS_Result removeIcon(CJS_Runtime* pRuntime,
300 pdfium::span<v8::Local<v8::Value>> params);
301
302 CJS_Result getPropertyInternal(CJS_Runtime* pRuntime,
303 const ByteString& propName);
304
305 CPDF_InteractiveForm* GetCoreInteractiveForm();
306 CPDFSDK_InteractiveForm* GetSDKInteractiveForm();
307
308 WideString m_cwBaseURL;
309 ObservedPtr<CPDFSDK_FormFillEnvironment> m_pFormFillEnv;
310 std::list<std::unique_ptr<CJS_DelayData>> m_DelayData;
311 // Needs to be a std::list for iterator stability.
312 std::list<WideString> m_IconNames;
313 bool m_bDelay = false;
314};
315
316#endif // FXJS_CJS_DOCUMENT_H_
fxcrt::ByteString ByteString
Definition bytestring.h:180
@ FXJSOBJTYPE_STATIC
static void DefineJSObjects(CFXJS_Engine *pEngine)
Definition cjs_app.cpp:87
static WideString SysPathToPDFPath(const WideString &sOldPath)
Definition cjs_app.cpp:501
void CancelProc(GlobalTimer *pTimer)
Definition cjs_app.cpp:399
static uint32_t GetObjDefnID()
Definition cjs_app.cpp:82
~CJS_App() override
void TimerProc(GlobalTimer *pTimer)
Definition cjs_app.cpp:393
CJS_App(v8::Local< v8::Object > pObject, CJS_Runtime *pRuntime)
Definition cjs_app.cpp:94
void DoFieldDelay(const WideString &sFieldName, int nControlIndex)
CJS_Document(v8::Local< v8::Object > pObject, CJS_Runtime *pRuntime)
void SetFormFillEnv(CPDFSDK_FormFillEnvironment *pFormFillEnv)
~CJS_Document() override
void AddDelayData(std::unique_ptr< CJS_DelayData > pData)
static uint32_t GetObjDefnID()
CPDFSDK_FormFillEnvironment * GetFormFillEnv() const
static void DefineJSObjects(CFXJS_Engine *pEngine)
static CJS_Result Success()
Definition cjs_result.h:28
static CJS_Result Failure(JSMessage id)
Definition cjs_result.h:35
void BeginBlock()
Definition cjs_runtime.h:47
void EndBlock()
Definition cjs_runtime.h:48
bool IsBlocking() const
Definition cjs_runtime.h:49
CPDFSDK_FormFillEnvironment * GetFormFillEnv() const override
CPDFSDK_InteractiveForm * GetInteractiveForm()
CPDF_Document::Extension * GetDocExtension() const
bool KillFocusAnnot(Mask< FWL_EVENTFLAG > nFlags)
virtual bool ContainsExtensionForm() const =0
uint32_t GetTimeOut() const
CJS_Runtime * GetRuntime() const
WideString GetJScript() const
bool IsOneShot() const
static void Cancel(int32_t nTimerID)
virtual std::optional< IJS_Runtime::JS_Error > RunScript(const WideString &script)=0
virtual void OnExternal_Exec()=0
IJS_EventContext * operator->() const
Definition ijs_runtime.h:42
WideString & operator=(WideString &&that) noexcept
WideString & operator+=(const wchar_t *str)
static WideString FromASCII(ByteStringView str)
WideString & operator=(const wchar_t *str)
#define JSPLATFORM_BEEP_DEFAULT
#define JSPLATFORM_ALERT_BUTTON_DEFAULT
#define JSPLATFORM_ALERT_ICON_DEFAULT
#define JS_STATIC_METHOD(method_name, class_name)
Definition js_define.h:159
#define JS_STATIC_PROP(err_name, prop_name, class_name)
Definition js_define.h:145
JSMessage
@ kParamTooLongError
@ kNotSupportedError
@ kInvalidInputError
WideString JSGetStringFromID(JSMessage msg)
fxcrt::WideString WideString
Definition widestring.h:207