Document.cpp revision 4d3acf4ec42bf6e838f9060103aff98fbf170794
14d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved. 24d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 34d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// found in the LICENSE file. 44d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 54d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 64d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 74d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/Document.h" 84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <utility> 104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <vector> 114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfapi/font/cpdf_font.h" 134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfapi/page/cpdf_page.h" 144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfapi/parser/cpdf_array.h" 154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfapi/parser/cpdf_document.h" 164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfapi/parser/cpdf_string.h" 174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfapi/parser/fpdf_parser_decode.h" 184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfdoc/cpdf_interform.h" 194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfdoc/cpdf_nametree.h" 204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/cpdfsdk_annotiteration.h" 214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/cpdfsdk_formfillenvironment.h" 224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/cpdfsdk_interform.h" 234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/cpdfsdk_pageview.h" 244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/cpdfsdk_widget.h" 254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/Annot.h" 264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/Field.h" 274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/Icon.h" 284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/JS_Define.h" 294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/JS_EventHandler.h" 304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/JS_Object.h" 314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/JS_Value.h" 324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/app.h" 334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/cjs_context.h" 344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/cjs_runtime.h" 354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/resource.h" 364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "third_party/base/numerics/safe_math.h" 374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "third_party/base/ptr_util.h" 384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannBEGIN_JS_STATIC_CONST(CJS_PrintParamsObj) 404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannEND_JS_STATIC_CONST() 414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannBEGIN_JS_STATIC_PROP(CJS_PrintParamsObj) 434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannEND_JS_STATIC_PROP() 444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannBEGIN_JS_STATIC_METHOD(CJS_PrintParamsObj) 464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannEND_JS_STATIC_METHOD() 474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannIMPLEMENT_JS_CLASS(CJS_PrintParamsObj, PrintParamsObj) 494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannPrintParamsObj::PrintParamsObj(CJS_Object* pJSObject) 514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : CJS_EmbedObj(pJSObject) { 524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bUI = true; 534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nStart = 0; 544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nEnd = 0; 554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bSilent = false; 564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bShrinkToFit = false; 574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bPrintAsImage = false; 584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bReverse = false; 594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bAnnotations = true; 604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#define MINWIDTH 5.0f 634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#define MINHEIGHT 5.0f 644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannBEGIN_JS_STATIC_CONST(CJS_Document) 664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannEND_JS_STATIC_CONST() 674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannBEGIN_JS_STATIC_PROP(CJS_Document) 694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(ADBE) 704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(author) 714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(baseURL) 724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(bookmarkRoot) 734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(calculate) 744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(Collab) 754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(creationDate) 764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(creator) 774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(delay) 784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(dirty) 794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(documentFileName) 804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(external) 814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(filesize) 824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(icons) 834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(info) 844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(keywords) 854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(layout) 864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(media) 874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(modDate) 884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(mouseX) 894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(mouseY) 904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(numFields) 914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(numPages) 924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(pageNum) 934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(pageWindowRect) 944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(path) 954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(producer) 964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(subject) 974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(title) 984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(URL) 994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(zoom) 1004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_PROP_ENTRY(zoomType) 1014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannEND_JS_STATIC_PROP() 1024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannBEGIN_JS_STATIC_METHOD(CJS_Document) 1044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(addAnnot) 1054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(addField) 1064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(addLink) 1074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(addIcon) 1084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(calculateNow) 1094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(closeDoc) 1104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(createDataObject) 1114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(deletePages) 1124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(exportAsText) 1134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(exportAsFDF) 1144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(exportAsXFDF) 1154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(extractPages) 1164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(getAnnot) 1174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(getAnnots) 1184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(getAnnot3D) 1194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(getAnnots3D) 1204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(getField) 1214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(getIcon) 1224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(getLinks) 1234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(getNthFieldName) 1244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(getOCGs) 1254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(getPageBox) 1264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(getPageNthWord) 1274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(getPageNthWordQuads) 1284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(getPageNumWords) 1294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(getPrintParams) 1304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(getURL) 1314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(gotoNamedDest) 1324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(importAnFDF) 1334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(importAnXFDF) 1344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(importTextData) 1354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(insertPages) 1364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(mailForm) 1374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(print) 1384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(removeField) 1394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(replacePages) 1404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(resetForm) 1414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(removeIcon) 1424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(saveAs) 1434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(submitForm) 1444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(syncAnnotScan) 1454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannJS_STATIC_METHOD_ENTRY(mailDoc) 1464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannEND_JS_STATIC_METHOD() 1474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannIMPLEMENT_JS_CLASS(CJS_Document, Document) 1494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CJS_Document::InitInstance(IJS_Runtime* pIRuntime) { 1514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Runtime* pRuntime = static_cast<CJS_Runtime*>(pIRuntime); 1524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Document* pDoc = static_cast<Document*>(GetEmbedObject()); 1534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDoc->SetFormFillEnv(pRuntime->GetFormFillEnv()); 1544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannDocument::Document(CJS_Object* pJSObject) 1574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : CJS_EmbedObj(pJSObject), 1584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv(nullptr), 1594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_cwBaseURL(L""), 1604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_bDelay(false) {} 1614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannDocument::~Document() { 1634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// the total number of fileds in document. 1664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::numFields(IJS_Context* cc, 1674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 1684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 1694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsSetting()) { 1704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSREADONLY); 1714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 1724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 1744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 1754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 1764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); 1784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); 1794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << static_cast<int>(pPDFForm->CountFields(CFX_WideString())); 1804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 1814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::dirty(IJS_Context* cc, 1844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 1854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 1864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 1874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 1884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 1894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsGetting()) { 1914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << !!m_pFormFillEnv->GetChangeMark(); 1924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 1934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bChanged = false; 1944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp >> bChanged; 1954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bChanged) 1974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->SetChangeMark(); 1984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann else 1994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->ClearChangeMark(); 2004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 2024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::ADBE(IJS_Context* cc, 2054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 2064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 2074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsGetting()) 2084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp.GetJSValue()->SetNull(CJS_Runtime::FromContext(cc)); 2094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 2114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::pageNum(IJS_Context* cc, 2144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 2154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 2164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 2174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 2184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 2194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsGetting()) { 2214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (CPDFSDK_PageView* pPageView = m_pFormFillEnv->GetCurrentView()) { 2224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << pPageView->GetPageIndex(); 2234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 2254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int iPageCount = m_pFormFillEnv->GetPageCount(); 2264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int iPageNum = 0; 2274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp >> iPageNum; 2284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iPageNum >= 0 && iPageNum < iPageCount) { 2304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->JS_docgotoPage(iPageNum); 2314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (iPageNum >= iPageCount) { 2324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->JS_docgotoPage(iPageCount - 1); 2334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (iPageNum < 0) { 2344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->JS_docgotoPage(0); 2354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 2394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::addAnnot(IJS_Context* cc, 2424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 2434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 2444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 2454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Not supported. 2464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 2474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::addField(IJS_Context* cc, 2504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 2514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 2524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 2534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Not supported. 2544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 2554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::exportAsText(IJS_Context* cc, 2584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 2594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 2604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 2614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not supported. 2624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 2634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::exportAsFDF(IJS_Context* cc, 2664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 2674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 2684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 2694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not supported. 2704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 2714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::exportAsXFDF(IJS_Context* cc, 2744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 2754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 2764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 2774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not supported. 2784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 2794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Maps a field object in PDF document to a JavaScript variable 2824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// comment: 2834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// note: the paremter cName, this is clue how to treat if the cName is not a 2844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// valiable filed name in this document 2854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::getField(IJS_Context* cc, 2874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 2884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 2894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 2904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() < 1) { 2914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); 2924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 2934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 2954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 2964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 2974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Context* pContext = static_cast<CJS_Context*>(cc); 2994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 3004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wideName = params[0].ToCFXWideString(pRuntime); 3014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); 3024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); 3034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pPDFForm->CountFields(wideName) <= 0) { 3044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vRet.SetNull(pRuntime); 3054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 3064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Object> pFieldObj = 3094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->NewFxDynamicObj(CJS_Field::g_nObjDefnID); 3104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Field* pJSField = 3114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CJS_Field*>(pRuntime->GetObjectPrivate(pFieldObj)); 3124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Field* pField = static_cast<Field*>(pJSField->GetEmbedObject()); 3134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pField->AttachField(this, wideName); 3144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vRet = CJS_Value(pRuntime, pJSField); 3164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 3174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Gets the name of the nth field in the document 3204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::getNthFieldName(IJS_Context* cc, 3214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 3224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 3234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 3244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() != 1) { 3254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); 3264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 3274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 3294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 3304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 3314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Context* pContext = static_cast<CJS_Context*>(cc); 3334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 3344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nIndex = params[0].ToInt(pRuntime); 3354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nIndex < 0) { 3364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSVALUEERROR); 3374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 3384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); 3404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); 3414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_FormField* pField = pPDFForm->GetField(nIndex, CFX_WideString()); 3424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pField) 3434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 3444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vRet = CJS_Value(pRuntime, pField->GetFullName().c_str()); 3464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 3474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::importAnFDF(IJS_Context* cc, 3504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 3514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 3524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 3534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not supported. 3544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 3554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::importAnXFDF(IJS_Context* cc, 3584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 3594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 3604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 3614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not supported. 3624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 3634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::importTextData(IJS_Context* cc, 3664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 3674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 3684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 3694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not supported. 3704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 3714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// exports the form data and mails the resulting fdf file as an attachment to 3744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// all recipients. 3754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// comment: need reader supports 3764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::mailForm(IJS_Context* cc, 3774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 3784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 3794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 3804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 3814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 3824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 3834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) { 3854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); 3864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 3874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Context* pContext = static_cast<CJS_Context*>(cc); 3904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 3914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int iLength = params.size(); 3934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bUI = iLength > 0 ? params[0].ToBool(pRuntime) : true; 3944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cTo = iLength > 1 ? params[1].ToCFXWideString(pRuntime) : L""; 3954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cCc = iLength > 2 ? params[2].ToCFXWideString(pRuntime) : L""; 3964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cBcc = iLength > 3 ? params[3].ToCFXWideString(pRuntime) : L""; 3974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cSubject = 3984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iLength > 4 ? params[4].ToCFXWideString(pRuntime) : L""; 3994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cMsg = iLength > 5 ? params[5].ToCFXWideString(pRuntime) : L""; 4004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); 4024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteTextBuf textBuf; 4034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pInterForm->ExportFormToFDFTextBuf(textBuf)) 4044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 4054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->BeginBlock(); 4074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_FormFillEnvironment* pFormFillEnv = pContext->GetFormFillEnv(); 4084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFormFillEnv->JS_docmailForm(textBuf.GetBuffer(), textBuf.GetLength(), bUI, 4094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cTo.c_str(), cSubject.c_str(), cCc.c_str(), 4104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cBcc.c_str(), cMsg.c_str()); 4114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->EndBlock(); 4124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 4134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::print(IJS_Context* cc, 4164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 4174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 4184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 4194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 4204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 4214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 4224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Context* pContext = static_cast<CJS_Context*>(cc); 4254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 4264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bUI = true; 4284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nStart = 0; 4294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nEnd = 0; 4304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSilent = false; 4314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bShrinkToFit = false; 4324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bPrintAsImage = false; 4334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bReverse = false; 4344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bAnnotations = false; 4354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nlength = params.size(); 4374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nlength == 9) { 4384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params[8].GetType() == CJS_Value::VT_object) { 4394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Object> pObj = params[8].ToV8Object(pRuntime); 4404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (CFXJS_Engine::GetObjDefnID(pObj) == 4414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PrintParamsObj::g_nObjDefnID) { 4424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (CJS_Object* pJSObj = params[8].ToCJSObject(pRuntime)) { 4434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (PrintParamsObj* pprintparamsObj = 4444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<PrintParamsObj*>(pJSObj->GetEmbedObject())) { 4454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bUI = pprintparamsObj->bUI; 4464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nStart = pprintparamsObj->nStart; 4474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nEnd = pprintparamsObj->nEnd; 4484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bSilent = pprintparamsObj->bSilent; 4494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bShrinkToFit = pprintparamsObj->bShrinkToFit; 4504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bPrintAsImage = pprintparamsObj->bPrintAsImage; 4514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bReverse = pprintparamsObj->bReverse; 4524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bAnnotations = pprintparamsObj->bAnnotations; 4534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 4584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nlength >= 1) 4594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bUI = params[0].ToBool(pRuntime); 4604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nlength >= 2) 4614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nStart = params[1].ToInt(pRuntime); 4624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nlength >= 3) 4634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nEnd = params[2].ToInt(pRuntime); 4644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nlength >= 4) 4654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bSilent = params[3].ToBool(pRuntime); 4664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nlength >= 5) 4674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bShrinkToFit = params[4].ToBool(pRuntime); 4684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nlength >= 6) 4694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bPrintAsImage = params[5].ToBool(pRuntime); 4704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nlength >= 7) 4714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bReverse = params[6].ToBool(pRuntime); 4724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nlength >= 8) 4734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bAnnotations = params[7].ToBool(pRuntime); 4744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (m_pFormFillEnv) { 4774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->JS_docprint(bUI, nStart, nEnd, bSilent, bShrinkToFit, 4784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bPrintAsImage, bReverse, bAnnotations); 4794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 4804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 4824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// removes the specified field from the document. 4854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// comment: 4864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// note: if the filed name is not rational, adobe is dumb for it. 4874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::removeField(IJS_Context* cc, 4894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 4904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 4914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 4924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() != 1) { 4934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); 4944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 4954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 4974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 4984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 4994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!(m_pFormFillEnv->GetPermissions(FPDFPERM_MODIFY) || 5014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->GetPermissions(FPDFPERM_ANNOT_FORM))) { 5024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); 5034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 5044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Context* pContext = static_cast<CJS_Context*>(cc); 5064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 5074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString sFieldName = params[0].ToCFXWideString(pRuntime); 5084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); 5094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::vector<CPDFSDK_Annot::ObservedPtr> widgets; 5104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pInterForm->GetWidgets(sFieldName, &widgets); 5114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (widgets.empty()) 5124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 5134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (const auto& pAnnot : widgets) { 5154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot.Get()); 5164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidget) 5174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 5184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_FloatRect rcAnnot = pWidget->GetRect(); 5204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann --rcAnnot.left; 5214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann --rcAnnot.bottom; 5224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ++rcAnnot.right; 5234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ++rcAnnot.top; 5244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::vector<CFX_FloatRect> aRefresh(1, rcAnnot); 5264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann UnderlyingPageType* pPage = pWidget->GetUnderlyingPage(); 5274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(pPage); 5284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // If there is currently no pageview associated with the page being used 5304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // do not create one. We may be in the process of tearing down the document 5314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // and creating a new pageview at this point will cause bad things. 5324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_PageView* pPageView = m_pFormFillEnv->GetPageView(pPage, false); 5334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pPageView) { 5344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#if PDF_ENABLE_XFA 5354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pPageView->DeleteAnnot(pWidget); 5364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#endif // PDF_ENABLE_XFA 5374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pPageView->UpdateRects(aRefresh); 5384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->SetChangeMark(); 5414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 5434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 5444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// reset filed values within a document. 5464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// comment: 5474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// note: if the fields names r not rational, aodbe is dumb for it. 5484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::resetForm(IJS_Context* cc, 5504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 5514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 5524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 5534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 5544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 5554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 5564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!(m_pFormFillEnv->GetPermissions(FPDFPERM_MODIFY) || 5584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->GetPermissions(FPDFPERM_ANNOT_FORM) || 5594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->GetPermissions(FPDFPERM_FILL_FORM))) { 5604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); 5614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 5624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); 5654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); 5664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Array aName; 5674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.empty()) { 5694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pPDFForm->ResetForm(true); 5704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->SetChangeMark(); 5714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 5724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Context* pContext = static_cast<CJS_Context*>(cc); 5754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 5764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (params[0].GetType()) { 5784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 5794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann aName.Attach(params[0].ToV8Array(pRuntime)); 5804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 5814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case CJS_Value::VT_string: 5824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann aName.SetElement(pRuntime, 0, params[0]); 5834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 5844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::vector<CPDF_FormField*> aFields; 5874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int i = 0, isz = aName.GetLength(pRuntime); i < isz; ++i) { 5884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value valElement(pRuntime); 5894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann aName.GetElement(pRuntime, i, valElement); 5904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString swVal = valElement.ToCFXWideString(pRuntime); 5914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int j = 0, jsz = pPDFForm->CountFields(swVal); j < jsz; ++j) 5924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann aFields.push_back(pPDFForm->GetField(j, swVal)); 5934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!aFields.empty()) { 5964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pPDFForm->ResetForm(aFields, true, true); 5974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->SetChangeMark(); 5984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 6014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 6024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::saveAs(IJS_Context* cc, 6044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 6054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 6064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 6074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not supported. 6084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 6094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 6104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::syncAnnotScan(IJS_Context* cc, 6124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 6134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 6144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 6154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 6164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 6174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::submitForm(IJS_Context* cc, 6194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 6204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 6214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 6224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nSize = params.size(); 6234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nSize < 1) { 6244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); 6254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 6264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 6284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 6294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 6304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Context* pContext = static_cast<CJS_Context*>(cc); 6324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 6334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Array aFields; 6344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString strURL; 6354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bFDF = true; 6364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bEmpty = false; 6374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value v = params[0]; 6384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (v.GetType() == CJS_Value::VT_string) { 6394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann strURL = params[0].ToCFXWideString(pRuntime); 6404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nSize > 1) 6414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bFDF = params[1].ToBool(pRuntime); 6424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nSize > 2) 6434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bEmpty = params[2].ToBool(pRuntime); 6444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nSize > 3) 6454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann aFields.Attach(params[3].ToV8Array(pRuntime)); 6464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (v.GetType() == CJS_Value::VT_object) { 6474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Object> pObj = params[0].ToV8Object(pRuntime); 6484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Value> pValue = pRuntime->GetObjectProperty(pObj, L"cURL"); 6494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pValue.IsEmpty()) 6504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann strURL = CJS_Value(pRuntime, pValue).ToCFXWideString(pRuntime); 6514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue = pRuntime->GetObjectProperty(pObj, L"bFDF"); 6534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bFDF = CJS_Value(pRuntime, pValue).ToBool(pRuntime); 6544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue = pRuntime->GetObjectProperty(pObj, L"bEmpty"); 6564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bEmpty = CJS_Value(pRuntime, pValue).ToBool(pRuntime); 6574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue = pRuntime->GetObjectProperty(pObj, L"aFields"); 6594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann aFields.Attach(CJS_Value(pRuntime, pValue).ToV8Array(pRuntime)); 6604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); 6634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm(); 6644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (aFields.GetLength(pRuntime) == 0 && bEmpty) { 6654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pPDFInterForm->CheckRequiredFields(nullptr, true)) { 6664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->BeginBlock(); 6674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pInterForm->SubmitForm(strURL, false); 6684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->EndBlock(); 6694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 6714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::vector<CPDF_FormField*> fieldObjects; 6744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int i = 0, sz = aFields.GetLength(pRuntime); i < sz; ++i) { 6754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value valName(pRuntime); 6764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann aFields.GetElement(pRuntime, i, valName); 6774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString sName = valName.ToCFXWideString(pRuntime); 6794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); 6804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int j = 0, jsz = pPDFForm->CountFields(sName); j < jsz; ++j) { 6814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_FormField* pField = pPDFForm->GetField(j, sName); 6824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!bEmpty && pField->GetValue().IsEmpty()) 6834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 6844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann fieldObjects.push_back(pField); 6864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pPDFInterForm->CheckRequiredFields(&fieldObjects, true)) { 6904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->BeginBlock(); 6914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pInterForm->SubmitFields(strURL, fieldObjects, true, !bFDF); 6924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->EndBlock(); 6934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 6954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 6964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid Document::SetFormFillEnv(CPDFSDK_FormFillEnvironment* pFormFillEnv) { 6984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv.Reset(pFormFillEnv); 6994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 7004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::bookmarkRoot(IJS_Context* cc, 7024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 7034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 7044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 7054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 7064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::mailDoc(IJS_Context* cc, 7084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 7094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 7104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 7114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Context* pContext = static_cast<CJS_Context*>(cc); 7124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // TODO(tsepez): Check maximum number of allowed params. 7144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bUI = true; 7164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cTo = L""; 7174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cCc = L""; 7184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cBcc = L""; 7194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cSubject = L""; 7204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cMsg = L""; 7214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 7234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() >= 1) 7254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bUI = params[0].ToBool(pRuntime); 7264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() >= 2) 7274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cTo = params[1].ToCFXWideString(pRuntime); 7284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() >= 3) 7294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cCc = params[2].ToCFXWideString(pRuntime); 7304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() >= 4) 7314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cBcc = params[3].ToCFXWideString(pRuntime); 7324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() >= 5) 7334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cSubject = params[4].ToCFXWideString(pRuntime); 7344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() >= 6) 7354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cMsg = params[5].ToCFXWideString(pRuntime); 7364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() >= 1 && params[0].GetType() == CJS_Value::VT_object) { 7384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Object> pObj = params[0].ToV8Object(pRuntime); 7394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Value> pValue = pRuntime->GetObjectProperty(pObj, L"bUI"); 7414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bUI = CJS_Value(pRuntime, pValue).ToBool(pRuntime); 7424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue = pRuntime->GetObjectProperty(pObj, L"cTo"); 7444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cTo = CJS_Value(pRuntime, pValue).ToCFXWideString(pRuntime); 7454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue = pRuntime->GetObjectProperty(pObj, L"cCc"); 7474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cCc = CJS_Value(pRuntime, pValue).ToCFXWideString(pRuntime); 7484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue = pRuntime->GetObjectProperty(pObj, L"cBcc"); 7504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cBcc = CJS_Value(pRuntime, pValue).ToCFXWideString(pRuntime); 7514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue = pRuntime->GetObjectProperty(pObj, L"cSubject"); 7534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cSubject = CJS_Value(pRuntime, pValue).ToCFXWideString(pRuntime); 7544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue = pRuntime->GetObjectProperty(pObj, L"cMsg"); 7564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cMsg = CJS_Value(pRuntime, pValue).ToCFXWideString(pRuntime); 7574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 7584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->BeginBlock(); 7604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_FormFillEnvironment* pFormFillEnv = pRuntime->GetFormFillEnv(); 7614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFormFillEnv->JS_docmailForm(nullptr, 0, bUI, cTo.c_str(), cSubject.c_str(), 7624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cCc.c_str(), cBcc.c_str(), cMsg.c_str()); 7634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->EndBlock(); 7644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 7664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 7674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::author(IJS_Context* cc, 7694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 7704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 7714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return getPropertyInternal(cc, vp, "Author", sError); 7724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 7734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::info(IJS_Context* cc, 7754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 7764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 7774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsSetting()) { 7784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSREADONLY); 7794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 7804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 7814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 7824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 7834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 7844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 7854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Dictionary* pDictionary = m_pFormFillEnv->GetPDFDocument()->GetInfo(); 7864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pDictionary) 7874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 7884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cwAuthor = pDictionary->GetUnicodeTextFor("Author"); 7904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cwTitle = pDictionary->GetUnicodeTextFor("Title"); 7914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cwSubject = pDictionary->GetUnicodeTextFor("Subject"); 7924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cwKeywords = pDictionary->GetUnicodeTextFor("Keywords"); 7934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cwCreator = pDictionary->GetUnicodeTextFor("Creator"); 7944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cwProducer = pDictionary->GetUnicodeTextFor("Producer"); 7954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cwCreationDate = 7964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDictionary->GetUnicodeTextFor("CreationDate"); 7974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cwModDate = pDictionary->GetUnicodeTextFor("ModDate"); 7984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cwTrapped = pDictionary->GetUnicodeTextFor("Trapped"); 7994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Context* pContext = (CJS_Context*)cc; 8014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 8024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Object> pObj = pRuntime->NewFxDynamicObj(-1); 8044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"Author", pRuntime->NewString(cwAuthor)); 8054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"Title", pRuntime->NewString(cwTitle)); 8064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"Subject", pRuntime->NewString(cwSubject)); 8074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"Keywords", 8084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->NewString(cwKeywords)); 8094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"Creator", pRuntime->NewString(cwCreator)); 8104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"Producer", 8114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->NewString(cwProducer)); 8124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"CreationDate", 8134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->NewString(cwCreationDate)); 8144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"ModDate", pRuntime->NewString(cwModDate)); 8154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"Trapped", pRuntime->NewString(cwTrapped)); 8164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // It's to be compatible to non-standard info dictionary. 8184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (const auto& it : *pDictionary) { 8194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_ByteString& bsKey = it.first; 8204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Object* pValueObj = it.second.get(); 8214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsKey = CFX_WideString::FromUTF8(bsKey.AsStringC()); 8224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pValueObj->IsString() || pValueObj->IsName()) { 8234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->PutObjectProperty( 8244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pObj, wsKey, pRuntime->NewString(pValueObj->GetUnicodeText())); 8254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (pValueObj->IsNumber()) { 8264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->PutObjectProperty(pObj, wsKey, 8274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->NewNumber(pValueObj->GetNumber())); 8284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (pValueObj->IsBoolean()) { 8294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->PutObjectProperty( 8304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pObj, wsKey, pRuntime->NewBoolean(!!pValueObj->GetInteger())); 8314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 8324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 8334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << pObj; 8344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 8354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 8364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::getPropertyInternal(IJS_Context* cc, 8384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 8394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_ByteString& propName, 8404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 8414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 8424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 8434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 8444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 8454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Dictionary* pDictionary = m_pFormFillEnv->GetPDFDocument()->GetInfo(); 8464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pDictionary) 8474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 8484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsGetting()) { 8504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << pDictionary->GetUnicodeTextFor(propName); 8514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 8524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv->GetPermissions(FPDFPERM_MODIFY)) { 8534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); 8544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 8554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 8564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString csProperty; 8574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp >> csProperty; 8584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDictionary->SetNewFor<CPDF_String>(propName, PDF_EncodeText(csProperty), 8594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann false); 8604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->SetChangeMark(); 8614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 8624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 8634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 8644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::creationDate(IJS_Context* cc, 8664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 8674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 8684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return getPropertyInternal(cc, vp, "CreationDate", sError); 8694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 8704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::creator(IJS_Context* cc, 8724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 8734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 8744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return getPropertyInternal(cc, vp, "Creator", sError); 8754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 8764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::delay(IJS_Context* cc, 8784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 8794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 8804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 8814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 8824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 8834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 8844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsGetting()) { 8854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << m_bDelay; 8864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 8874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv->GetPermissions(FPDFPERM_MODIFY)) { 8884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); 8894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 8904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 8914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp >> m_bDelay; 8924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (m_bDelay) { 8934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_DelayData.clear(); 8944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 8954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::list<std::unique_ptr<CJS_DelayData>> DelayDataToProcess; 8964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann DelayDataToProcess.swap(m_DelayData); 8974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (const auto& pData : DelayDataToProcess) 8984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Field::DoDelay(m_pFormFillEnv.Get(), pData.get()); 8994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 9024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::keywords(IJS_Context* cc, 9054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 9064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 9074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return getPropertyInternal(cc, vp, "Keywords", sError); 9084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::modDate(IJS_Context* cc, 9114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 9124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 9134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return getPropertyInternal(cc, vp, "ModDate", sError); 9144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::producer(IJS_Context* cc, 9174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 9184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 9194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return getPropertyInternal(cc, vp, "Producer", sError); 9204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::subject(IJS_Context* cc, 9234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 9244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 9254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return getPropertyInternal(cc, vp, "Subject", sError); 9264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::title(IJS_Context* cc, 9294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 9304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 9314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv || !m_pFormFillEnv->GetUnderlyingDocument()) { 9324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 9334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 9344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return getPropertyInternal(cc, vp, "Title", sError); 9364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::numPages(IJS_Context* cc, 9394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 9404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 9414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsSetting()) { 9424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSREADONLY); 9434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 9444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 9464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 9474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 9484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << m_pFormFillEnv->GetPageCount(); 9504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 9514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::external(IJS_Context* cc, 9544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 9554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 9564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // In Chrome case, should always return true. 9574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsGetting()) { 9584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << true; 9594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 9614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::filesize(IJS_Context* cc, 9644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 9654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 9664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsSetting()) { 9674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSREADONLY); 9684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 9694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << 0; 9714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 9724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::mouseX(IJS_Context* cc, 9754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 9764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 9774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 9784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::mouseY(IJS_Context* cc, 9814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 9824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 9834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 9844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::URL(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) { 9874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsSetting()) { 9884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSREADONLY); 9894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 9904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 9924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 9934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 9944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << m_pFormFillEnv->JS_docGetFilePath(); 9964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 9974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::baseURL(IJS_Context* cc, 10004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 10014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 10024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsGetting()) { 10034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << m_cwBaseURL; 10044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 10054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp >> m_cwBaseURL; 10064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 10084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 10094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::calculate(IJS_Context* cc, 10114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 10124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 10134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 10144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 10154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 10164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); 10184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsGetting()) { 10194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << !!pInterForm->IsCalculateEnabled(); 10204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 10214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bCalculate; 10224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp >> bCalculate; 10234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pInterForm->EnableCalculate(bCalculate); 10244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 10264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 10274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::documentFileName(IJS_Context* cc, 10294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 10304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 10314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsSetting()) { 10324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSREADONLY); 10334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 10344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 10364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 10374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 10384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsFilePath = m_pFormFillEnv->JS_docGetFilePath(); 10404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t i = wsFilePath.GetLength() - 1; 10414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (; i >= 0; i--) { 10424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (wsFilePath.GetAt(i) == L'\\' || wsFilePath.GetAt(i) == L'/') 10434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 10444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (i >= 0 && i < wsFilePath.GetLength() - 1) { 10464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << (wsFilePath.GetBuffer(wsFilePath.GetLength()) + i + 1); 10474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 10484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << L""; 10494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 10514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 10524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::path(IJS_Context* cc, 10544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 10554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 10564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsSetting()) { 10574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSREADONLY); 10584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 10594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 10614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 10624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 10634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << app::SysPathToPDFPath(m_pFormFillEnv->JS_docGetFilePath()); 10654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 10664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 10674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::pageWindowRect(IJS_Context* cc, 10694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 10704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 10714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 10724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 10734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::layout(IJS_Context* cc, 10754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 10764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 10774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 10784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 10794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::addLink(IJS_Context* cc, 10814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 10824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 10834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 10844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 10854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 10864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::closeDoc(IJS_Context* cc, 10884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 10894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 10904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 10914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 10924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 10934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::getPageBox(IJS_Context* cc, 10954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 10964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 10974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 10984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 10994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 11004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::getAnnot(IJS_Context* cc, 11024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 11034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 11044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 11054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() != 2) { 11064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); 11074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 11084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 11104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 11114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 11124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Context* pContext = static_cast<CJS_Context*>(cc); 11144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 11154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nPageNo = params[0].ToInt(pRuntime); 11164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString swAnnotName = params[1].ToCFXWideString(pRuntime); 11174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_PageView* pPageView = m_pFormFillEnv->GetPageView(nPageNo); 11184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pPageView) 11194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 11204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_AnnotIteration annotIteration(pPageView, false); 11224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_BAAnnot* pSDKBAAnnot = nullptr; 11234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (const auto& pSDKAnnotCur : annotIteration) { 11244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_BAAnnot* pBAAnnot = 11254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CPDFSDK_BAAnnot*>(pSDKAnnotCur.Get()); 11264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pBAAnnot && pBAAnnot->GetAnnotName() == swAnnotName) { 11274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pSDKBAAnnot = pBAAnnot; 11284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 11294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pSDKBAAnnot) 11324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 11334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Object> pObj = 11354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->NewFxDynamicObj(CJS_Annot::g_nObjDefnID); 11364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pObj.IsEmpty()) 11374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 11384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Annot* pJS_Annot = 11404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CJS_Annot*>(pRuntime->GetObjectPrivate(pObj)); 11414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pJS_Annot) 11424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 11434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Annot* pAnnot = static_cast<Annot*>(pJS_Annot->GetEmbedObject()); 11454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pAnnot) 11464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 11474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pAnnot->SetSDKAnnot(pSDKBAAnnot); 11494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vRet = CJS_Value(pRuntime, pJS_Annot); 11504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 11514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 11524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::getAnnots(IJS_Context* cc, 11544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 11554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 11564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 11574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 11584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 11594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 11604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Context* pContext = static_cast<CJS_Context*>(cc); 11624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 11634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // TODO(tonikitoo): Add support supported parameters as per 11654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // the PDF spec. 11664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nPageNo = m_pFormFillEnv->GetPageCount(); 11684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Array annots; 11694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int i = 0; i < nPageNo; ++i) { 11714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_PageView* pPageView = m_pFormFillEnv->GetPageView(i); 11724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pPageView) 11734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 11744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_AnnotIteration annotIteration(pPageView, false); 11764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (const auto& pSDKAnnotCur : annotIteration) { 11774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pSDKAnnotCur) { 11784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 11794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 11804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Object> pObj = 11824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->NewFxDynamicObj(CJS_Annot::g_nObjDefnID); 11834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pObj.IsEmpty()) 11844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 11854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Annot* pJS_Annot = 11874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CJS_Annot*>(pRuntime->GetObjectPrivate(pObj)); 11884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pJS_Annot) 11894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 11904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Annot* pAnnot = static_cast<Annot*>(pJS_Annot->GetEmbedObject()); 11924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pAnnot) 11934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 11944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pAnnot->SetSDKAnnot(static_cast<CPDFSDK_BAAnnot*>(pSDKAnnotCur.Get())); 11964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann annots.SetElement(pRuntime, i, CJS_Value(pRuntime, pJS_Annot)); 11974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vRet = CJS_Value(pRuntime, annots); 12004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 12014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 12024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::getAnnot3D(IJS_Context* cc, 12044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 12054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 12064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 12074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vRet.SetNull(CJS_Runtime::FromContext(cc)); 12084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 12094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 12104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::getAnnots3D(IJS_Context* cc, 12124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 12134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 12144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 12154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 12164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 12174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::getOCGs(IJS_Context* cc, 12194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 12204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 12214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 12224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 12234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 12244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::getLinks(IJS_Context* cc, 12264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 12274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 12284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 12294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 12304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 12314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::IsEnclosedInRect(CFX_FloatRect rect, CFX_FloatRect LinkRect) { 12334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return (rect.left <= LinkRect.left && rect.top <= LinkRect.top && 12344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann rect.right >= LinkRect.right && rect.bottom >= LinkRect.bottom); 12354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 12364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::addIcon(IJS_Context* cc, 12384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 12394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 12404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 12414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() != 2) { 12424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); 12434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 12444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 12454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Context* pContext = static_cast<CJS_Context*>(cc); 12474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 12484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString swIconName = params[0].ToCFXWideString(pRuntime); 12494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params[1].GetType() != CJS_Value::VT_object) { 12514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSTYPEERROR); 12524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 12534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 12544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Object> pJSIcon = params[1].ToV8Object(pRuntime); 12564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pRuntime->GetObjDefnID(pJSIcon) != CJS_Icon::g_nObjDefnID) { 12574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSTYPEERROR); 12584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 12594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 12604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_EmbedObj* pEmbedObj = params[1].ToCJSObject(pRuntime)->GetEmbedObject(); 12624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pEmbedObj) { 12634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSTYPEERROR); 12644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 12654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 12664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_Icons.push_back(pdfium::MakeUnique<IconElement>( 12684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann swIconName, static_cast<Icon*>(pEmbedObj))); 12694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 12704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 12714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::icons(IJS_Context* cc, 12734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 12744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 12754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsSetting()) { 12764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSREADONLY); 12774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 12784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 12794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 12814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (m_Icons.empty()) { 12824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp.GetJSValue()->SetNull(pRuntime); 12834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 12844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 12854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Array Icons; 12874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int i = 0; 12894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (const auto& pIconElement : m_Icons) { 12904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Object> pObj = 12914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->NewFxDynamicObj(CJS_Icon::g_nObjDefnID); 12924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pObj.IsEmpty()) 12934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 12944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Icon* pJS_Icon = 12964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CJS_Icon*>(pRuntime->GetObjectPrivate(pObj)); 12974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pJS_Icon) 12984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 12994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Icon* pIcon = static_cast<Icon*>(pJS_Icon->GetEmbedObject()); 13014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pIcon) 13024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 13034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pIcon->SetStream(pIconElement->IconStream->GetStream()); 13054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pIcon->SetIconName(pIconElement->IconName); 13064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Icons.SetElement(pRuntime, i++, CJS_Value(pRuntime, pJS_Icon)); 13074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << Icons; 13104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 13114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 13124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::getIcon(IJS_Context* cc, 13144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 13154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 13164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 13174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() != 1) { 13184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); 13194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 13204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (m_Icons.empty()) 13234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 13244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 13264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString swIconName = params[0].ToCFXWideString(pRuntime); 13274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (const auto& pIconElement : m_Icons) { 13294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pIconElement->IconName != swIconName) 13304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 13314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Object> pObj = 13334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->NewFxDynamicObj(CJS_Icon::g_nObjDefnID); 13344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pObj.IsEmpty()) 13354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 13364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Icon* pJS_Icon = 13384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CJS_Icon*>(pRuntime->GetObjectPrivate(pObj)); 13394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pJS_Icon) 13404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 13414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject(); 13434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pIcon) 13444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 13454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pIcon->SetIconName(swIconName); 13474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pIcon->SetStream(pIconElement->IconStream->GetStream()); 13484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vRet = CJS_Value(pRuntime, pJS_Icon); 13504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 13514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 13544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 13554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::removeIcon(IJS_Context* cc, 13574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 13584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 13594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 13604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, no supported. 13614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 13624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 13634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::createDataObject(IJS_Context* cc, 13654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 13664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 13674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 13684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not implemented. 13694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 13704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 13714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::media(IJS_Context* cc, 13734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 13744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 13754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 13764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 13774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::calculateNow(IJS_Context* cc, 13794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 13804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 13814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 13824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 13834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 13844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 13854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!(m_pFormFillEnv->GetPermissions(FPDFPERM_MODIFY) || 13874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->GetPermissions(FPDFPERM_ANNOT_FORM) || 13884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->GetPermissions(FPDFPERM_FILL_FORM))) { 13894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); 13904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 13914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->GetInterForm()->OnCalculate(); 13934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 13944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 13954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::Collab(IJS_Context* cc, 13974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 13984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 13994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 14004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 14014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::getPageNthWord(IJS_Context* cc, 14034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 14044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 14054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 14064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 14074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 14084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 14094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) { 14114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); 14124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 14134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 14154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // TODO(tsepez): check maximum allowable params. 14174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nPageNo = params.size() > 0 ? params[0].ToInt(pRuntime) : 0; 14194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nWordNo = params.size() > 1 ? params[1].ToInt(pRuntime) : 0; 14204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bStrip = params.size() > 2 ? params[2].ToBool(pRuntime) : true; 14214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Document* pDocument = m_pFormFillEnv->GetPDFDocument(); 14234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pDocument) 14244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 14254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) { 14274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSVALUEERROR); 14284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 14294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo); 14324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pPageDict) 14334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 14344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Page page(pDocument, pPageDict, true); 14364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann page.ParseContent(); 14374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nWords = 0; 14394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString swRet; 14404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (auto& pPageObj : *page.GetPageObjectList()) { 14414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pPageObj->IsText()) { 14424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_TextObject* pTextObj = pPageObj->AsText(); 14434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nObjWords = CountWords(pTextObj); 14444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nWords + nObjWords >= nWordNo) { 14454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann swRet = GetObjWordStr(pTextObj, nWordNo - nWords); 14464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 14474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nWords += nObjWords; 14494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bStrip) { 14534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann swRet.TrimLeft(); 14544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann swRet.TrimRight(); 14554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vRet = CJS_Value(pRuntime, swRet.c_str()); 14584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 14594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 14604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::getPageNthWordQuads(IJS_Context* cc, 14624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 14634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 14644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 14654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 14664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 14674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 14684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) { 14704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 14714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 14724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 14744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 14754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::getPageNumWords(IJS_Context* cc, 14774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 14784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 14794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 14804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 14814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 14824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 14834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) { 14854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); 14864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 14874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 14894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nPageNo = params.size() > 0 ? params[0].ToInt(pRuntime) : 0; 14904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Document* pDocument = m_pFormFillEnv->GetPDFDocument(); 14914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) { 14924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSVALUEERROR); 14934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 14944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo); 14974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pPageDict) 14984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 14994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Page page(pDocument, pPageDict, true); 15014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann page.ParseContent(); 15024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nWords = 0; 15044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (auto& pPageObj : *page.GetPageObjectList()) { 15054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pPageObj->IsText()) 15064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nWords += CountWords(pPageObj->AsText()); 15074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 15084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vRet = CJS_Value(pRuntime, nWords); 15104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 15114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 15124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::getPrintParams(IJS_Context* cc, 15144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 15154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 15164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 15174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Context* pContext = (CJS_Context*)cc; 15184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 15194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Object> pRetObj = 15204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->NewFxDynamicObj(CJS_PrintParamsObj::g_nObjDefnID); 15214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Not implemented yet. 15234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vRet = CJS_Value(pRuntime, pRetObj); 15254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 15264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 15274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#define ISLATINWORD(u) (u != 0x20 && u <= 0x28FF) 15294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint Document::CountWords(CPDF_TextObject* pTextObj) { 15314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pTextObj) 15324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return 0; 15334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nWords = 0; 15354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Font* pFont = pTextObj->GetFont(); 15374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pFont) 15384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return 0; 15394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bIsLatin = false; 15414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int i = 0, sz = pTextObj->CountChars(); i < sz; i++) { 15434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t charcode = CPDF_Font::kInvalidCharCode; 15444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT kerning; 15454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pTextObj->GetCharInfo(i, charcode, kerning); 15474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString swUnicode = pFont->UnicodeFromCharCode(charcode); 15484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint16_t unicode = 0; 15504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (swUnicode.GetLength() > 0) 15514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann unicode = swUnicode[0]; 15524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (ISLATINWORD(unicode) && bIsLatin) 15544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 15554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bIsLatin = ISLATINWORD(unicode); 15574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (unicode != 0x20) 15584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nWords++; 15594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 15604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nWords; 15624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 15634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCFX_WideString Document::GetObjWordStr(CPDF_TextObject* pTextObj, 15654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nWordIndex) { 15664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString swRet; 15674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Font* pFont = pTextObj->GetFont(); 15694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pFont) 15704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return L""; 15714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nWords = 0; 15734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bIsLatin = false; 15744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int i = 0, sz = pTextObj->CountChars(); i < sz; i++) { 15764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t charcode = CPDF_Font::kInvalidCharCode; 15774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT kerning; 15784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pTextObj->GetCharInfo(i, charcode, kerning); 15804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString swUnicode = pFont->UnicodeFromCharCode(charcode); 15814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint16_t unicode = 0; 15834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (swUnicode.GetLength() > 0) 15844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann unicode = swUnicode[0]; 15854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (ISLATINWORD(unicode) && bIsLatin) { 15874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 15884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bIsLatin = ISLATINWORD(unicode); 15894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (unicode != 0x20) 15904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nWords++; 15914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 15924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nWords - 1 == nWordIndex) 15944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann swRet += unicode; 15954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 15964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return swRet; 15984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 15994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::zoom(IJS_Context* cc, 16014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 16024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 16034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 16044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 16054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann/** 16074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann(none, NoVary) 16084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann(fitP, FitPage) 16094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann(fitW, FitWidth) 16104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann(fitH, FitHeight) 16114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann(fitV, FitVisibleWidth) 16124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann(pref, Preferred) 16134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann(refW, ReflowWidth) 16144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann*/ 16154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::zoomType(IJS_Context* cc, 16174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 16184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 16194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 16204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 16214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::deletePages(IJS_Context* cc, 16234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 16244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 16254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 16264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, no supported. 16274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 16284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 16294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::extractPages(IJS_Context* cc, 16314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 16324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 16334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 16344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not supported. 16354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 16364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 16374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::insertPages(IJS_Context* cc, 16394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 16404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 16414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 16424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not supported. 16434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 16444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 16454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::replacePages(IJS_Context* cc, 16474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 16484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 16494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 16504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not supported. 16514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 16524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 16534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::getURL(IJS_Context* cc, 16554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 16564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 16574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 16584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not supported. 16594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 16604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 16614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::gotoNamedDest(IJS_Context* cc, 16634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 16644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 16654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 16664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() != 1) { 16674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); 16684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 16694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 16704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 16714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 16724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 16734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 16744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 16754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wideName = params[0].ToCFXWideString(pRuntime); 16764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString utf8Name = wideName.UTF8Encode(); 16774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Document* pDocument = m_pFormFillEnv->GetPDFDocument(); 16784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pDocument) 16794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 16804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_NameTree nameTree(pDocument, "Dests"); 16824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Array* destArray = nameTree.LookupNamedDest(pDocument, utf8Name); 16834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!destArray) 16844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 16854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Dest dest(destArray); 16874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CPDF_Array* arrayObject = ToArray(dest.GetObject()); 16884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::unique_ptr<float[]> scrollPositionArray; 16904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int scrollPositionArraySize = 0; 16914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (arrayObject) { 16934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann scrollPositionArray.reset(new float[arrayObject->GetCount()]); 16944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int j = 0; 16954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (size_t i = 2; i < arrayObject->GetCount(); i++) 16964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann scrollPositionArray[j++] = arrayObject->GetFloatAt(i); 16974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann scrollPositionArraySize = j; 16984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 16994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 17004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->BeginBlock(); 17014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->DoGoToAction(dest.GetPageIndex(pDocument), dest.GetZoomMode(), 17024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann scrollPositionArray.get(), 17034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann scrollPositionArraySize); 17044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->EndBlock(); 17054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 17064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 17074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 17084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 17094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid Document::AddDelayData(CJS_DelayData* pData) { 17104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_DelayData.push_back(std::unique_ptr<CJS_DelayData>(pData)); 17114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 17124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 17134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid Document::DoFieldDelay(const CFX_WideString& sFieldName, 17144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nControlIndex) { 17154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::vector<std::unique_ptr<CJS_DelayData>> DelayDataForFieldAndControlIndex; 17164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann auto iter = m_DelayData.begin(); 17174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (iter != m_DelayData.end()) { 17184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann auto old = iter++; 17194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if ((*old)->sFieldName == sFieldName && 17204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (*old)->nControlIndex == nControlIndex) { 17214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann DelayDataForFieldAndControlIndex.push_back(std::move(*old)); 17224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_DelayData.erase(old); 17234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 17244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 17254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 17264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (const auto& pData : DelayDataForFieldAndControlIndex) 17274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Field::DoDelay(m_pFormFillEnv.Get(), pData.get()); 17284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 17294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 17304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCJS_Document* Document::GetCJSDoc() const { 17314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return static_cast<CJS_Document*>(m_pJSObject); 17324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1733