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 95ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann#include <algorithm> 104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <utility> 114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <vector> 124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfapi/font/cpdf_font.h" 144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfapi/page/cpdf_page.h" 154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfapi/parser/cpdf_array.h" 164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfapi/parser/cpdf_document.h" 174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfapi/parser/cpdf_string.h" 184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfapi/parser/fpdf_parser_decode.h" 194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfdoc/cpdf_interform.h" 204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfdoc/cpdf_nametree.h" 214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/cpdfsdk_annotiteration.h" 224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/cpdfsdk_formfillenvironment.h" 234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/cpdfsdk_interform.h" 244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/cpdfsdk_pageview.h" 254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/cpdfsdk_widget.h" 264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/Annot.h" 274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/Field.h" 284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/Icon.h" 294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/JS_Define.h" 304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/JS_EventHandler.h" 314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/JS_Object.h" 324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/JS_Value.h" 334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/app.h" 345ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann#include "fpdfsdk/javascript/cjs_event_context.h" 354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/cjs_runtime.h" 364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/resource.h" 374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "third_party/base/numerics/safe_math.h" 384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "third_party/base/ptr_util.h" 394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 405ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. MoltmannJSConstSpec CJS_PrintParamsObj::ConstSpecs[] = {{0, JSConstSpec::Number, 0, 0}}; 414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 425ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. MoltmannJSPropertySpec CJS_PrintParamsObj::PropertySpecs[] = {{0, 0, 0}}; 434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 445ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. MoltmannJSMethodSpec CJS_PrintParamsObj::MethodSpecs[] = {{0, 0}}; 454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannIMPLEMENT_JS_CLASS(CJS_PrintParamsObj, PrintParamsObj) 474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannPrintParamsObj::PrintParamsObj(CJS_Object* pJSObject) 494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : CJS_EmbedObj(pJSObject) { 504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bUI = true; 514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nStart = 0; 524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nEnd = 0; 534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bSilent = false; 544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bShrinkToFit = false; 554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bPrintAsImage = false; 564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bReverse = false; 574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bAnnotations = true; 584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#define MINWIDTH 5.0f 614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#define MINHEIGHT 5.0f 624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 635ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. MoltmannJSConstSpec CJS_Document::ConstSpecs[] = {{0, JSConstSpec::Number, 0, 0}}; 645ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann 655ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. MoltmannJSPropertySpec CJS_Document::PropertySpecs[] = { 665ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"ADBE", get_ADBE_static, set_ADBE_static}, 675ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"author", get_author_static, set_author_static}, 685ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"baseURL", get_baseURL_static, set_baseURL_static}, 695ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"bookmarkRoot", get_bookmarkRoot_static, set_bookmarkRoot_static}, 705ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"calculate", get_calculate_static, set_calculate_static}, 715ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"Collab", get_Collab_static, set_Collab_static}, 725ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"creationDate", get_creationDate_static, set_creationDate_static}, 735ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"creator", get_creator_static, set_creator_static}, 745ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"delay", get_delay_static, set_delay_static}, 755ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"dirty", get_dirty_static, set_dirty_static}, 765ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"documentFileName", get_documentFileName_static, 775ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann set_documentFileName_static}, 785ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"external", get_external_static, set_external_static}, 795ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"filesize", get_filesize_static, set_filesize_static}, 805ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"icons", get_icons_static, set_icons_static}, 815ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"info", get_info_static, set_info_static}, 825ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"keywords", get_keywords_static, set_keywords_static}, 835ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"layout", get_layout_static, set_layout_static}, 845ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"media", get_media_static, set_media_static}, 855ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"modDate", get_modDate_static, set_modDate_static}, 865ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"mouseX", get_mouseX_static, set_mouseX_static}, 875ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"mouseY", get_mouseY_static, set_mouseY_static}, 885ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"numFields", get_numFields_static, set_numFields_static}, 895ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"numPages", get_numPages_static, set_numPages_static}, 905ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"pageNum", get_pageNum_static, set_pageNum_static}, 915ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"pageWindowRect", get_pageWindowRect_static, set_pageWindowRect_static}, 925ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"path", get_path_static, set_path_static}, 935ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"producer", get_producer_static, set_producer_static}, 945ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"subject", get_subject_static, set_subject_static}, 955ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"title", get_title_static, set_title_static}, 965ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"URL", get_URL_static, set_URL_static}, 975ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"zoom", get_zoom_static, set_zoom_static}, 985ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"zoomType", get_zoomType_static, set_zoomType_static}, 995ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {0, 0, 0}}; 1005ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann 1015ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. MoltmannJSMethodSpec CJS_Document::MethodSpecs[] = { 1025ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"addAnnot", addAnnot_static}, 1035ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"addField", addField_static}, 1045ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"addLink", addLink_static}, 1055ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"addIcon", addIcon_static}, 1065ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"calculateNow", calculateNow_static}, 1075ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"closeDoc", closeDoc_static}, 1085ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"createDataObject", createDataObject_static}, 1095ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"deletePages", deletePages_static}, 1105ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"exportAsText", exportAsText_static}, 1115ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"exportAsFDF", exportAsFDF_static}, 1125ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"exportAsXFDF", exportAsXFDF_static}, 1135ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"extractPages", extractPages_static}, 1145ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"getAnnot", getAnnot_static}, 1155ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"getAnnots", getAnnots_static}, 1165ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"getAnnot3D", getAnnot3D_static}, 1175ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"getAnnots3D", getAnnots3D_static}, 1185ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"getField", getField_static}, 1195ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"getIcon", getIcon_static}, 1205ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"getLinks", getLinks_static}, 1215ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"getNthFieldName", getNthFieldName_static}, 1225ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"getOCGs", getOCGs_static}, 1235ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"getPageBox", getPageBox_static}, 1245ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"getPageNthWord", getPageNthWord_static}, 1255ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"getPageNthWordQuads", getPageNthWordQuads_static}, 1265ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"getPageNumWords", getPageNumWords_static}, 1275ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"getPrintParams", getPrintParams_static}, 1285ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"getURL", getURL_static}, 1295ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"gotoNamedDest", gotoNamedDest_static}, 1305ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"importAnFDF", importAnFDF_static}, 1315ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"importAnXFDF", importAnXFDF_static}, 1325ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"importTextData", importTextData_static}, 1335ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"insertPages", insertPages_static}, 1345ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"mailForm", mailForm_static}, 1355ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"print", print_static}, 1365ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"removeField", removeField_static}, 1375ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"replacePages", replacePages_static}, 1385ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"resetForm", resetForm_static}, 1395ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"removeIcon", removeIcon_static}, 1405ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"saveAs", saveAs_static}, 1415ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"submitForm", submitForm_static}, 1425ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"syncAnnotScan", syncAnnotScan_static}, 1435ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {"mailDoc", mailDoc_static}, 1445ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann {0, 0}}; 1454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannIMPLEMENT_JS_CLASS(CJS_Document, Document) 1474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CJS_Document::InitInstance(IJS_Runtime* pIRuntime) { 1494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Runtime* pRuntime = static_cast<CJS_Runtime*>(pIRuntime); 1504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Document* pDoc = static_cast<Document*>(GetEmbedObject()); 1514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDoc->SetFormFillEnv(pRuntime->GetFormFillEnv()); 1524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannDocument::Document(CJS_Object* pJSObject) 1554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : CJS_EmbedObj(pJSObject), 1564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv(nullptr), 1574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_cwBaseURL(L""), 1584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_bDelay(false) {} 1594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannDocument::~Document() { 1614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// the total number of fileds in document. 1645ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::numFields(CJS_Runtime* pRuntime, 1654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 1664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 1674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsSetting()) { 1684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSREADONLY); 1694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 1704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 1724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 1734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 1744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); 1764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); 1774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << static_cast<int>(pPDFForm->CountFields(CFX_WideString())); 1784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 1794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1815ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::dirty(CJS_Runtime* pRuntime, 1824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 1834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 1844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 1854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 1864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 1874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsGetting()) { 1894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << !!m_pFormFillEnv->GetChangeMark(); 1905ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann return true; 1914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1925ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann bool bChanged = false; 1935ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann vp >> bChanged; 1945ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann if (bChanged) 1955ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann m_pFormFillEnv->SetChangeMark(); 1965ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann else 1975ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann m_pFormFillEnv->ClearChangeMark(); 1985ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann 1994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 2004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2025ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::ADBE(CJS_Runtime* pRuntime, 2034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 2044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 2054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsGetting()) 2065ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann vp.GetJSValue()->SetNull(pRuntime); 2074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 2094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2115ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::pageNum(CJS_Runtime* pRuntime, 2124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 2134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 2144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 2154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 2164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 2174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsGetting()) { 2195ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann if (CPDFSDK_PageView* pPageView = m_pFormFillEnv->GetCurrentView()) 2204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << pPageView->GetPageIndex(); 2215ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann return true; 2224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2235ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann int iPageCount = m_pFormFillEnv->GetPageCount(); 2245ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann int iPageNum = 0; 2255ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann vp >> iPageNum; 2265ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann if (iPageNum >= 0 && iPageNum < iPageCount) 2275ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann m_pFormFillEnv->JS_docgotoPage(iPageNum); 2285ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann else if (iPageNum >= iPageCount) 2295ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann m_pFormFillEnv->JS_docgotoPage(iPageCount - 1); 2305ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann else if (iPageNum < 0) 2315ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann m_pFormFillEnv->JS_docgotoPage(0); 2324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 2344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2365ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::addAnnot(CJS_Runtime* pRuntime, 2374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 2384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 2394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 2404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Not supported. 2414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 2424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2445ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::addField(CJS_Runtime* pRuntime, 2454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 2464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 2474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 2484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Not supported. 2494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 2504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2525ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::exportAsText(CJS_Runtime* pRuntime, 2534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 2544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 2554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 2564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not supported. 2574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 2584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2605ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::exportAsFDF(CJS_Runtime* pRuntime, 2614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 2624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 2634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 2644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not supported. 2654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 2664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2685ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::exportAsXFDF(CJS_Runtime* pRuntime, 2694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 2704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 2714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 2724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not supported. 2734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 2744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Maps a field object in PDF document to a JavaScript variable 2774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// comment: 2784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// note: the paremter cName, this is clue how to treat if the cName is not a 2794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// valiable filed name in this document 2804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2815ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::getField(CJS_Runtime* pRuntime, 2824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 2834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 2844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 2854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() < 1) { 2864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); 2874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 2884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 2904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 2914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 2924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wideName = params[0].ToCFXWideString(pRuntime); 2944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); 2954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); 2964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pPDFForm->CountFields(wideName) <= 0) { 2974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vRet.SetNull(pRuntime); 2984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 2994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Object> pFieldObj = 3024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->NewFxDynamicObj(CJS_Field::g_nObjDefnID); 3035ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann if (pFieldObj.IsEmpty()) 3045ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann return false; 3055ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann 3064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Field* pJSField = 3074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CJS_Field*>(pRuntime->GetObjectPrivate(pFieldObj)); 3084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Field* pField = static_cast<Field*>(pJSField->GetEmbedObject()); 3094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pField->AttachField(this, wideName); 3104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vRet = CJS_Value(pRuntime, pJSField); 3114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 3124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Gets the name of the nth field in the document 3155ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::getNthFieldName(CJS_Runtime* pRuntime, 3164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 3174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 3184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 3194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() != 1) { 3204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); 3214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 3224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 3244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 3254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 3264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nIndex = params[0].ToInt(pRuntime); 3284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nIndex < 0) { 3294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSVALUEERROR); 3304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 3314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); 3334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); 3344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_FormField* pField = pPDFForm->GetField(nIndex, CFX_WideString()); 3354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pField) 3364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 3374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vRet = CJS_Value(pRuntime, pField->GetFullName().c_str()); 3394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 3404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3425ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::importAnFDF(CJS_Runtime* pRuntime, 3434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 3444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 3454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 3464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not supported. 3474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 3484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3505ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::importAnXFDF(CJS_Runtime* pRuntime, 3514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 3524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 3534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 3544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not supported. 3554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 3564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3585ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::importTextData(CJS_Runtime* pRuntime, 3594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 3604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 3614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 3624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not supported. 3634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 3644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// exports the form data and mails the resulting fdf file as an attachment to 3674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// all recipients. 3684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// comment: need reader supports 3695ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::mailForm(CJS_Runtime* pRuntime, 3704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 3714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 3724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 3734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 3744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 3754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 3764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) { 3784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); 3794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 3804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int iLength = params.size(); 3824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bUI = iLength > 0 ? params[0].ToBool(pRuntime) : true; 3834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cTo = iLength > 1 ? params[1].ToCFXWideString(pRuntime) : L""; 3844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cCc = iLength > 2 ? params[2].ToCFXWideString(pRuntime) : L""; 3854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cBcc = iLength > 3 ? params[3].ToCFXWideString(pRuntime) : L""; 3864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cSubject = 3874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iLength > 4 ? params[4].ToCFXWideString(pRuntime) : L""; 3884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cMsg = iLength > 5 ? params[5].ToCFXWideString(pRuntime) : L""; 3894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); 3904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteTextBuf textBuf; 3914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pInterForm->ExportFormToFDFTextBuf(textBuf)) 3924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 3934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->BeginBlock(); 3955ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann CPDFSDK_FormFillEnvironment* pFormFillEnv = pRuntime->GetFormFillEnv(); 3964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFormFillEnv->JS_docmailForm(textBuf.GetBuffer(), textBuf.GetLength(), bUI, 3974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cTo.c_str(), cSubject.c_str(), cCc.c_str(), 3984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cBcc.c_str(), cMsg.c_str()); 3994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->EndBlock(); 4004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 4014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4035ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::print(CJS_Runtime* pRuntime, 4044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 4054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 4064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 4074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 4084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 4094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 4104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bUI = true; 4124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nStart = 0; 4134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nEnd = 0; 4144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSilent = false; 4154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bShrinkToFit = false; 4164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bPrintAsImage = false; 4174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bReverse = false; 4184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bAnnotations = false; 4194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nlength = params.size(); 4204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nlength == 9) { 4214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params[8].GetType() == CJS_Value::VT_object) { 4224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Object> pObj = params[8].ToV8Object(pRuntime); 4234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (CFXJS_Engine::GetObjDefnID(pObj) == 4244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PrintParamsObj::g_nObjDefnID) { 4254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (CJS_Object* pJSObj = params[8].ToCJSObject(pRuntime)) { 4264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (PrintParamsObj* pprintparamsObj = 4274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<PrintParamsObj*>(pJSObj->GetEmbedObject())) { 4284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bUI = pprintparamsObj->bUI; 4294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nStart = pprintparamsObj->nStart; 4304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nEnd = pprintparamsObj->nEnd; 4314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bSilent = pprintparamsObj->bSilent; 4324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bShrinkToFit = pprintparamsObj->bShrinkToFit; 4334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bPrintAsImage = pprintparamsObj->bPrintAsImage; 4344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bReverse = pprintparamsObj->bReverse; 4354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bAnnotations = pprintparamsObj->bAnnotations; 4364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 4414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nlength >= 1) 4424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bUI = params[0].ToBool(pRuntime); 4434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nlength >= 2) 4444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nStart = params[1].ToInt(pRuntime); 4454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nlength >= 3) 4464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nEnd = params[2].ToInt(pRuntime); 4474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nlength >= 4) 4484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bSilent = params[3].ToBool(pRuntime); 4494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nlength >= 5) 4504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bShrinkToFit = params[4].ToBool(pRuntime); 4514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nlength >= 6) 4524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bPrintAsImage = params[5].ToBool(pRuntime); 4534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nlength >= 7) 4544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bReverse = params[6].ToBool(pRuntime); 4554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nlength >= 8) 4564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bAnnotations = params[7].ToBool(pRuntime); 4574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (m_pFormFillEnv) { 4604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->JS_docprint(bUI, nStart, nEnd, bSilent, bShrinkToFit, 4614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bPrintAsImage, bReverse, bAnnotations); 4624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 4634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 4654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// removes the specified field from the document. 4684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// comment: 4694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// note: if the filed name is not rational, adobe is dumb for it. 4704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4715ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::removeField(CJS_Runtime* pRuntime, 4724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 4734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 4744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 4754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() != 1) { 4764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); 4774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 4784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 4804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 4814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 4824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!(m_pFormFillEnv->GetPermissions(FPDFPERM_MODIFY) || 4844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->GetPermissions(FPDFPERM_ANNOT_FORM))) { 4854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); 4864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 4874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString sFieldName = params[0].ToCFXWideString(pRuntime); 4894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); 4904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::vector<CPDFSDK_Annot::ObservedPtr> widgets; 4914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pInterForm->GetWidgets(sFieldName, &widgets); 4924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (widgets.empty()) 4934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 4944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (const auto& pAnnot : widgets) { 4964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot.Get()); 4974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidget) 4984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 4994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_FloatRect rcAnnot = pWidget->GetRect(); 5014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann --rcAnnot.left; 5024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann --rcAnnot.bottom; 5034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ++rcAnnot.right; 5044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ++rcAnnot.top; 5054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::vector<CFX_FloatRect> aRefresh(1, rcAnnot); 5074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann UnderlyingPageType* pPage = pWidget->GetUnderlyingPage(); 5084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(pPage); 5094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // If there is currently no pageview associated with the page being used 5114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // do not create one. We may be in the process of tearing down the document 5124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // and creating a new pageview at this point will cause bad things. 5134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_PageView* pPageView = m_pFormFillEnv->GetPageView(pPage, false); 5144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pPageView) { 5154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#if PDF_ENABLE_XFA 5164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pPageView->DeleteAnnot(pWidget); 5174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#endif // PDF_ENABLE_XFA 5184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pPageView->UpdateRects(aRefresh); 5194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->SetChangeMark(); 5224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 5244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 5254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// reset filed values within a document. 5274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// comment: 5284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// note: if the fields names r not rational, aodbe is dumb for it. 5294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5305ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::resetForm(CJS_Runtime* pRuntime, 5314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 5324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 5334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 5344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 5354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 5364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 5374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!(m_pFormFillEnv->GetPermissions(FPDFPERM_MODIFY) || 5394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->GetPermissions(FPDFPERM_ANNOT_FORM) || 5404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->GetPermissions(FPDFPERM_FILL_FORM))) { 5414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); 5424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 5434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); 5464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); 5474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Array aName; 5484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.empty()) { 5504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pPDFForm->ResetForm(true); 5514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->SetChangeMark(); 5524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 5534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (params[0].GetType()) { 5564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 5574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann aName.Attach(params[0].ToV8Array(pRuntime)); 5584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 5594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case CJS_Value::VT_string: 5604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann aName.SetElement(pRuntime, 0, params[0]); 5614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 5624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::vector<CPDF_FormField*> aFields; 5654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int i = 0, isz = aName.GetLength(pRuntime); i < isz; ++i) { 5664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value valElement(pRuntime); 5674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann aName.GetElement(pRuntime, i, valElement); 5684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString swVal = valElement.ToCFXWideString(pRuntime); 5694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int j = 0, jsz = pPDFForm->CountFields(swVal); j < jsz; ++j) 5704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann aFields.push_back(pPDFForm->GetField(j, swVal)); 5714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!aFields.empty()) { 5744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pPDFForm->ResetForm(aFields, true, true); 5754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->SetChangeMark(); 5764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 5794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 5804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5815ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::saveAs(CJS_Runtime* pRuntime, 5824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 5834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 5844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 5854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not supported. 5864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 5874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 5884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5895ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::syncAnnotScan(CJS_Runtime* pRuntime, 5904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 5914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 5924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 5934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 5944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 5954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5965ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::submitForm(CJS_Runtime* pRuntime, 5974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 5984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 5994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 6004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nSize = params.size(); 6014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nSize < 1) { 6024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); 6034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 6044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 6064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 6074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 6084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6095ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann 6104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Array aFields; 6114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString strURL; 6124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bFDF = true; 6134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bEmpty = false; 6144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value v = params[0]; 6154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (v.GetType() == CJS_Value::VT_string) { 6164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann strURL = params[0].ToCFXWideString(pRuntime); 6174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nSize > 1) 6184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bFDF = params[1].ToBool(pRuntime); 6194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nSize > 2) 6204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bEmpty = params[2].ToBool(pRuntime); 6214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nSize > 3) 6224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann aFields.Attach(params[3].ToV8Array(pRuntime)); 6234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (v.GetType() == CJS_Value::VT_object) { 6244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Object> pObj = params[0].ToV8Object(pRuntime); 6254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Value> pValue = pRuntime->GetObjectProperty(pObj, L"cURL"); 6264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pValue.IsEmpty()) 6274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann strURL = CJS_Value(pRuntime, pValue).ToCFXWideString(pRuntime); 6284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue = pRuntime->GetObjectProperty(pObj, L"bFDF"); 6304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bFDF = CJS_Value(pRuntime, pValue).ToBool(pRuntime); 6314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue = pRuntime->GetObjectProperty(pObj, L"bEmpty"); 6334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bEmpty = CJS_Value(pRuntime, pValue).ToBool(pRuntime); 6344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue = pRuntime->GetObjectProperty(pObj, L"aFields"); 6364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann aFields.Attach(CJS_Value(pRuntime, pValue).ToV8Array(pRuntime)); 6374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); 6404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm(); 6414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (aFields.GetLength(pRuntime) == 0 && bEmpty) { 6424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pPDFInterForm->CheckRequiredFields(nullptr, true)) { 6434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->BeginBlock(); 6444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pInterForm->SubmitForm(strURL, false); 6454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->EndBlock(); 6464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 6484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::vector<CPDF_FormField*> fieldObjects; 6514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int i = 0, sz = aFields.GetLength(pRuntime); i < sz; ++i) { 6524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value valName(pRuntime); 6534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann aFields.GetElement(pRuntime, i, valName); 6544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString sName = valName.ToCFXWideString(pRuntime); 6564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); 6574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int j = 0, jsz = pPDFForm->CountFields(sName); j < jsz; ++j) { 6584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_FormField* pField = pPDFForm->GetField(j, sName); 6594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!bEmpty && pField->GetValue().IsEmpty()) 6604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 6614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann fieldObjects.push_back(pField); 6634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pPDFInterForm->CheckRequiredFields(&fieldObjects, true)) { 6674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->BeginBlock(); 6684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pInterForm->SubmitFields(strURL, fieldObjects, true, !bFDF); 6694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->EndBlock(); 6704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 6724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 6734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid Document::SetFormFillEnv(CPDFSDK_FormFillEnvironment* pFormFillEnv) { 6754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv.Reset(pFormFillEnv); 6764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 6774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6785ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::bookmarkRoot(CJS_Runtime* pRuntime, 6794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 6804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 6814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 6824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 6834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6845ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::mailDoc(CJS_Runtime* pRuntime, 6854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 6864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 6874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 6884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // TODO(tsepez): Check maximum number of allowed params. 6894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bUI = true; 6904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cTo = L""; 6914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cCc = L""; 6924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cBcc = L""; 6934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cSubject = L""; 6944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cMsg = L""; 6954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() >= 1) 6974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bUI = params[0].ToBool(pRuntime); 6984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() >= 2) 6994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cTo = params[1].ToCFXWideString(pRuntime); 7004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() >= 3) 7014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cCc = params[2].ToCFXWideString(pRuntime); 7024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() >= 4) 7034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cBcc = params[3].ToCFXWideString(pRuntime); 7044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() >= 5) 7054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cSubject = params[4].ToCFXWideString(pRuntime); 7064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() >= 6) 7074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cMsg = params[5].ToCFXWideString(pRuntime); 7084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() >= 1 && params[0].GetType() == CJS_Value::VT_object) { 7104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Object> pObj = params[0].ToV8Object(pRuntime); 7114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Value> pValue = pRuntime->GetObjectProperty(pObj, L"bUI"); 7134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bUI = CJS_Value(pRuntime, pValue).ToBool(pRuntime); 7144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue = pRuntime->GetObjectProperty(pObj, L"cTo"); 7164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cTo = CJS_Value(pRuntime, pValue).ToCFXWideString(pRuntime); 7174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue = pRuntime->GetObjectProperty(pObj, L"cCc"); 7194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cCc = CJS_Value(pRuntime, pValue).ToCFXWideString(pRuntime); 7204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue = pRuntime->GetObjectProperty(pObj, L"cBcc"); 7224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cBcc = CJS_Value(pRuntime, pValue).ToCFXWideString(pRuntime); 7234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue = pRuntime->GetObjectProperty(pObj, L"cSubject"); 7254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cSubject = CJS_Value(pRuntime, pValue).ToCFXWideString(pRuntime); 7264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue = pRuntime->GetObjectProperty(pObj, L"cMsg"); 7284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cMsg = CJS_Value(pRuntime, pValue).ToCFXWideString(pRuntime); 7294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 7304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->BeginBlock(); 7324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_FormFillEnvironment* pFormFillEnv = pRuntime->GetFormFillEnv(); 7334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFormFillEnv->JS_docmailForm(nullptr, 0, bUI, cTo.c_str(), cSubject.c_str(), 7344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cCc.c_str(), cBcc.c_str(), cMsg.c_str()); 7354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->EndBlock(); 7364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 7374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 7384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7395ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::author(CJS_Runtime* pRuntime, 7404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 7414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 7425ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann return getPropertyInternal(pRuntime, vp, "Author", sError); 7434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 7444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7455ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::info(CJS_Runtime* pRuntime, 7464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 7474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 7484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsSetting()) { 7494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSREADONLY); 7504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 7514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 7524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 7534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 7544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 7554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 7564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Dictionary* pDictionary = m_pFormFillEnv->GetPDFDocument()->GetInfo(); 7574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pDictionary) 7584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 7594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cwAuthor = pDictionary->GetUnicodeTextFor("Author"); 7614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cwTitle = pDictionary->GetUnicodeTextFor("Title"); 7624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cwSubject = pDictionary->GetUnicodeTextFor("Subject"); 7634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cwKeywords = pDictionary->GetUnicodeTextFor("Keywords"); 7644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cwCreator = pDictionary->GetUnicodeTextFor("Creator"); 7654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cwProducer = pDictionary->GetUnicodeTextFor("Producer"); 7664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cwCreationDate = 7674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDictionary->GetUnicodeTextFor("CreationDate"); 7684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cwModDate = pDictionary->GetUnicodeTextFor("ModDate"); 7694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString cwTrapped = pDictionary->GetUnicodeTextFor("Trapped"); 7704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Object> pObj = pRuntime->NewFxDynamicObj(-1); 7725ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"Author", 7735ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pRuntime->NewString(cwAuthor.AsStringC())); 7745ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"Title", 7755ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pRuntime->NewString(cwTitle.AsStringC())); 7765ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"Subject", 7775ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pRuntime->NewString(cwSubject.AsStringC())); 7784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"Keywords", 7795ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pRuntime->NewString(cwKeywords.AsStringC())); 7805ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"Creator", 7815ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pRuntime->NewString(cwCreator.AsStringC())); 7824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"Producer", 7835ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pRuntime->NewString(cwProducer.AsStringC())); 7844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"CreationDate", 7855ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pRuntime->NewString(cwCreationDate.AsStringC())); 7865ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"ModDate", 7875ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pRuntime->NewString(cwModDate.AsStringC())); 7885ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"Trapped", 7895ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pRuntime->NewString(cwTrapped.AsStringC())); 7904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // It's to be compatible to non-standard info dictionary. 7924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (const auto& it : *pDictionary) { 7934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_ByteString& bsKey = it.first; 7944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Object* pValueObj = it.second.get(); 7954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsKey = CFX_WideString::FromUTF8(bsKey.AsStringC()); 7964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pValueObj->IsString() || pValueObj->IsName()) { 7974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->PutObjectProperty( 7985ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pObj, wsKey, 7995ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pRuntime->NewString(pValueObj->GetUnicodeText().AsStringC())); 8004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (pValueObj->IsNumber()) { 8014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->PutObjectProperty(pObj, wsKey, 8024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->NewNumber(pValueObj->GetNumber())); 8034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (pValueObj->IsBoolean()) { 8044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->PutObjectProperty( 8054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pObj, wsKey, pRuntime->NewBoolean(!!pValueObj->GetInteger())); 8064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 8074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 8084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << pObj; 8094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 8104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 8114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8125ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::getPropertyInternal(CJS_Runtime* pRuntime, 8134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 8144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_ByteString& propName, 8154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 8164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 8174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 8184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 8194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 8204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Dictionary* pDictionary = m_pFormFillEnv->GetPDFDocument()->GetInfo(); 8214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pDictionary) 8224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 8234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsGetting()) { 8254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << pDictionary->GetUnicodeTextFor(propName); 8264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 8274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv->GetPermissions(FPDFPERM_MODIFY)) { 8284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); 8294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 8304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 8314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString csProperty; 8324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp >> csProperty; 8334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDictionary->SetNewFor<CPDF_String>(propName, PDF_EncodeText(csProperty), 8344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann false); 8354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->SetChangeMark(); 8364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 8374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 8384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 8394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8405ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::creationDate(CJS_Runtime* pRuntime, 8414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 8424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 8435ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann return getPropertyInternal(pRuntime, vp, "CreationDate", sError); 8444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 8454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8465ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::creator(CJS_Runtime* pRuntime, 8474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 8484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 8495ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann return getPropertyInternal(pRuntime, vp, "Creator", sError); 8504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 8514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8525ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::delay(CJS_Runtime* pRuntime, 8534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 8544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 8554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 8564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 8574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 8584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 8594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsGetting()) { 8604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << m_bDelay; 8615ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann return true; 8625ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann } 8635ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann if (!m_pFormFillEnv->GetPermissions(FPDFPERM_MODIFY)) { 8645ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); 8655ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann return false; 8665ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann } 8675ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann vp >> m_bDelay; 8685ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann if (m_bDelay) { 8695ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann m_DelayData.clear(); 8705ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann return true; 8714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 8725ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann std::list<std::unique_ptr<CJS_DelayData>> DelayDataToProcess; 8735ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann DelayDataToProcess.swap(m_DelayData); 8745ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann for (const auto& pData : DelayDataToProcess) 8755ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann Field::DoDelay(m_pFormFillEnv.Get(), pData.get()); 8765ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann 8774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 8784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 8794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8805ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::keywords(CJS_Runtime* pRuntime, 8814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 8824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 8835ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann return getPropertyInternal(pRuntime, vp, "Keywords", sError); 8844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 8854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8865ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::modDate(CJS_Runtime* pRuntime, 8874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 8884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 8895ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann return getPropertyInternal(pRuntime, vp, "ModDate", sError); 8904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 8914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8925ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::producer(CJS_Runtime* pRuntime, 8934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 8944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 8955ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann return getPropertyInternal(pRuntime, vp, "Producer", sError); 8964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 8974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8985ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::subject(CJS_Runtime* pRuntime, 8994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 9004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 9015ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann return getPropertyInternal(pRuntime, vp, "Subject", sError); 9024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9045ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::title(CJS_Runtime* pRuntime, 9054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 9064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 9074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv || !m_pFormFillEnv->GetUnderlyingDocument()) { 9084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 9094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 9104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9115ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann return getPropertyInternal(pRuntime, vp, "Title", sError); 9124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9145ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::numPages(CJS_Runtime* pRuntime, 9154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 9164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 9174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsSetting()) { 9184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSREADONLY); 9194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 9204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 9224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 9234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 9244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << m_pFormFillEnv->GetPageCount(); 9264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 9274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9295ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::external(CJS_Runtime* pRuntime, 9304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 9314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 9324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // In Chrome case, should always return true. 9334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsGetting()) { 9344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << true; 9354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 9374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9395ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::filesize(CJS_Runtime* pRuntime, 9404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 9414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 9424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsSetting()) { 9434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSREADONLY); 9444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 9454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << 0; 9474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 9484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9505ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::mouseX(CJS_Runtime* pRuntime, 9514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 9524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 9534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 9544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9565ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::mouseY(CJS_Runtime* pRuntime, 9574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 9584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 9594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 9604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9625ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::URL(CJS_Runtime* pRuntime, 9635ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann CJS_PropValue& vp, 9645ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann CFX_WideString& sError) { 9654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsSetting()) { 9664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSREADONLY); 9674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 9684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 9704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 9714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 9724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << m_pFormFillEnv->JS_docGetFilePath(); 9744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 9754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9775ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::baseURL(CJS_Runtime* pRuntime, 9784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 9794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 9804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsGetting()) { 9814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << m_cwBaseURL; 9824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 9834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp >> m_cwBaseURL; 9844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 9864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9885ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::calculate(CJS_Runtime* pRuntime, 9894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 9904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 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 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); 9964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsGetting()) { 9974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << !!pInterForm->IsCalculateEnabled(); 9985ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann return true; 9994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10005ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann bool bCalculate; 10015ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann vp >> bCalculate; 10025ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pInterForm->EnableCalculate(bCalculate); 10034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 10044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 10054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10065ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::documentFileName(CJS_Runtime* pRuntime, 10074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 10084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 10094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsSetting()) { 10104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSREADONLY); 10114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 10124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 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 CFX_WideString wsFilePath = m_pFormFillEnv->JS_docGetFilePath(); 10184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t i = wsFilePath.GetLength() - 1; 10194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (; i >= 0; i--) { 10204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (wsFilePath.GetAt(i) == L'\\' || wsFilePath.GetAt(i) == L'/') 10214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 10224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (i >= 0 && i < wsFilePath.GetLength() - 1) { 10244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << (wsFilePath.GetBuffer(wsFilePath.GetLength()) + i + 1); 10254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 10264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << L""; 10274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 10294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 10304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10315ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::path(CJS_Runtime* pRuntime, 10324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 10334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 10344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsSetting()) { 10354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSREADONLY); 10364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 10374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 10394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 10404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 10414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << app::SysPathToPDFPath(m_pFormFillEnv->JS_docGetFilePath()); 10434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 10444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 10454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10465ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::pageWindowRect(CJS_Runtime* pRuntime, 10474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 10484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 10494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 10504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 10514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10525ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::layout(CJS_Runtime* pRuntime, 10534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 10544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 10554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 10564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 10574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10585ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::addLink(CJS_Runtime* pRuntime, 10594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 10604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 10614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 10624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 10634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 10644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10655ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::closeDoc(CJS_Runtime* pRuntime, 10664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 10674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 10684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 10694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 10704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 10714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10725ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::getPageBox(CJS_Runtime* pRuntime, 10734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 10744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 10754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 10764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 10774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 10784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10795ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::getAnnot(CJS_Runtime* pRuntime, 10804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 10814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 10824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 10834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() != 2) { 10844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); 10854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 10864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 10884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 10894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 10904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nPageNo = params[0].ToInt(pRuntime); 10924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString swAnnotName = params[1].ToCFXWideString(pRuntime); 10934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_PageView* pPageView = m_pFormFillEnv->GetPageView(nPageNo); 10944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pPageView) 10954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 10964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_AnnotIteration annotIteration(pPageView, false); 10984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_BAAnnot* pSDKBAAnnot = nullptr; 10994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (const auto& pSDKAnnotCur : annotIteration) { 11004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_BAAnnot* pBAAnnot = 11014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CPDFSDK_BAAnnot*>(pSDKAnnotCur.Get()); 11024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pBAAnnot && pBAAnnot->GetAnnotName() == swAnnotName) { 11034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pSDKBAAnnot = pBAAnnot; 11044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 11054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pSDKBAAnnot) 11084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 11094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Object> pObj = 11114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->NewFxDynamicObj(CJS_Annot::g_nObjDefnID); 11124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pObj.IsEmpty()) 11134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 11144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Annot* pJS_Annot = 11164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CJS_Annot*>(pRuntime->GetObjectPrivate(pObj)); 11174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Annot* pAnnot = static_cast<Annot*>(pJS_Annot->GetEmbedObject()); 11184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pAnnot->SetSDKAnnot(pSDKBAAnnot); 11194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vRet = CJS_Value(pRuntime, pJS_Annot); 11204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 11214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 11224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11235ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::getAnnots(CJS_Runtime* pRuntime, 11244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 11254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 11264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 11274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 11284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 11294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 11304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // TODO(tonikitoo): Add support supported parameters as per 11324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // the PDF spec. 11334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nPageNo = m_pFormFillEnv->GetPageCount(); 11354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Array annots; 11364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int i = 0; i < nPageNo; ++i) { 11384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_PageView* pPageView = m_pFormFillEnv->GetPageView(i); 11394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pPageView) 11404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 11414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_AnnotIteration annotIteration(pPageView, false); 11434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (const auto& pSDKAnnotCur : annotIteration) { 11444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pSDKAnnotCur) { 11454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 11464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 11474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Object> pObj = 11494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->NewFxDynamicObj(CJS_Annot::g_nObjDefnID); 11504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pObj.IsEmpty()) 11514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 11524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Annot* pJS_Annot = 11544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CJS_Annot*>(pRuntime->GetObjectPrivate(pObj)); 11554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Annot* pAnnot = static_cast<Annot*>(pJS_Annot->GetEmbedObject()); 11564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pAnnot->SetSDKAnnot(static_cast<CPDFSDK_BAAnnot*>(pSDKAnnotCur.Get())); 11574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann annots.SetElement(pRuntime, i, CJS_Value(pRuntime, pJS_Annot)); 11584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vRet = CJS_Value(pRuntime, annots); 11614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 11624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 11634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11645ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::getAnnot3D(CJS_Runtime* pRuntime, 11654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 11664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 11674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 11685ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann vRet.SetNull(pRuntime); 11694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 11704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 11714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11725ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::getAnnots3D(CJS_Runtime* pRuntime, 11734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 11744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 11754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 11764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 11774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 11784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11795ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::getOCGs(CJS_Runtime* pRuntime, 11804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 11814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 11824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 11834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 11844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 11854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11865ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::getLinks(CJS_Runtime* pRuntime, 11874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 11884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 11894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 11904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 11914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 11924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool Document::IsEnclosedInRect(CFX_FloatRect rect, CFX_FloatRect LinkRect) { 11944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return (rect.left <= LinkRect.left && rect.top <= LinkRect.top && 11954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann rect.right >= LinkRect.right && rect.bottom >= LinkRect.bottom); 11964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 11974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11985ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::addIcon(CJS_Runtime* pRuntime, 11994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 12004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 12014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 12024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() != 2) { 12034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); 12044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 12054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 12064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString swIconName = params[0].ToCFXWideString(pRuntime); 12084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params[1].GetType() != CJS_Value::VT_object) { 12094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSTYPEERROR); 12104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 12114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 12124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Object> pJSIcon = params[1].ToV8Object(pRuntime); 12144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pRuntime->GetObjDefnID(pJSIcon) != CJS_Icon::g_nObjDefnID) { 12154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSTYPEERROR); 12164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 12174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 12184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12195ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann if (!params[1].ToCJSObject(pRuntime)->GetEmbedObject()) { 12204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSTYPEERROR); 12214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 12224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 12234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12245ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann m_IconNames.push_back(swIconName); 12254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 12264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 12274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12285ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::icons(CJS_Runtime* pRuntime, 12294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 12304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 12314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (vp.IsSetting()) { 12324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSREADONLY); 12334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 12344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 12355ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann if (m_IconNames.empty()) { 12364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp.GetJSValue()->SetNull(pRuntime); 12374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 12384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 12394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Array Icons; 12414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int i = 0; 12425ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann for (const auto& name : m_IconNames) { 12434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Object> pObj = 12444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->NewFxDynamicObj(CJS_Icon::g_nObjDefnID); 12454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pObj.IsEmpty()) 12464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 12474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Icon* pJS_Icon = 12494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CJS_Icon*>(pRuntime->GetObjectPrivate(pObj)); 12504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Icon* pIcon = static_cast<Icon*>(pJS_Icon->GetEmbedObject()); 12515ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pIcon->SetIconName(name); 12524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Icons.SetElement(pRuntime, i++, CJS_Value(pRuntime, pJS_Icon)); 12534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 12544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << Icons; 12564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 12574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 12584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12595ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::getIcon(CJS_Runtime* pRuntime, 12604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 12614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 12624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 12634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() != 1) { 12644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); 12654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 12664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 12674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString swIconName = params[0].ToCFXWideString(pRuntime); 12695ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann auto it = std::find(m_IconNames.begin(), m_IconNames.end(), swIconName); 12705ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann if (it == m_IconNames.end()) 12715ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann return false; 12724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12735ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann v8::Local<v8::Object> pObj = 12745ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pRuntime->NewFxDynamicObj(CJS_Icon::g_nObjDefnID); 12755ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann if (pObj.IsEmpty()) 12765ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann return false; 12774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12785ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann CJS_Icon* pJS_Icon = static_cast<CJS_Icon*>(pRuntime->GetObjectPrivate(pObj)); 12795ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann Icon* pIcon = static_cast<Icon*>(pJS_Icon->GetEmbedObject()); 12805ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pIcon->SetIconName(*it); 12815ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann vRet = CJS_Value(pRuntime, pJS_Icon); 12825ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann return true; 12834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 12844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12855ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::removeIcon(CJS_Runtime* pRuntime, 12864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 12874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 12884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 12894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, no supported. 12904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 12914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 12924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12935ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::createDataObject(CJS_Runtime* pRuntime, 12944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 12954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 12964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 12974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not implemented. 12984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 12994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 13004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13015ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::media(CJS_Runtime* pRuntime, 13024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 13034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 13044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 13054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 13064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13075ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::calculateNow(CJS_Runtime* pRuntime, 13084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 13094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 13104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 13114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 13124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 13134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 13144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!(m_pFormFillEnv->GetPermissions(FPDFPERM_MODIFY) || 13164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->GetPermissions(FPDFPERM_ANNOT_FORM) || 13174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->GetPermissions(FPDFPERM_FILL_FORM))) { 13184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); 13194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 13204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->GetInterForm()->OnCalculate(); 13224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 13234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 13244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13255ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::Collab(CJS_Runtime* pRuntime, 13264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 13274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 13284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 13294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 13304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13315ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::getPageNthWord(CJS_Runtime* pRuntime, 13324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 13334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 13344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 13354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 13364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 13374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 13384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) { 13404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); 13414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 13424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // TODO(tsepez): check maximum allowable params. 13454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nPageNo = params.size() > 0 ? params[0].ToInt(pRuntime) : 0; 13474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nWordNo = params.size() > 1 ? params[1].ToInt(pRuntime) : 0; 13484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bStrip = params.size() > 2 ? params[2].ToBool(pRuntime) : true; 13494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Document* pDocument = m_pFormFillEnv->GetPDFDocument(); 13514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pDocument) 13524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 13534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) { 13554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSVALUEERROR); 13564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 13574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo); 13604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pPageDict) 13614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 13624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Page page(pDocument, pPageDict, true); 13644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann page.ParseContent(); 13654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nWords = 0; 13674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString swRet; 13684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (auto& pPageObj : *page.GetPageObjectList()) { 13694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pPageObj->IsText()) { 13704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_TextObject* pTextObj = pPageObj->AsText(); 13714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nObjWords = CountWords(pTextObj); 13724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nWords + nObjWords >= nWordNo) { 13734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann swRet = GetObjWordStr(pTextObj, nWordNo - nWords); 13744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 13754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nWords += nObjWords; 13774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bStrip) { 13814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann swRet.TrimLeft(); 13824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann swRet.TrimRight(); 13834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vRet = CJS_Value(pRuntime, swRet.c_str()); 13864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 13874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 13884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13895ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::getPageNthWordQuads(CJS_Runtime* pRuntime, 13904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 13914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 13924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 13934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 13944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 13954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 13964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) { 13984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 13994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 14004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 14024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 14034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14045ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::getPageNumWords(CJS_Runtime* pRuntime, 14054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 14064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 14074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 14084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 14094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 14104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 14114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) { 14134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); 14144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 14154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nPageNo = params.size() > 0 ? params[0].ToInt(pRuntime) : 0; 14174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Document* pDocument = m_pFormFillEnv->GetPDFDocument(); 14184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) { 14194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSVALUEERROR); 14204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 14214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo); 14244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pPageDict) 14254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 14264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Page page(pDocument, pPageDict, true); 14284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann page.ParseContent(); 14294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nWords = 0; 14314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (auto& pPageObj : *page.GetPageObjectList()) { 14324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pPageObj->IsText()) 14334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nWords += CountWords(pPageObj->AsText()); 14344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vRet = CJS_Value(pRuntime, nWords); 14374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 14384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 14394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14405ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::getPrintParams(CJS_Runtime* pRuntime, 14414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 14424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 14434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 14444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann v8::Local<v8::Object> pRetObj = 14454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->NewFxDynamicObj(CJS_PrintParamsObj::g_nObjDefnID); 14465ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann if (pRetObj.IsEmpty()) 14475ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann return false; 14484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Not implemented yet. 14504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vRet = CJS_Value(pRuntime, pRetObj); 14524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 14534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 14544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#define ISLATINWORD(u) (u != 0x20 && u <= 0x28FF) 14564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint Document::CountWords(CPDF_TextObject* pTextObj) { 14584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pTextObj) 14594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return 0; 14604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nWords = 0; 14624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Font* pFont = pTextObj->GetFont(); 14644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pFont) 14654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return 0; 14664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bIsLatin = false; 14684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int i = 0, sz = pTextObj->CountChars(); i < sz; i++) { 14704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t charcode = CPDF_Font::kInvalidCharCode; 14714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT kerning; 14724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14735ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pTextObj->GetCharInfo(i, &charcode, &kerning); 14744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString swUnicode = pFont->UnicodeFromCharCode(charcode); 14754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint16_t unicode = 0; 14774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (swUnicode.GetLength() > 0) 14784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann unicode = swUnicode[0]; 14794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (ISLATINWORD(unicode) && bIsLatin) 14814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 14824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bIsLatin = ISLATINWORD(unicode); 14844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (unicode != 0x20) 14854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nWords++; 14864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nWords; 14894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 14904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCFX_WideString Document::GetObjWordStr(CPDF_TextObject* pTextObj, 14924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nWordIndex) { 14934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString swRet; 14944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Font* pFont = pTextObj->GetFont(); 14964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pFont) 14974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return L""; 14984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nWords = 0; 15004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bIsLatin = false; 15014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int i = 0, sz = pTextObj->CountChars(); i < sz; i++) { 15034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t charcode = CPDF_Font::kInvalidCharCode; 15044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT kerning; 15054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15065ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pTextObj->GetCharInfo(i, &charcode, &kerning); 15074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString swUnicode = pFont->UnicodeFromCharCode(charcode); 15084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint16_t unicode = 0; 15104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (swUnicode.GetLength() > 0) 15114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann unicode = swUnicode[0]; 15124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (ISLATINWORD(unicode) && bIsLatin) { 15144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 15154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bIsLatin = ISLATINWORD(unicode); 15164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (unicode != 0x20) 15174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nWords++; 15184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 15194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nWords - 1 == nWordIndex) 15214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann swRet += unicode; 15224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 15234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return swRet; 15254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 15264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15275ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::zoom(CJS_Runtime* pRuntime, 15284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 15294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 15304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 15314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 15324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann/** 15344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann(none, NoVary) 15354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann(fitP, FitPage) 15364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann(fitW, FitWidth) 15374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann(fitH, FitHeight) 15384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann(fitV, FitVisibleWidth) 15394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann(pref, Preferred) 15404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann(refW, ReflowWidth) 15414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann*/ 15424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15435ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::zoomType(CJS_Runtime* pRuntime, 15444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 15454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 15464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 15474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 15484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15495ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::deletePages(CJS_Runtime* pRuntime, 15504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 15514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 15524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 15534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, no supported. 15544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 15554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 15564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15575ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::extractPages(CJS_Runtime* pRuntime, 15584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 15594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 15604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 15614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not supported. 15624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 15634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 15644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15655ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::insertPages(CJS_Runtime* pRuntime, 15664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 15674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 15684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 15694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not supported. 15704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 15714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 15724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15735ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::replacePages(CJS_Runtime* pRuntime, 15744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 15754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 15764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 15774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not supported. 15784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 15794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 15804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15815ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::getURL(CJS_Runtime* pRuntime, 15824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 15834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 15844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 15854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Unsafe, not supported. 15864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 15874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 15884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15895ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmannbool Document::gotoNamedDest(CJS_Runtime* pRuntime, 15904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const std::vector<CJS_Value>& params, 15914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_Value& vRet, 15924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 15934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (params.size() != 1) { 15944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); 15954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 15964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 15974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pFormFillEnv) { 15984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSBADOBJECT); 15994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 16004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 16014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wideName = params[0].ToCFXWideString(pRuntime); 16024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString utf8Name = wideName.UTF8Encode(); 16034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Document* pDocument = m_pFormFillEnv->GetPDFDocument(); 16044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pDocument) 16054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 16064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_NameTree nameTree(pDocument, "Dests"); 16084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Array* destArray = nameTree.LookupNamedDest(pDocument, utf8Name); 16094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!destArray) 16104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 16114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Dest dest(destArray); 16134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CPDF_Array* arrayObject = ToArray(dest.GetObject()); 16144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::unique_ptr<float[]> scrollPositionArray; 16164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int scrollPositionArraySize = 0; 16174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (arrayObject) { 16194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann scrollPositionArray.reset(new float[arrayObject->GetCount()]); 16204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int j = 0; 16214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (size_t i = 2; i < arrayObject->GetCount(); i++) 16224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann scrollPositionArray[j++] = arrayObject->GetFloatAt(i); 16234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann scrollPositionArraySize = j; 16244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 16254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->BeginBlock(); 16274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFormFillEnv->DoGoToAction(dest.GetPageIndex(pDocument), dest.GetZoomMode(), 16284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann scrollPositionArray.get(), 16294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann scrollPositionArraySize); 16304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->EndBlock(); 16314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 16334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 16344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid Document::AddDelayData(CJS_DelayData* pData) { 16364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_DelayData.push_back(std::unique_ptr<CJS_DelayData>(pData)); 16374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 16384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid Document::DoFieldDelay(const CFX_WideString& sFieldName, 16404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int nControlIndex) { 16414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::vector<std::unique_ptr<CJS_DelayData>> DelayDataForFieldAndControlIndex; 16424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann auto iter = m_DelayData.begin(); 16434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (iter != m_DelayData.end()) { 16444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann auto old = iter++; 16454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if ((*old)->sFieldName == sFieldName && 16464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (*old)->nControlIndex == nControlIndex) { 16474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann DelayDataForFieldAndControlIndex.push_back(std::move(*old)); 16484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_DelayData.erase(old); 16494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 16504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 16514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (const auto& pData : DelayDataForFieldAndControlIndex) 16534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Field::DoDelay(m_pFormFillEnv.Get(), pData.get()); 16544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 16554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCJS_Document* Document::GetCJSDoc() const { 16574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return static_cast<CJS_Document*>(m_pJSObject); 16584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1659