OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "Document.h" | 7 #include "Document.h" |
8 | 8 |
9 #include "Field.h" | 9 #include "Field.h" |
10 #include "Icon.h" | 10 #include "Icon.h" |
11 #include "JS_Context.h" | 11 #include "JS_Context.h" |
12 #include "JS_Define.h" | 12 #include "JS_Define.h" |
13 #include "JS_EventHandler.h" | 13 #include "JS_EventHandler.h" |
14 #include "JS_Object.h" | 14 #include "JS_Object.h" |
15 #include "JS_Runtime.h" | 15 #include "JS_Runtime.h" |
16 #include "JS_Value.h" | 16 #include "JS_Value.h" |
17 #include "app.h" | 17 #include "app.h" |
18 #include "fpdfsdk/include/fsdk_mgr.h" // For CPDFDoc_Environment. | 18 #include "fpdfsdk/include/fsdk_mgr.h" // For CPDFDoc_Environment. |
19 #include "fpdfsdk/include/javascript/IJavaScript.h" | 19 #include "fpdfsdk/include/javascript/IJavaScript.h" |
20 #include "resource.h" | 20 #include "resource.h" |
21 #include "third_party/base/numerics/safe_math.h" | 21 #include "third_party/base/numerics/safe_math.h" |
22 | 22 |
23 static v8::Isolate* GetIsolate(IJS_Context* cc) { | 23 static v8::Isolate* GetIsolate(IJS_Context* cc) { |
24 CJS_Context* pContext = (CJS_Context*)cc; | 24 CJS_Context* pContext = (CJS_Context*)cc; |
25 ASSERT(pContext != NULL); | |
26 | |
27 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | 25 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
28 ASSERT(pRuntime != NULL); | |
29 | |
30 return pRuntime->GetIsolate(); | 26 return pRuntime->GetIsolate(); |
31 } | 27 } |
32 | 28 |
33 BEGIN_JS_STATIC_CONST(CJS_PrintParamsObj) | 29 BEGIN_JS_STATIC_CONST(CJS_PrintParamsObj) |
34 END_JS_STATIC_CONST() | 30 END_JS_STATIC_CONST() |
35 | 31 |
36 BEGIN_JS_STATIC_PROP(CJS_PrintParamsObj) | 32 BEGIN_JS_STATIC_PROP(CJS_PrintParamsObj) |
37 END_JS_STATIC_PROP() | 33 END_JS_STATIC_PROP() |
38 | 34 |
39 BEGIN_JS_STATIC_METHOD(CJS_PrintParamsObj) | 35 BEGIN_JS_STATIC_METHOD(CJS_PrintParamsObj) |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 } | 183 } |
188 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); | 184 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); |
189 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); | 185 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); |
190 vp << (int)pPDFForm->CountFields(); | 186 vp << (int)pPDFForm->CountFields(); |
191 return TRUE; | 187 return TRUE; |
192 } | 188 } |
193 | 189 |
194 FX_BOOL Document::dirty(IJS_Context* cc, | 190 FX_BOOL Document::dirty(IJS_Context* cc, |
195 CJS_PropValue& vp, | 191 CJS_PropValue& vp, |
196 CFX_WideString& sError) { | 192 CFX_WideString& sError) { |
197 ASSERT(m_pDocument != NULL); | |
198 | |
199 if (vp.IsGetting()) { | 193 if (vp.IsGetting()) { |
200 if (m_pDocument->GetChangeMark()) | 194 if (m_pDocument->GetChangeMark()) |
201 vp << true; | 195 vp << true; |
202 else | 196 else |
203 vp << false; | 197 vp << false; |
204 } else { | 198 } else { |
205 bool bChanged = false; | 199 bool bChanged = false; |
206 | 200 |
207 vp >> bChanged; | 201 vp >> bChanged; |
208 | 202 |
209 if (bChanged) | 203 if (bChanged) |
210 m_pDocument->SetChangeMark(); | 204 m_pDocument->SetChangeMark(); |
211 else | 205 else |
212 m_pDocument->ClearChangeMark(); | 206 m_pDocument->ClearChangeMark(); |
213 } | 207 } |
214 | 208 |
215 return TRUE; | 209 return TRUE; |
216 } | 210 } |
217 | 211 |
218 FX_BOOL Document::ADBE(IJS_Context* cc, | 212 FX_BOOL Document::ADBE(IJS_Context* cc, |
219 CJS_PropValue& vp, | 213 CJS_PropValue& vp, |
220 CFX_WideString& sError) { | 214 CFX_WideString& sError) { |
221 ASSERT(m_pDocument != NULL); | |
222 | |
223 if (vp.IsGetting()) { | 215 if (vp.IsGetting()) { |
224 vp.SetNull(); | 216 vp.SetNull(); |
225 } else { | 217 } else { |
226 } | 218 } |
227 | 219 |
228 return TRUE; | 220 return TRUE; |
229 } | 221 } |
230 | 222 |
231 FX_BOOL Document::pageNum(IJS_Context* cc, | 223 FX_BOOL Document::pageNum(IJS_Context* cc, |
232 CJS_PropValue& vp, | 224 CJS_PropValue& vp, |
233 CFX_WideString& sError) { | 225 CFX_WideString& sError) { |
234 ASSERT(m_pDocument != NULL); | |
235 | |
236 if (vp.IsGetting()) { | 226 if (vp.IsGetting()) { |
237 if (CPDFSDK_PageView* pPageView = m_pDocument->GetCurrentView()) { | 227 if (CPDFSDK_PageView* pPageView = m_pDocument->GetCurrentView()) { |
238 vp << pPageView->GetPageIndex(); | 228 vp << pPageView->GetPageIndex(); |
239 } | 229 } |
240 } else { | 230 } else { |
241 int iPageCount = m_pDocument->GetPageCount(); | 231 int iPageCount = m_pDocument->GetPageCount(); |
242 int iPageNum = 0; | 232 int iPageNum = 0; |
243 vp >> iPageNum; | 233 vp >> iPageNum; |
244 | 234 |
245 CPDFDoc_Environment* pEnv = m_pDocument->GetEnv(); | 235 CPDFDoc_Environment* pEnv = m_pDocument->GetEnv(); |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
387 // all recipients. | 377 // all recipients. |
388 // comment: need reader supports | 378 // comment: need reader supports |
389 // note: | 379 // note: |
390 // int CPDFSDK_Document::mailForm(FX_BOOL bUI,String cto,string ccc,string | 380 // int CPDFSDK_Document::mailForm(FX_BOOL bUI,String cto,string ccc,string |
391 // cbcc,string cSubject,string cms); | 381 // cbcc,string cSubject,string cms); |
392 | 382 |
393 FX_BOOL Document::mailForm(IJS_Context* cc, | 383 FX_BOOL Document::mailForm(IJS_Context* cc, |
394 const std::vector<CJS_Value>& params, | 384 const std::vector<CJS_Value>& params, |
395 CJS_Value& vRet, | 385 CJS_Value& vRet, |
396 CFX_WideString& sError) { | 386 CFX_WideString& sError) { |
397 ASSERT(m_pDocument != NULL); | |
398 | |
399 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) | 387 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) |
400 return FALSE; | 388 return FALSE; |
401 | 389 |
402 int iLength = params.size(); | 390 int iLength = params.size(); |
403 | 391 |
404 FX_BOOL bUI = iLength > 0 ? params[0].ToBool() : TRUE; | 392 FX_BOOL bUI = iLength > 0 ? params[0].ToBool() : TRUE; |
405 CFX_WideString cTo = iLength > 1 ? params[1].ToCFXWideString() : L""; | 393 CFX_WideString cTo = iLength > 1 ? params[1].ToCFXWideString() : L""; |
406 CFX_WideString cCc = iLength > 2 ? params[2].ToCFXWideString() : L""; | 394 CFX_WideString cCc = iLength > 2 ? params[2].ToCFXWideString() : L""; |
407 CFX_WideString cBcc = iLength > 3 ? params[3].ToCFXWideString() : L""; | 395 CFX_WideString cBcc = iLength > 3 ? params[3].ToCFXWideString() : L""; |
408 CFX_WideString cSubject = iLength > 4 ? params[4].ToCFXWideString() : L""; | 396 CFX_WideString cSubject = iLength > 4 ? params[4].ToCFXWideString() : L""; |
409 CFX_WideString cMsg = iLength > 5 ? params[5].ToCFXWideString() : L""; | 397 CFX_WideString cMsg = iLength > 5 ? params[5].ToCFXWideString() : L""; |
410 | 398 |
411 CPDFSDK_InterForm* pInterForm = | 399 CPDFSDK_InterForm* pInterForm = |
412 (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); | 400 (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); |
413 ASSERT(pInterForm != NULL); | |
414 | |
415 CFX_ByteTextBuf textBuf; | 401 CFX_ByteTextBuf textBuf; |
416 if (!pInterForm->ExportFormToFDFTextBuf(textBuf)) | 402 if (!pInterForm->ExportFormToFDFTextBuf(textBuf)) |
417 return FALSE; | 403 return FALSE; |
418 | 404 |
419 CJS_Context* pContext = (CJS_Context*)cc; | 405 CJS_Context* pContext = (CJS_Context*)cc; |
420 ASSERT(pContext != NULL); | |
421 CPDFDoc_Environment* pEnv = pContext->GetReaderApp(); | 406 CPDFDoc_Environment* pEnv = pContext->GetReaderApp(); |
422 ASSERT(pEnv != NULL); | |
423 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | 407 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
424 ASSERT(pRuntime != NULL); | |
425 | 408 |
426 pRuntime->BeginBlock(); | 409 pRuntime->BeginBlock(); |
427 pEnv->JS_docmailForm(textBuf.GetBuffer(), textBuf.GetLength(), bUI, | 410 pEnv->JS_docmailForm(textBuf.GetBuffer(), textBuf.GetLength(), bUI, |
428 cTo.c_str(), cSubject.c_str(), cCc.c_str(), cBcc.c_str(), | 411 cTo.c_str(), cSubject.c_str(), cCc.c_str(), cBcc.c_str(), |
429 cMsg.c_str()); | 412 cMsg.c_str()); |
430 pRuntime->EndBlock(); | 413 pRuntime->EndBlock(); |
431 return TRUE; | 414 return TRUE; |
432 } | 415 } |
433 | 416 |
434 FX_BOOL Document::print(IJS_Context* cc, | 417 FX_BOOL Document::print(IJS_Context* cc, |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
478 if (nlength >= 5) | 461 if (nlength >= 5) |
479 bShrinkToFit = params[4].ToBool(); | 462 bShrinkToFit = params[4].ToBool(); |
480 if (nlength >= 6) | 463 if (nlength >= 6) |
481 bPrintAsImage = params[5].ToBool(); | 464 bPrintAsImage = params[5].ToBool(); |
482 if (nlength >= 7) | 465 if (nlength >= 7) |
483 bReverse = params[6].ToBool(); | 466 bReverse = params[6].ToBool(); |
484 if (nlength >= 8) | 467 if (nlength >= 8) |
485 bAnnotations = params[7].ToBool(); | 468 bAnnotations = params[7].ToBool(); |
486 } | 469 } |
487 | 470 |
488 ASSERT(m_pDocument != NULL); | |
489 | |
490 if (CPDFDoc_Environment* pEnv = m_pDocument->GetEnv()) { | 471 if (CPDFDoc_Environment* pEnv = m_pDocument->GetEnv()) { |
491 pEnv->JS_docprint(bUI, nStart, nEnd, bSilent, bShrinkToFit, bPrintAsImage, | 472 pEnv->JS_docprint(bUI, nStart, nEnd, bSilent, bShrinkToFit, bPrintAsImage, |
492 bReverse, bAnnotations); | 473 bReverse, bAnnotations); |
493 return TRUE; | 474 return TRUE; |
494 } | 475 } |
495 return FALSE; | 476 return FALSE; |
496 } | 477 } |
497 | 478 |
498 // removes the specified field from the document. | 479 // removes the specified field from the document. |
499 // comment: | 480 // comment: |
500 // note: if the filed name is not retional, adobe is dumb for it. | 481 // note: if the filed name is not retional, adobe is dumb for it. |
501 | 482 |
502 FX_BOOL Document::removeField(IJS_Context* cc, | 483 FX_BOOL Document::removeField(IJS_Context* cc, |
503 const std::vector<CJS_Value>& params, | 484 const std::vector<CJS_Value>& params, |
504 CJS_Value& vRet, | 485 CJS_Value& vRet, |
505 CFX_WideString& sError) { | 486 CFX_WideString& sError) { |
506 ASSERT(m_pDocument != NULL); | |
507 | |
508 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || | 487 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || |
509 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM))) | 488 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM))) |
510 return FALSE; | 489 return FALSE; |
511 | 490 |
512 CJS_Context* pContext = (CJS_Context*)cc; | 491 CJS_Context* pContext = (CJS_Context*)cc; |
513 if (params.size() != 1) { | 492 if (params.size() != 1) { |
514 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); | 493 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
515 return FALSE; | 494 return FALSE; |
516 } | 495 } |
517 | 496 |
518 CFX_WideString sFieldName = params[0].ToCFXWideString(); | 497 CFX_WideString sFieldName = params[0].ToCFXWideString(); |
519 CPDFSDK_InterForm* pInterForm = | 498 CPDFSDK_InterForm* pInterForm = |
520 (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); | 499 (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); |
521 ASSERT(pInterForm != NULL); | |
522 | 500 |
523 std::vector<CPDFSDK_Widget*> widgets; | 501 std::vector<CPDFSDK_Widget*> widgets; |
524 pInterForm->GetWidgets(sFieldName, &widgets); | 502 pInterForm->GetWidgets(sFieldName, &widgets); |
525 | 503 |
526 if (widgets.empty()) | 504 if (widgets.empty()) |
527 return TRUE; | 505 return TRUE; |
528 | 506 |
529 for (CPDFSDK_Widget* pWidget : widgets) { | 507 for (CPDFSDK_Widget* pWidget : widgets) { |
530 CPDF_Rect rcAnnot = pWidget->GetRect(); | 508 CPDF_Rect rcAnnot = pWidget->GetRect(); |
531 --rcAnnot.left; | 509 --rcAnnot.left; |
(...skipping 561 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1093 vp << m_cwBaseURL; | 1071 vp << m_cwBaseURL; |
1094 } else { | 1072 } else { |
1095 vp >> m_cwBaseURL; | 1073 vp >> m_cwBaseURL; |
1096 } | 1074 } |
1097 return TRUE; | 1075 return TRUE; |
1098 } | 1076 } |
1099 | 1077 |
1100 FX_BOOL Document::calculate(IJS_Context* cc, | 1078 FX_BOOL Document::calculate(IJS_Context* cc, |
1101 CJS_PropValue& vp, | 1079 CJS_PropValue& vp, |
1102 CFX_WideString& sError) { | 1080 CFX_WideString& sError) { |
1103 ASSERT(m_pDocument != NULL); | |
1104 | |
1105 CPDFSDK_InterForm* pInterForm = | 1081 CPDFSDK_InterForm* pInterForm = |
1106 (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); | 1082 (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); |
1107 ASSERT(pInterForm != NULL); | |
1108 | 1083 |
1109 if (vp.IsGetting()) { | 1084 if (vp.IsGetting()) { |
1110 if (pInterForm->IsCalculateEnabled()) | 1085 if (pInterForm->IsCalculateEnabled()) |
1111 vp << true; | 1086 vp << true; |
1112 else | 1087 else |
1113 vp << false; | 1088 vp << false; |
1114 } else { | 1089 } else { |
1115 bool bCalculate; | 1090 bool bCalculate; |
1116 vp >> bCalculate; | 1091 vp >> bCalculate; |
1117 | 1092 |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1213 const std::vector<CJS_Value>& params, | 1188 const std::vector<CJS_Value>& params, |
1214 CJS_Value& vRet, | 1189 CJS_Value& vRet, |
1215 CFX_WideString& sError) { | 1190 CFX_WideString& sError) { |
1216 return TRUE; | 1191 return TRUE; |
1217 } | 1192 } |
1218 | 1193 |
1219 FX_BOOL Document::closeDoc(IJS_Context* cc, | 1194 FX_BOOL Document::closeDoc(IJS_Context* cc, |
1220 const std::vector<CJS_Value>& params, | 1195 const std::vector<CJS_Value>& params, |
1221 CJS_Value& vRet, | 1196 CJS_Value& vRet, |
1222 CFX_WideString& sError) { | 1197 CFX_WideString& sError) { |
1223 ASSERT(m_pDocument != NULL); | |
1224 return TRUE; | 1198 return TRUE; |
1225 } | 1199 } |
1226 | 1200 |
1227 FX_BOOL Document::getPageBox(IJS_Context* cc, | 1201 FX_BOOL Document::getPageBox(IJS_Context* cc, |
1228 const std::vector<CJS_Value>& params, | 1202 const std::vector<CJS_Value>& params, |
1229 CJS_Value& vRet, | 1203 CJS_Value& vRet, |
1230 CFX_WideString& sError) { | 1204 CFX_WideString& sError) { |
1231 return TRUE; | 1205 return TRUE; |
1232 } | 1206 } |
1233 | 1207 |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1472 FX_BOOL Document::media(IJS_Context* cc, | 1446 FX_BOOL Document::media(IJS_Context* cc, |
1473 CJS_PropValue& vp, | 1447 CJS_PropValue& vp, |
1474 CFX_WideString& sError) { | 1448 CFX_WideString& sError) { |
1475 return TRUE; | 1449 return TRUE; |
1476 } | 1450 } |
1477 | 1451 |
1478 FX_BOOL Document::calculateNow(IJS_Context* cc, | 1452 FX_BOOL Document::calculateNow(IJS_Context* cc, |
1479 const std::vector<CJS_Value>& params, | 1453 const std::vector<CJS_Value>& params, |
1480 CJS_Value& vRet, | 1454 CJS_Value& vRet, |
1481 CFX_WideString& sError) { | 1455 CFX_WideString& sError) { |
1482 ASSERT(m_pDocument != NULL); | |
1483 | |
1484 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || | 1456 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || |
1485 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) || | 1457 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) || |
1486 m_pDocument->GetPermissions(FPDFPERM_FILL_FORM))) | 1458 m_pDocument->GetPermissions(FPDFPERM_FILL_FORM))) |
1487 return FALSE; | 1459 return FALSE; |
1488 | 1460 |
1489 CPDFSDK_InterForm* pInterForm = | 1461 CPDFSDK_InterForm* pInterForm = |
1490 (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); | 1462 (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); |
1491 ASSERT(pInterForm != NULL); | |
1492 pInterForm->OnCalculate(); | 1463 pInterForm->OnCalculate(); |
1493 return TRUE; | 1464 return TRUE; |
1494 } | 1465 } |
1495 | 1466 |
1496 FX_BOOL Document::Collab(IJS_Context* cc, | 1467 FX_BOOL Document::Collab(IJS_Context* cc, |
1497 CJS_PropValue& vp, | 1468 CJS_PropValue& vp, |
1498 CFX_WideString& sError) { | 1469 CFX_WideString& sError) { |
1499 return TRUE; | 1470 return TRUE; |
1500 } | 1471 } |
1501 | 1472 |
1502 FX_BOOL Document::getPageNthWord(IJS_Context* cc, | 1473 FX_BOOL Document::getPageNthWord(IJS_Context* cc, |
1503 const std::vector<CJS_Value>& params, | 1474 const std::vector<CJS_Value>& params, |
1504 CJS_Value& vRet, | 1475 CJS_Value& vRet, |
1505 CFX_WideString& sError) { | 1476 CFX_WideString& sError) { |
1506 ASSERT(m_pDocument != NULL); | |
1507 | |
1508 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) | 1477 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) |
1509 return FALSE; | 1478 return FALSE; |
1510 | 1479 |
1511 int nPageNo = params.size() > 0 ? params[0].ToInt() : 0; | 1480 int nPageNo = params.size() > 0 ? params[0].ToInt() : 0; |
1512 int nWordNo = params.size() > 1 ? params[1].ToInt() : 0; | 1481 int nWordNo = params.size() > 1 ? params[1].ToInt() : 0; |
1513 bool bStrip = params.size() > 2 ? params[2].ToBool() : true; | 1482 bool bStrip = params.size() > 2 ? params[2].ToBool() : true; |
1514 | 1483 |
1515 CPDF_Document* pDocument = m_pDocument->GetPDFDocument(); | 1484 CPDF_Document* pDocument = m_pDocument->GetPDFDocument(); |
1516 if (!pDocument) | 1485 if (!pDocument) |
1517 return FALSE; | 1486 return FALSE; |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1558 } | 1527 } |
1559 | 1528 |
1560 vRet = swRet.c_str(); | 1529 vRet = swRet.c_str(); |
1561 return TRUE; | 1530 return TRUE; |
1562 } | 1531 } |
1563 | 1532 |
1564 FX_BOOL Document::getPageNthWordQuads(IJS_Context* cc, | 1533 FX_BOOL Document::getPageNthWordQuads(IJS_Context* cc, |
1565 const std::vector<CJS_Value>& params, | 1534 const std::vector<CJS_Value>& params, |
1566 CJS_Value& vRet, | 1535 CJS_Value& vRet, |
1567 CFX_WideString& sError) { | 1536 CFX_WideString& sError) { |
1568 ASSERT(m_pDocument != NULL); | |
1569 | |
1570 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) | 1537 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) |
1571 return FALSE; | 1538 return FALSE; |
1572 | 1539 |
1573 return FALSE; | 1540 return FALSE; |
1574 } | 1541 } |
1575 | 1542 |
1576 FX_BOOL Document::getPageNumWords(IJS_Context* cc, | 1543 FX_BOOL Document::getPageNumWords(IJS_Context* cc, |
1577 const std::vector<CJS_Value>& params, | 1544 const std::vector<CJS_Value>& params, |
1578 CJS_Value& vRet, | 1545 CJS_Value& vRet, |
1579 CFX_WideString& sError) { | 1546 CFX_WideString& sError) { |
1580 ASSERT(m_pDocument != NULL); | |
1581 | |
1582 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) | 1547 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) |
1583 return FALSE; | 1548 return FALSE; |
1584 | 1549 |
1585 int nPageNo = params.size() > 0 ? params[0].ToInt() : 0; | 1550 int nPageNo = params.size() > 0 ? params[0].ToInt() : 0; |
1586 | 1551 |
1587 CPDF_Document* pDocument = m_pDocument->GetPDFDocument(); | 1552 CPDF_Document* pDocument = m_pDocument->GetPDFDocument(); |
1588 ASSERT(pDocument != NULL); | |
1589 | |
1590 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | 1553 CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
1591 if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) { | 1554 if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) { |
1592 sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR); | 1555 sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR); |
1593 return FALSE; | 1556 return FALSE; |
1594 } | 1557 } |
1595 | 1558 |
1596 CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo); | 1559 CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo); |
1597 if (!pPageDict) | 1560 if (!pPageDict) |
1598 return FALSE; | 1561 return FALSE; |
1599 | 1562 |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1666 bIsLatin = ISLATINWORD(unicode); | 1629 bIsLatin = ISLATINWORD(unicode); |
1667 if (unicode != 0x20) | 1630 if (unicode != 0x20) |
1668 nWords++; | 1631 nWords++; |
1669 } | 1632 } |
1670 | 1633 |
1671 return nWords; | 1634 return nWords; |
1672 } | 1635 } |
1673 | 1636 |
1674 CFX_WideString Document::GetObjWordStr(CPDF_TextObject* pTextObj, | 1637 CFX_WideString Document::GetObjWordStr(CPDF_TextObject* pTextObj, |
1675 int nWordIndex) { | 1638 int nWordIndex) { |
1676 ASSERT(pTextObj != NULL); | |
1677 | |
1678 CFX_WideString swRet; | 1639 CFX_WideString swRet; |
1679 | 1640 |
1680 CPDF_Font* pFont = pTextObj->GetFont(); | 1641 CPDF_Font* pFont = pTextObj->GetFont(); |
1681 if (!pFont) | 1642 if (!pFont) |
1682 return L""; | 1643 return L""; |
1683 | 1644 |
1684 int nWords = 0; | 1645 int nWords = 0; |
1685 FX_BOOL bIsLatin = FALSE; | 1646 FX_BOOL bIsLatin = FALSE; |
1686 | 1647 |
1687 for (int i = 0, sz = pTextObj->CountChars(); i < sz; i++) { | 1648 for (int i = 0, sz = pTextObj->CountChars(); i < sz; i++) { |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1812 CFX_DWordArray DelArray; | 1773 CFX_DWordArray DelArray; |
1813 | 1774 |
1814 for (int j = DelArray.GetSize() - 1; j >= 0; j--) { | 1775 for (int j = DelArray.GetSize() - 1; j >= 0; j--) { |
1815 m_DelayData.RemoveAt(DelArray[j]); | 1776 m_DelayData.RemoveAt(DelArray[j]); |
1816 } | 1777 } |
1817 } | 1778 } |
1818 | 1779 |
1819 CJS_Document* Document::GetCJSDoc() const { | 1780 CJS_Document* Document::GetCJSDoc() const { |
1820 return static_cast<CJS_Document*>(m_pJSObject); | 1781 return static_cast<CJS_Document*>(m_pJSObject); |
1821 } | 1782 } |
OLD | NEW |