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 933357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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" 3433357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 4033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. MoltmannJSConstSpec CJS_PrintParamsObj::ConstSpecs[] = {{0, JSConstSpec::Number, 0, 0}}; 414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. MoltmannJSPropertySpec CJS_PrintParamsObj::PropertySpecs[] = {{0, 0, 0}}; 434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4433357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 6333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. MoltmannJSConstSpec CJS_Document::ConstSpecs[] = {{0, JSConstSpec::Number, 0, 0}}; 6433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann 6533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. MoltmannJSPropertySpec CJS_Document::PropertySpecs[] = { 6633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"ADBE", get_ADBE_static, set_ADBE_static}, 6733357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"author", get_author_static, set_author_static}, 6833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"baseURL", get_baseURL_static, set_baseURL_static}, 6933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"bookmarkRoot", get_bookmarkRoot_static, set_bookmarkRoot_static}, 7033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"calculate", get_calculate_static, set_calculate_static}, 7133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"Collab", get_Collab_static, set_Collab_static}, 7233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"creationDate", get_creationDate_static, set_creationDate_static}, 7333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"creator", get_creator_static, set_creator_static}, 7433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"delay", get_delay_static, set_delay_static}, 7533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"dirty", get_dirty_static, set_dirty_static}, 7633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"documentFileName", get_documentFileName_static, 7733357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann set_documentFileName_static}, 7833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"external", get_external_static, set_external_static}, 7933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"filesize", get_filesize_static, set_filesize_static}, 8033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"icons", get_icons_static, set_icons_static}, 8133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"info", get_info_static, set_info_static}, 8233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"keywords", get_keywords_static, set_keywords_static}, 8333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"layout", get_layout_static, set_layout_static}, 8433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"media", get_media_static, set_media_static}, 8533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"modDate", get_modDate_static, set_modDate_static}, 8633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"mouseX", get_mouseX_static, set_mouseX_static}, 8733357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"mouseY", get_mouseY_static, set_mouseY_static}, 8833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"numFields", get_numFields_static, set_numFields_static}, 8933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"numPages", get_numPages_static, set_numPages_static}, 9033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"pageNum", get_pageNum_static, set_pageNum_static}, 9133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"pageWindowRect", get_pageWindowRect_static, set_pageWindowRect_static}, 9233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"path", get_path_static, set_path_static}, 9333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"producer", get_producer_static, set_producer_static}, 9433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"subject", get_subject_static, set_subject_static}, 9533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"title", get_title_static, set_title_static}, 9633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"URL", get_URL_static, set_URL_static}, 9733357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"zoom", get_zoom_static, set_zoom_static}, 9833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"zoomType", get_zoomType_static, set_zoomType_static}, 9933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {0, 0, 0}}; 10033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann 10133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. MoltmannJSMethodSpec CJS_Document::MethodSpecs[] = { 10233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"addAnnot", addAnnot_static}, 10333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"addField", addField_static}, 10433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"addLink", addLink_static}, 10533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"addIcon", addIcon_static}, 10633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"calculateNow", calculateNow_static}, 10733357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"closeDoc", closeDoc_static}, 10833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"createDataObject", createDataObject_static}, 10933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"deletePages", deletePages_static}, 11033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"exportAsText", exportAsText_static}, 11133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"exportAsFDF", exportAsFDF_static}, 11233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"exportAsXFDF", exportAsXFDF_static}, 11333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"extractPages", extractPages_static}, 11433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"getAnnot", getAnnot_static}, 11533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"getAnnots", getAnnots_static}, 11633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"getAnnot3D", getAnnot3D_static}, 11733357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"getAnnots3D", getAnnots3D_static}, 11833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"getField", getField_static}, 11933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"getIcon", getIcon_static}, 12033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"getLinks", getLinks_static}, 12133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"getNthFieldName", getNthFieldName_static}, 12233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"getOCGs", getOCGs_static}, 12333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"getPageBox", getPageBox_static}, 12433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"getPageNthWord", getPageNthWord_static}, 12533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"getPageNthWordQuads", getPageNthWordQuads_static}, 12633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"getPageNumWords", getPageNumWords_static}, 12733357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"getPrintParams", getPrintParams_static}, 12833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"getURL", getURL_static}, 12933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"gotoNamedDest", gotoNamedDest_static}, 13033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"importAnFDF", importAnFDF_static}, 13133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"importAnXFDF", importAnXFDF_static}, 13233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"importTextData", importTextData_static}, 13333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"insertPages", insertPages_static}, 13433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"mailForm", mailForm_static}, 13533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"print", print_static}, 13633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"removeField", removeField_static}, 13733357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"replacePages", replacePages_static}, 13833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"resetForm", resetForm_static}, 13933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"removeIcon", removeIcon_static}, 14033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"saveAs", saveAs_static}, 14133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"submitForm", submitForm_static}, 14233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"syncAnnotScan", syncAnnotScan_static}, 14333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann {"mailDoc", mailDoc_static}, 14433357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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. 16433357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 18133357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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(); 19033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return true; 1914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 19233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann bool bChanged = false; 19333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann vp >> bChanged; 19433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann if (bChanged) 19533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann m_pFormFillEnv->SetChangeMark(); 19633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann else 19733357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann m_pFormFillEnv->ClearChangeMark(); 19833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann 1994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 2004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 20233357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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()) 20633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann vp.GetJSValue()->SetNull(pRuntime); 2074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 2094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 21133357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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()) { 21933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann if (CPDFSDK_PageView* pPageView = m_pFormFillEnv->GetCurrentView()) 2204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann vp << pPageView->GetPageIndex(); 22133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return true; 2224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 22333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann int iPageCount = m_pFormFillEnv->GetPageCount(); 22433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann int iPageNum = 0; 22533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann vp >> iPageNum; 22633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann if (iPageNum >= 0 && iPageNum < iPageCount) 22733357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann m_pFormFillEnv->JS_docgotoPage(iPageNum); 22833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann else if (iPageNum >= iPageCount) 22933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann m_pFormFillEnv->JS_docgotoPage(iPageCount - 1); 23033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann else if (iPageNum < 0) 23133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann m_pFormFillEnv->JS_docgotoPage(0); 2324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 2344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 23633357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 24433357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 25233357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 26033357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 26833357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 28133357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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); 30333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann if (pFieldObj.IsEmpty()) 30433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return false; 30533357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 31533357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 34233357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 35033357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 35833357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 36933357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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(); 39533357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 40333357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 47133357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 53033357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 58133357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 58933357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 59633357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 } 60933357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 67833357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 68433357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 73933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmannbool Document::author(CJS_Runtime* pRuntime, 7404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 7414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 74233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return getPropertyInternal(pRuntime, vp, "Author", sError); 7434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 7444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 74533357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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); 77233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"Author", 77333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pRuntime->NewString(cwAuthor.AsStringC())); 77433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"Title", 77533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pRuntime->NewString(cwTitle.AsStringC())); 77633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"Subject", 77733357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pRuntime->NewString(cwSubject.AsStringC())); 7784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"Keywords", 77933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pRuntime->NewString(cwKeywords.AsStringC())); 78033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"Creator", 78133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pRuntime->NewString(cwCreator.AsStringC())); 7824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"Producer", 78333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pRuntime->NewString(cwProducer.AsStringC())); 7844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"CreationDate", 78533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pRuntime->NewString(cwCreationDate.AsStringC())); 78633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"ModDate", 78733357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pRuntime->NewString(cwModDate.AsStringC())); 78833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pRuntime->PutObjectProperty(pObj, L"Trapped", 78933357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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( 79833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pObj, wsKey, 79933357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 81233357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 84033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmannbool Document::creationDate(CJS_Runtime* pRuntime, 8414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 8424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 84333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return getPropertyInternal(pRuntime, vp, "CreationDate", sError); 8444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 8454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 84633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmannbool Document::creator(CJS_Runtime* pRuntime, 8474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 8484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 84933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return getPropertyInternal(pRuntime, vp, "Creator", sError); 8504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 8514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 85233357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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; 86133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return true; 86233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann } 86333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann if (!m_pFormFillEnv->GetPermissions(FPDFPERM_MODIFY)) { 86433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann sError = JSGetStringFromID(IDS_STRING_JSNOPERMISSION); 86533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return false; 86633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann } 86733357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann vp >> m_bDelay; 86833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann if (m_bDelay) { 86933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann m_DelayData.clear(); 87033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return true; 8714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 87233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann std::list<std::unique_ptr<CJS_DelayData>> DelayDataToProcess; 87333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann DelayDataToProcess.swap(m_DelayData); 87433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann for (const auto& pData : DelayDataToProcess) 87533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann Field::DoDelay(m_pFormFillEnv.Get(), pData.get()); 87633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann 8774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 8784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 8794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 88033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmannbool Document::keywords(CJS_Runtime* pRuntime, 8814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 8824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 88333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return getPropertyInternal(pRuntime, vp, "Keywords", sError); 8844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 8854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 88633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmannbool Document::modDate(CJS_Runtime* pRuntime, 8874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 8884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 88933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return getPropertyInternal(pRuntime, vp, "ModDate", sError); 8904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 8914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 89233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmannbool Document::producer(CJS_Runtime* pRuntime, 8934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 8944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 89533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return getPropertyInternal(pRuntime, vp, "Producer", sError); 8964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 8974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 89833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmannbool Document::subject(CJS_Runtime* pRuntime, 8994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CJS_PropValue& vp, 9004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& sError) { 90133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return getPropertyInternal(pRuntime, vp, "Subject", sError); 9024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 90433357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 } 91133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return getPropertyInternal(pRuntime, vp, "Title", sError); 9124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 91433357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 92933357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 93933357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 95033357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 95633357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 96233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmannbool Document::URL(CJS_Runtime* pRuntime, 96333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann CJS_PropValue& vp, 96433357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 97733357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 98833357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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(); 99833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return true; 9994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 100033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann bool bCalculate; 100133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann vp >> bCalculate; 100233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pInterForm->EnableCalculate(bCalculate); 10034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 10044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 10054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 100633357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 103133357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 104633357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 105233357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 105833357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 106533357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 107233357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 107933357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 112333357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 116433357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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) { 116833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann vRet.SetNull(pRuntime); 11694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 11704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 11714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 117233357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 117933357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 118633357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 119833357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 121933357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 122433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann m_IconNames.push_back(swIconName); 12254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 12264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 12274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 122833357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 } 123533357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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; 124233357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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()); 125133357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 125933357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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); 126933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann auto it = std::find(m_IconNames.begin(), m_IconNames.end(), swIconName); 127033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann if (it == m_IconNames.end()) 127133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return false; 12724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 127333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann v8::Local<v8::Object> pObj = 127433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pRuntime->NewFxDynamicObj(CJS_Icon::g_nObjDefnID); 127533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann if (pObj.IsEmpty()) 127633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return false; 12774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 127833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann CJS_Icon* pJS_Icon = static_cast<CJS_Icon*>(pRuntime->GetObjectPrivate(pObj)); 127933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann Icon* pIcon = static_cast<Icon*>(pJS_Icon->GetEmbedObject()); 128033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pIcon->SetIconName(*it); 128133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann vRet = CJS_Value(pRuntime, pJS_Icon); 128233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return true; 12834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 12844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 128533357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 129333357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 130133357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 130733357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 132533357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 133133357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 138933357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 140433357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 144033357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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); 144633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann if (pRetObj.IsEmpty()) 144733357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 147333357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 150633357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 152733357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 154333357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 154933357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 155733357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 156533357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 157333357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 158133357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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 158933357cad1fd1321a2b38d2963e2585f27ce980a2Philip 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