| 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 "core/fpdfapi/fpdf_parser/include/cpdf_array.h" | 7 #include "core/fpdfapi/fpdf_parser/include/cpdf_array.h" |
| 8 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" | 8 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" |
| 9 #include "core/fpdfapi/fpdf_parser/include/cpdf_stream_acc.h" | 9 #include "core/fpdfapi/fpdf_parser/include/cpdf_stream_acc.h" |
| 10 #include "core/fpdfapi/fpdf_parser/include/cpdf_string.h" | 10 #include "core/fpdfapi/fpdf_parser/include/cpdf_string.h" |
| 11 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_app.h" | 11 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_app.h" |
| 12 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_doc.h" | 12 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_doc.h" |
| 13 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_page.h" | 13 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_page.h" |
| 14 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_util.h" | 14 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_util.h" |
| 15 #include "fpdfsdk/include/fsdk_define.h" | 15 #include "fpdfsdk/include/fsdk_define.h" |
| 16 #include "fpdfsdk/include/fsdk_mgr.h" | 16 #include "fpdfsdk/include/fsdk_mgr.h" |
| 17 #include "fpdfsdk/javascript/ijs_runtime.h" | 17 #include "fpdfsdk/javascript/ijs_runtime.h" |
| 18 #include "public/fpdf_formfill.h" | 18 #include "public/fpdf_formfill.h" |
| 19 #include "xfa/include/fxfa/xfa_ffapp.h" | 19 #include "xfa/include/fxfa/xfa_ffapp.h" |
| 20 #include "xfa/include/fxfa/xfa_ffdoc.h" | 20 #include "xfa/include/fxfa/xfa_ffdoc.h" |
| 21 #include "xfa/include/fxfa/xfa_ffdocview.h" | 21 #include "xfa/include/fxfa/xfa_ffdocview.h" |
| 22 #include "xfa/include/fxfa/xfa_ffpageview.h" | 22 #include "xfa/include/fxfa/xfa_ffpageview.h" |
| 23 #include "xfa/include/fxfa/xfa_ffwidget.h" |
| 23 | 24 |
| 24 #define IDS_XFA_Validate_Input \ | 25 #define IDS_XFA_Validate_Input \ |
| 25 "At least one required field was empty. Please fill in the required " \ | 26 "At least one required field was empty. Please fill in the required " \ |
| 26 "fields\r\n(highlighted) before continuing." | 27 "fields\r\n(highlighted) before continuing." |
| 27 | 28 |
| 28 // submit | 29 // submit |
| 29 #define FXFA_CONFIG 0x00000001 | 30 #define FXFA_CONFIG 0x00000001 |
| 30 #define FXFA_TEMPLATE 0x00000010 | 31 #define FXFA_TEMPLATE 0x00000010 |
| 31 #define FXFA_LOCALESET 0x00000100 | 32 #define FXFA_LOCALESET 0x00000100 |
| 32 #define FXFA_DATASETS 0x00001000 | 33 #define FXFA_DATASETS 0x00001000 |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 97 SetLastError(FPDF_ERR_XFALOAD); | 98 SetLastError(FPDF_ERR_XFALOAD); |
| 98 return FALSE; | 99 return FALSE; |
| 99 } | 100 } |
| 100 | 101 |
| 101 CXFA_FFDocHandler* pDocHandler = pApp->GetDocHandler(); | 102 CXFA_FFDocHandler* pDocHandler = pApp->GetDocHandler(); |
| 102 if (!pDocHandler) { | 103 if (!pDocHandler) { |
| 103 SetLastError(FPDF_ERR_XFALOAD); | 104 SetLastError(FPDF_ERR_XFALOAD); |
| 104 return FALSE; | 105 return FALSE; |
| 105 } | 106 } |
| 106 | 107 |
| 107 pDocHandler->StartLoad(m_pXFADoc); | 108 m_pXFADoc->StartLoad(); |
| 108 int iStatus = pDocHandler->DoLoad(m_pXFADoc, NULL); | 109 int iStatus = m_pXFADoc->DoLoad(nullptr); |
| 109 if (iStatus != XFA_PARSESTATUS_Done) { | 110 if (iStatus != XFA_PARSESTATUS_Done) { |
| 110 CloseXFADoc(pDocHandler); | 111 CloseXFADoc(pDocHandler); |
| 111 SetLastError(FPDF_ERR_XFALOAD); | 112 SetLastError(FPDF_ERR_XFALOAD); |
| 112 return FALSE; | 113 return FALSE; |
| 113 } | 114 } |
| 114 pDocHandler->StopLoad(m_pXFADoc); | 115 m_pXFADoc->StopLoad(); |
| 115 pDocHandler->SetJSERuntime(m_pXFADoc, m_pApp->GetJSERuntime()); | 116 m_pXFADoc->GetXFADoc()->InitScriptContext(m_pApp->GetJSERuntime()); |
| 116 | 117 |
| 117 if (pDocHandler->GetDocType(m_pXFADoc) == XFA_DOCTYPE_Dynamic) | 118 if (m_pXFADoc->GetDocType() == XFA_DOCTYPE_Dynamic) |
| 118 m_iDocType = DOCTYPE_DYNAMIC_XFA; | 119 m_iDocType = DOCTYPE_DYNAMIC_XFA; |
| 119 else | 120 else |
| 120 m_iDocType = DOCTYPE_STATIC_XFA; | 121 m_iDocType = DOCTYPE_STATIC_XFA; |
| 121 | 122 |
| 122 m_pXFADocView = pDocHandler->CreateDocView(m_pXFADoc, XFA_DOCVIEW_View); | 123 m_pXFADocView = m_pXFADoc->CreateDocView(XFA_DOCVIEW_View); |
| 123 if (m_pXFADocView->StartLayout() < 0) { | 124 if (m_pXFADocView->StartLayout() < 0) { |
| 124 CloseXFADoc(pDocHandler); | 125 CloseXFADoc(pDocHandler); |
| 125 SetLastError(FPDF_ERR_XFALAYOUT); | 126 SetLastError(FPDF_ERR_XFALAYOUT); |
| 126 return FALSE; | 127 return FALSE; |
| 127 } | 128 } |
| 128 | 129 |
| 129 m_pXFADocView->DoLayout(NULL); | 130 m_pXFADocView->DoLayout(NULL); |
| 130 m_pXFADocView->StopLayout(); | 131 m_pXFADocView->StopLayout(); |
| 131 m_nLoadStatus = FXFA_LOADSTATUS_LOADED; | 132 m_nLoadStatus = FXFA_LOADSTATUS_LOADED; |
| 132 | 133 |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 if (!m_pXFADoc || !m_pSDKDoc || !m_pXFADocView) | 269 if (!m_pXFADoc || !m_pSDKDoc || !m_pXFADocView) |
| 269 return; | 270 return; |
| 270 | 271 |
| 271 if (m_iDocType != DOCTYPE_DYNAMIC_XFA) | 272 if (m_iDocType != DOCTYPE_DYNAMIC_XFA) |
| 272 return; | 273 return; |
| 273 | 274 |
| 274 CXFA_FFWidgetHandler* pWidgetHandler = m_pXFADocView->GetWidgetHandler(); | 275 CXFA_FFWidgetHandler* pWidgetHandler = m_pXFADocView->GetWidgetHandler(); |
| 275 if (!pWidgetHandler) | 276 if (!pWidgetHandler) |
| 276 return; | 277 return; |
| 277 | 278 |
| 278 CXFA_FFPageView* pPageView = pWidgetHandler->GetPageView(hWidget); | 279 CXFA_FFPageView* pPageView = hWidget->GetPageView(); |
| 279 if (!pPageView) | 280 if (!pPageView) |
| 280 return; | 281 return; |
| 281 | 282 |
| 282 CFX_RectF rect; | 283 CFX_RectF rect; |
| 283 pWidgetHandler->GetRect(hWidget, rect); | 284 hWidget->GetRect(rect); |
| 284 InvalidateRect(pPageView, rect, dwFlags); | 285 InvalidateRect(pPageView, rect, dwFlags); |
| 285 } | 286 } |
| 286 | 287 |
| 287 void CPDFXFA_Document::DisplayCaret(CXFA_FFWidget* hWidget, | 288 void CPDFXFA_Document::DisplayCaret(CXFA_FFWidget* hWidget, |
| 288 FX_BOOL bVisible, | 289 FX_BOOL bVisible, |
| 289 const CFX_RectF* pRtAnchor) { | 290 const CFX_RectF* pRtAnchor) { |
| 290 if (!hWidget || pRtAnchor == NULL) | 291 if (!hWidget || pRtAnchor == NULL) |
| 291 return; | 292 return; |
| 292 | 293 |
| 293 if (!m_pXFADoc || !m_pSDKDoc || !m_pXFADocView) | 294 if (!m_pXFADoc || !m_pSDKDoc || !m_pXFADocView) |
| 294 return; | 295 return; |
| 295 | 296 |
| 296 if (m_iDocType != DOCTYPE_DYNAMIC_XFA) | 297 if (m_iDocType != DOCTYPE_DYNAMIC_XFA) |
| 297 return; | 298 return; |
| 298 | 299 |
| 299 CXFA_FFWidgetHandler* pWidgetHandler = m_pXFADocView->GetWidgetHandler(); | 300 CXFA_FFWidgetHandler* pWidgetHandler = m_pXFADocView->GetWidgetHandler(); |
| 300 if (!pWidgetHandler) | 301 if (!pWidgetHandler) |
| 301 return; | 302 return; |
| 302 | 303 |
| 303 CXFA_FFPageView* pPageView = pWidgetHandler->GetPageView(hWidget); | 304 CXFA_FFPageView* pPageView = hWidget->GetPageView(); |
| 304 if (!pPageView) | 305 if (!pPageView) |
| 305 return; | 306 return; |
| 306 | 307 |
| 307 CPDFXFA_Page* pPage = GetPage(pPageView); | 308 CPDFXFA_Page* pPage = GetPage(pPageView); |
| 308 | 309 |
| 309 if (pPage == NULL) | 310 if (pPage == NULL) |
| 310 return; | 311 return; |
| 311 | 312 |
| 312 CFX_FloatRect rcCaret; | 313 CFX_FloatRect rcCaret; |
| 313 FXRect2PDFRect(*pRtAnchor, rcCaret); | 314 FXRect2PDFRect(*pRtAnchor, rcCaret); |
| 314 | 315 |
| 315 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); | 316 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); |
| 316 if (!pEnv) | 317 if (!pEnv) |
| 317 return; | 318 return; |
| 318 | 319 |
| 319 pEnv->FFI_DisplayCaret((FPDF_PAGE)pPage, bVisible, rcCaret.left, rcCaret.top, | 320 pEnv->FFI_DisplayCaret((FPDF_PAGE)pPage, bVisible, rcCaret.left, rcCaret.top, |
| 320 rcCaret.right, rcCaret.bottom); | 321 rcCaret.right, rcCaret.bottom); |
| 321 } | 322 } |
| 322 | 323 |
| 323 FX_BOOL CPDFXFA_Document::GetPopupPos(CXFA_FFWidget* hWidget, | 324 FX_BOOL CPDFXFA_Document::GetPopupPos(CXFA_FFWidget* hWidget, |
| 324 FX_FLOAT fMinPopup, | 325 FX_FLOAT fMinPopup, |
| 325 FX_FLOAT fMaxPopup, | 326 FX_FLOAT fMaxPopup, |
| 326 const CFX_RectF& rtAnchor, | 327 const CFX_RectF& rtAnchor, |
| 327 CFX_RectF& rtPopup) { | 328 CFX_RectF& rtPopup) { |
| 328 if (NULL == hWidget) { | 329 if (!hWidget) |
| 329 return FALSE; | |
| 330 } | |
| 331 CXFA_FFPageView* pXFAPageView = | |
| 332 m_pXFADocView->GetWidgetHandler()->GetPageView(hWidget); | |
| 333 if (NULL == pXFAPageView) { | |
| 334 return FALSE; | |
| 335 } | |
| 336 CPDFXFA_Page* pPage = GetPage(pXFAPageView); | |
| 337 if (pPage == NULL) | |
| 338 return FALSE; | 330 return FALSE; |
| 339 | 331 |
| 340 CXFA_WidgetAcc* pWidgetAcc = | 332 CXFA_FFPageView* pXFAPageView = hWidget->GetPageView(); |
| 341 m_pXFADocView->GetWidgetHandler()->GetDataAcc(hWidget); | 333 if (!pXFAPageView) |
| 334 return FALSE; |
| 342 | 335 |
| 336 CPDFXFA_Page* pPage = GetPage(pXFAPageView); |
| 337 if (!pPage) |
| 338 return FALSE; |
| 339 |
| 340 CXFA_WidgetAcc* pWidgetAcc = hWidget->GetDataAcc(); |
| 343 int nRotate = 0; | 341 int nRotate = 0; |
| 344 #ifdef PDF_ENABLE_XFA | 342 #ifdef PDF_ENABLE_XFA |
| 345 nRotate = pWidgetAcc->GetRotate(); | 343 nRotate = pWidgetAcc->GetRotate(); |
| 346 #endif | 344 #endif |
| 347 | 345 |
| 348 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); | 346 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); |
| 349 if (pEnv == NULL) | 347 if (!pEnv) |
| 350 return FALSE; | 348 return FALSE; |
| 351 FS_RECTF pageViewRect; | 349 FS_RECTF pageViewRect; |
| 352 pEnv->FFI_GetPageViewRect(pPage, pageViewRect); | 350 pEnv->FFI_GetPageViewRect(pPage, pageViewRect); |
| 353 | 351 |
| 354 CFX_FloatRect rcAnchor; | 352 CFX_FloatRect rcAnchor; |
| 355 | 353 |
| 356 rcAnchor.left = rtAnchor.left; | 354 rcAnchor.left = rtAnchor.left; |
| 357 rcAnchor.top = rtAnchor.bottom(); | 355 rcAnchor.top = rtAnchor.bottom(); |
| 358 rcAnchor.right = rtAnchor.right(); | 356 rcAnchor.right = rtAnchor.right(); |
| 359 rcAnchor.bottom = rtAnchor.top; | 357 rcAnchor.bottom = rtAnchor.top; |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 450 default: | 448 default: |
| 451 break; | 449 break; |
| 452 } | 450 } |
| 453 | 451 |
| 454 return TRUE; | 452 return TRUE; |
| 455 } | 453 } |
| 456 | 454 |
| 457 FX_BOOL CPDFXFA_Document::PopupMenu(CXFA_FFWidget* hWidget, | 455 FX_BOOL CPDFXFA_Document::PopupMenu(CXFA_FFWidget* hWidget, |
| 458 CFX_PointF ptPopup, | 456 CFX_PointF ptPopup, |
| 459 const CFX_RectF* pRectExclude) { | 457 const CFX_RectF* pRectExclude) { |
| 460 if (NULL == hWidget) { | 458 if (!hWidget) |
| 461 return FALSE; | 459 return FALSE; |
| 462 } | 460 |
| 463 CXFA_FFPageView* pXFAPageView = | 461 CXFA_FFPageView* pXFAPageView = hWidget->GetPageView(); |
| 464 m_pXFADocView->GetWidgetHandler()->GetPageView(hWidget); | 462 if (!pXFAPageView) |
| 465 if (pXFAPageView == NULL) | |
| 466 return FALSE; | 463 return FALSE; |
| 464 |
| 467 CPDFXFA_Page* pPage = GetPage(pXFAPageView); | 465 CPDFXFA_Page* pPage = GetPage(pXFAPageView); |
| 468 | 466 if (!pPage) |
| 469 if (pPage == NULL) | |
| 470 return FALSE; | 467 return FALSE; |
| 471 | 468 |
| 472 int menuFlag = 0; | 469 int menuFlag = 0; |
| 473 | 470 |
| 474 CXFA_FFMenuHandler* pXFAMenuHander = m_pApp->GetXFAApp()->GetMenuHandler(); | 471 if (hWidget->CanUndo()) |
| 475 if (pXFAMenuHander->CanUndo(hWidget)) | |
| 476 menuFlag |= FXFA_MEMU_UNDO; | 472 menuFlag |= FXFA_MEMU_UNDO; |
| 477 if (pXFAMenuHander->CanRedo(hWidget)) | 473 if (hWidget->CanRedo()) |
| 478 menuFlag |= FXFA_MEMU_REDO; | 474 menuFlag |= FXFA_MEMU_REDO; |
| 479 if (pXFAMenuHander->CanPaste(hWidget)) | 475 if (hWidget->CanPaste()) |
| 480 menuFlag |= FXFA_MEMU_PASTE; | 476 menuFlag |= FXFA_MEMU_PASTE; |
| 481 if (pXFAMenuHander->CanCopy(hWidget)) | 477 if (hWidget->CanCopy()) |
| 482 menuFlag |= FXFA_MEMU_COPY; | 478 menuFlag |= FXFA_MEMU_COPY; |
| 483 if (pXFAMenuHander->CanCut(hWidget)) | 479 if (hWidget->CanCut()) |
| 484 menuFlag |= FXFA_MEMU_CUT; | 480 menuFlag |= FXFA_MEMU_CUT; |
| 485 if (pXFAMenuHander->CanSelectAll(hWidget)) | 481 if (hWidget->CanSelectAll()) |
| 486 menuFlag |= FXFA_MEMU_SELECTALL; | 482 menuFlag |= FXFA_MEMU_SELECTALL; |
| 487 | 483 |
| 488 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); | 484 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); |
| 489 if (pEnv == NULL) | 485 return pEnv && pEnv->FFI_PopupMenu(pPage, hWidget, menuFlag, ptPopup, NULL); |
| 490 return FALSE; | |
| 491 | |
| 492 return pEnv->FFI_PopupMenu(pPage, hWidget, menuFlag, ptPopup, NULL); | |
| 493 } | 486 } |
| 494 | 487 |
| 495 void CPDFXFA_Document::PageViewEvent(CXFA_FFPageView* pPageView, | 488 void CPDFXFA_Document::PageViewEvent(CXFA_FFPageView* pPageView, |
| 496 uint32_t dwFlags) { | 489 uint32_t dwFlags) { |
| 497 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); | 490 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); |
| 498 if (!pEnv) | 491 if (!pEnv) |
| 499 return; | 492 return; |
| 500 | 493 |
| 501 if (m_nLoadStatus != FXFA_LOADSTATUS_LOADING && | 494 if (m_nLoadStatus != FXFA_LOADSTATUS_LOADING && |
| 502 m_nLoadStatus != FXFA_LOADSTATUS_CLOSING && | 495 m_nLoadStatus != FXFA_LOADSTATUS_CLOSING && |
| (...skipping 30 matching lines...) Expand all Loading... |
| 533 uint32_t dwEvent, | 526 uint32_t dwEvent, |
| 534 void* pParam, | 527 void* pParam, |
| 535 void* pAdditional) { | 528 void* pAdditional) { |
| 536 if (m_iDocType != DOCTYPE_DYNAMIC_XFA || !hWidget) | 529 if (m_iDocType != DOCTYPE_DYNAMIC_XFA || !hWidget) |
| 537 return; | 530 return; |
| 538 | 531 |
| 539 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); | 532 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); |
| 540 if (!pEnv) | 533 if (!pEnv) |
| 541 return; | 534 return; |
| 542 | 535 |
| 543 CXFA_FFPageView* pPageView = | 536 CXFA_FFPageView* pPageView = hWidget->GetPageView(); |
| 544 m_pXFADocView->GetWidgetHandler()->GetPageView(hWidget); | 537 if (!pPageView) |
| 545 if (pPageView == NULL) | |
| 546 return; | 538 return; |
| 547 | 539 |
| 548 CPDFXFA_Page* pXFAPage = GetPage(pPageView); | 540 CPDFXFA_Page* pXFAPage = GetPage(pPageView); |
| 549 if (pXFAPage == NULL) | 541 if (!pXFAPage) |
| 550 return; | 542 return; |
| 551 | 543 |
| 552 CPDFSDK_PageView* pSdkPageView = m_pSDKDoc->GetPageView(pXFAPage); | 544 CPDFSDK_PageView* pSdkPageView = m_pSDKDoc->GetPageView(pXFAPage); |
| 553 if (dwEvent == XFA_WIDGETEVENT_PostAdded) { | 545 if (dwEvent == XFA_WIDGETEVENT_PostAdded) { |
| 554 pSdkPageView->AddAnnot(hWidget); | 546 pSdkPageView->AddAnnot(hWidget); |
| 555 | |
| 556 } else if (dwEvent == XFA_WIDGETEVENT_PreRemoved) { | 547 } else if (dwEvent == XFA_WIDGETEVENT_PreRemoved) { |
| 557 CPDFSDK_Annot* pAnnot = pSdkPageView->GetAnnotByXFAWidget(hWidget); | 548 CPDFSDK_Annot* pAnnot = pSdkPageView->GetAnnotByXFAWidget(hWidget); |
| 558 if (pAnnot) { | 549 if (pAnnot) |
| 559 pSdkPageView->DeleteAnnot(pAnnot); | 550 pSdkPageView->DeleteAnnot(pAnnot); |
| 560 } | |
| 561 } | 551 } |
| 562 } | 552 } |
| 563 | 553 |
| 564 int32_t CPDFXFA_Document::CountPages(CXFA_FFDoc* hDoc) { | 554 int32_t CPDFXFA_Document::CountPages(CXFA_FFDoc* hDoc) { |
| 565 if (hDoc == m_pXFADoc && m_pSDKDoc) { | 555 if (hDoc == m_pXFADoc && m_pSDKDoc) |
| 566 return GetPageCount(); | 556 return GetPageCount(); |
| 567 } | |
| 568 return 0; | 557 return 0; |
| 569 } | 558 } |
| 559 |
| 570 int32_t CPDFXFA_Document::GetCurrentPage(CXFA_FFDoc* hDoc) { | 560 int32_t CPDFXFA_Document::GetCurrentPage(CXFA_FFDoc* hDoc) { |
| 571 if (hDoc != m_pXFADoc || !m_pSDKDoc) | 561 if (hDoc != m_pXFADoc || !m_pSDKDoc) |
| 572 return -1; | 562 return -1; |
| 573 if (m_iDocType != DOCTYPE_DYNAMIC_XFA) | 563 if (m_iDocType != DOCTYPE_DYNAMIC_XFA) |
| 574 return -1; | 564 return -1; |
| 575 | 565 |
| 576 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); | 566 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); |
| 577 if (pEnv == NULL) | 567 if (!pEnv) |
| 578 return -1; | 568 return -1; |
| 579 | 569 |
| 580 return pEnv->FFI_GetCurrentPageIndex(this); | 570 return pEnv->FFI_GetCurrentPageIndex(this); |
| 581 } | 571 } |
| 572 |
| 582 void CPDFXFA_Document::SetCurrentPage(CXFA_FFDoc* hDoc, int32_t iCurPage) { | 573 void CPDFXFA_Document::SetCurrentPage(CXFA_FFDoc* hDoc, int32_t iCurPage) { |
| 583 if (hDoc != m_pXFADoc || !m_pSDKDoc || m_iDocType != DOCTYPE_DYNAMIC_XFA || | 574 if (hDoc != m_pXFADoc || !m_pSDKDoc || m_iDocType != DOCTYPE_DYNAMIC_XFA || |
| 584 iCurPage < 0 || iCurPage >= m_pSDKDoc->GetPageCount()) { | 575 iCurPage < 0 || iCurPage >= m_pSDKDoc->GetPageCount()) { |
| 585 return; | 576 return; |
| 586 } | 577 } |
| 587 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); | 578 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); |
| 588 if (!pEnv) | 579 if (!pEnv) |
| 589 return; | 580 return; |
| 590 pEnv->FFI_SetCurrentPage(this, iCurPage); | 581 pEnv->FFI_SetCurrentPage(this, iCurPage); |
| 591 } | 582 } |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 655 FPDF_FILEHANDLER* pFileHandler = pEnv->FFI_OpenFile( | 646 FPDF_FILEHANDLER* pFileHandler = pEnv->FFI_OpenFile( |
| 656 bXDP ? FXFA_SAVEAS_XDP : FXFA_SAVEAS_XML, | 647 bXDP ? FXFA_SAVEAS_XDP : FXFA_SAVEAS_XML, |
| 657 (FPDF_WIDESTRING)bs.GetBuffer(len * sizeof(unsigned short)), "wb"); | 648 (FPDF_WIDESTRING)bs.GetBuffer(len * sizeof(unsigned short)), "wb"); |
| 658 bs.ReleaseBuffer(len * sizeof(unsigned short)); | 649 bs.ReleaseBuffer(len * sizeof(unsigned short)); |
| 659 | 650 |
| 660 if (pFileHandler == NULL) | 651 if (pFileHandler == NULL) |
| 661 return; | 652 return; |
| 662 | 653 |
| 663 CFPDF_FileStream fileWrite(pFileHandler); | 654 CFPDF_FileStream fileWrite(pFileHandler); |
| 664 | 655 |
| 665 CXFA_FFDocHandler* pXFADocHander = m_pApp->GetXFAApp()->GetDocHandler(); | |
| 666 CFX_ByteString content; | 656 CFX_ByteString content; |
| 667 if (fileType == FXFA_SAVEAS_XML) { | 657 if (fileType == FXFA_SAVEAS_XML) { |
| 668 content = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"; | 658 content = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"; |
| 669 fileWrite.WriteBlock((const FX_CHAR*)content, fileWrite.GetSize(), | 659 fileWrite.WriteBlock((const FX_CHAR*)content, fileWrite.GetSize(), |
| 670 content.GetLength()); | 660 content.GetLength()); |
| 671 CFX_WideStringC data(L"data"); | 661 CFX_WideStringC data(L"data"); |
| 672 if (pXFADocHander->SavePackage(m_pXFADocView->GetDoc(), data, &fileWrite)) { | 662 if (m_pXFADocView->GetDoc()->SavePackage(data, &fileWrite)) { |
| 673 // Ignoring error. | 663 // Ignoring error. |
| 674 } | 664 } |
| 675 } else if (fileType == FXFA_SAVEAS_XDP) { | 665 } else if (fileType == FXFA_SAVEAS_XDP) { |
| 676 if (m_pPDFDoc == NULL) | 666 if (m_pPDFDoc == NULL) |
| 677 return; | 667 return; |
| 678 CPDF_Dictionary* pRoot = m_pPDFDoc->GetRoot(); | 668 CPDF_Dictionary* pRoot = m_pPDFDoc->GetRoot(); |
| 679 if (pRoot == NULL) | 669 if (pRoot == NULL) |
| 680 return; | 670 return; |
| 681 CPDF_Dictionary* pAcroForm = pRoot->GetDictBy("AcroForm"); | 671 CPDF_Dictionary* pAcroForm = pRoot->GetDictBy("AcroForm"); |
| 682 if (NULL == pAcroForm) | 672 if (NULL == pAcroForm) |
| (...skipping 12 matching lines...) Expand all Loading... |
| 695 CPDF_Object* pPrePDFObj = pArray->GetObjectAt(i - 1); | 685 CPDF_Object* pPrePDFObj = pArray->GetObjectAt(i - 1); |
| 696 if (!pPrePDFObj->IsString()) | 686 if (!pPrePDFObj->IsString()) |
| 697 continue; | 687 continue; |
| 698 if (!pPDFObj->IsReference()) | 688 if (!pPDFObj->IsReference()) |
| 699 continue; | 689 continue; |
| 700 CPDF_Object* pDirectObj = pPDFObj->GetDirect(); | 690 CPDF_Object* pDirectObj = pPDFObj->GetDirect(); |
| 701 if (!pDirectObj->IsStream()) | 691 if (!pDirectObj->IsStream()) |
| 702 continue; | 692 continue; |
| 703 if (pPrePDFObj->GetString() == "form") { | 693 if (pPrePDFObj->GetString() == "form") { |
| 704 CFX_WideStringC form(L"form"); | 694 CFX_WideStringC form(L"form"); |
| 705 pXFADocHander->SavePackage(m_pXFADocView->GetDoc(), form, &fileWrite); | 695 m_pXFADocView->GetDoc()->SavePackage(form, &fileWrite); |
| 706 } else if (pPrePDFObj->GetString() == "datasets") { | 696 } else if (pPrePDFObj->GetString() == "datasets") { |
| 707 CFX_WideStringC datasets(L"datasets"); | 697 CFX_WideStringC datasets(L"datasets"); |
| 708 pXFADocHander->SavePackage(m_pXFADocView->GetDoc(), datasets, | 698 m_pXFADocView->GetDoc()->SavePackage(datasets, &fileWrite); |
| 709 &fileWrite); | |
| 710 } else { | 699 } else { |
| 711 if (i == size - 1) { | 700 if (i == size - 1) { |
| 712 CFX_WideString wPath = CFX_WideString::FromUTF16LE( | 701 CFX_WideString wPath = CFX_WideString::FromUTF16LE( |
| 713 (unsigned short*)(const FX_CHAR*)bs, | 702 (unsigned short*)(const FX_CHAR*)bs, |
| 714 bs.GetLength() / sizeof(unsigned short)); | 703 bs.GetLength() / sizeof(unsigned short)); |
| 715 CFX_ByteString bPath = wPath.UTF8Encode(); | 704 CFX_ByteString bPath = wPath.UTF8Encode(); |
| 716 CFX_ByteString szFormat = | 705 CFX_ByteString szFormat = |
| 717 "\n<pdf href=\"%s\" xmlns=\"http://ns.adobe.com/xdp/pdf/\"/>"; | 706 "\n<pdf href=\"%s\" xmlns=\"http://ns.adobe.com/xdp/pdf/\"/>"; |
| 718 content.Format(szFormat, (char*)(const FX_CHAR*)bPath); | 707 content.Format(szFormat, (char*)(const FX_CHAR*)bPath); |
| 719 fileWrite.WriteBlock((const FX_CHAR*)content, fileWrite.GetSize(), | 708 fileWrite.WriteBlock((const FX_CHAR*)content, fileWrite.GetSize(), |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 946 bs.ReleaseBuffer(len * sizeof(unsigned short)); | 935 bs.ReleaseBuffer(len * sizeof(unsigned short)); |
| 947 | 936 |
| 948 if (pFileHandler == NULL) | 937 if (pFileHandler == NULL) |
| 949 return NULL; | 938 return NULL; |
| 950 return new CFPDF_FileStream(pFileHandler); | 939 return new CFPDF_FileStream(pFileHandler); |
| 951 } | 940 } |
| 952 FX_BOOL CPDFXFA_Document::_ExportSubmitFile(FPDF_FILEHANDLER* pFileHandler, | 941 FX_BOOL CPDFXFA_Document::_ExportSubmitFile(FPDF_FILEHANDLER* pFileHandler, |
| 953 int fileType, | 942 int fileType, |
| 954 FPDF_DWORD encodeType, | 943 FPDF_DWORD encodeType, |
| 955 FPDF_DWORD flag) { | 944 FPDF_DWORD flag) { |
| 956 if (NULL == m_pXFADocView) | 945 if (!m_pXFADocView) |
| 957 return FALSE; | 946 return FALSE; |
| 958 CXFA_FFDocHandler* pDocHandler = m_pApp->GetXFAApp()->GetDocHandler(); | 947 |
| 959 CFX_ByteString content; | 948 CFX_ByteString content; |
| 960 | |
| 961 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); | 949 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); |
| 962 if (pEnv == NULL) | 950 if (!pEnv) |
| 963 return FALSE; | 951 return FALSE; |
| 964 | 952 |
| 965 CFPDF_FileStream fileStream(pFileHandler); | 953 CFPDF_FileStream fileStream(pFileHandler); |
| 966 | 954 |
| 967 if (fileType == FXFA_SAVEAS_XML) { | 955 if (fileType == FXFA_SAVEAS_XML) { |
| 968 CFX_WideString ws; | 956 CFX_WideString ws; |
| 969 ws.FromLocal("data"); | 957 ws.FromLocal("data"); |
| 970 CFX_ByteString content = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"; | 958 CFX_ByteString content = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"; |
| 971 fileStream.WriteBlock((const FX_CHAR*)content, 0, content.GetLength()); | 959 fileStream.WriteBlock((const FX_CHAR*)content, 0, content.GetLength()); |
| 972 pDocHandler->SavePackage(m_pXFADoc, ws, &fileStream); | 960 m_pXFADoc->SavePackage(ws, &fileStream); |
| 973 } else if (fileType == FXFA_SAVEAS_XDP) { | 961 } else if (fileType == FXFA_SAVEAS_XDP) { |
| 974 if (flag == 0) | 962 if (flag == 0) |
| 975 flag = FXFA_CONFIG | FXFA_TEMPLATE | FXFA_LOCALESET | FXFA_DATASETS | | 963 flag = FXFA_CONFIG | FXFA_TEMPLATE | FXFA_LOCALESET | FXFA_DATASETS | |
| 976 FXFA_XMPMETA | FXFA_XFDF | FXFA_FORM; | 964 FXFA_XMPMETA | FXFA_XFDF | FXFA_FORM; |
| 977 if (m_pPDFDoc == NULL) { | 965 if (m_pPDFDoc == NULL) { |
| 978 fileStream.Flush(); | 966 fileStream.Flush(); |
| 979 return FALSE; | 967 return FALSE; |
| 980 } | 968 } |
| 981 CPDF_Dictionary* pRoot = m_pPDFDoc->GetRoot(); | 969 CPDF_Dictionary* pRoot = m_pPDFDoc->GetRoot(); |
| 982 if (pRoot == NULL) { | 970 if (pRoot == NULL) { |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1023 continue; | 1011 continue; |
| 1024 if (pPrePDFObj->GetString() == "xmpmeta" && !(flag & FXFA_XMPMETA)) | 1012 if (pPrePDFObj->GetString() == "xmpmeta" && !(flag & FXFA_XMPMETA)) |
| 1025 continue; | 1013 continue; |
| 1026 if (pPrePDFObj->GetString() == "xfdf" && !(flag & FXFA_XFDF)) | 1014 if (pPrePDFObj->GetString() == "xfdf" && !(flag & FXFA_XFDF)) |
| 1027 continue; | 1015 continue; |
| 1028 if (pPrePDFObj->GetString() == "form" && !(flag & FXFA_FORM)) | 1016 if (pPrePDFObj->GetString() == "form" && !(flag & FXFA_FORM)) |
| 1029 continue; | 1017 continue; |
| 1030 if (pPrePDFObj->GetString() == "form") { | 1018 if (pPrePDFObj->GetString() == "form") { |
| 1031 CFX_WideString ws; | 1019 CFX_WideString ws; |
| 1032 ws.FromLocal("form"); | 1020 ws.FromLocal("form"); |
| 1033 pDocHandler->SavePackage(m_pXFADoc, ws, &fileStream); | 1021 m_pXFADoc->SavePackage(ws, &fileStream); |
| 1034 } else if (pPrePDFObj->GetString() == "datasets") { | 1022 } else if (pPrePDFObj->GetString() == "datasets") { |
| 1035 CFX_WideString ws; | 1023 CFX_WideString ws; |
| 1036 ws.FromLocal("datasets"); | 1024 ws.FromLocal("datasets"); |
| 1037 pDocHandler->SavePackage(m_pXFADoc, ws, &fileStream); | 1025 m_pXFADoc->SavePackage(ws, &fileStream); |
| 1038 } else { | 1026 } else { |
| 1039 // PDF,creator. | 1027 // PDF,creator. |
| 1040 } | 1028 } |
| 1041 } | 1029 } |
| 1042 } | 1030 } |
| 1043 return TRUE; | 1031 return TRUE; |
| 1044 } | 1032 } |
| 1045 | 1033 |
| 1046 void CPDFXFA_Document::_ClearChangeMark() { | 1034 void CPDFXFA_Document::_ClearChangeMark() { |
| 1047 if (m_pSDKDoc) | 1035 if (m_pSDKDoc) |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1284 } | 1272 } |
| 1285 | 1273 |
| 1286 return _GetHValueByName(szPropName, hValue, | 1274 return _GetHValueByName(szPropName, hValue, |
| 1287 m_pSDKDoc->GetEnv()->GetJSRuntime()); | 1275 m_pSDKDoc->GetEnv()->GetJSRuntime()); |
| 1288 } | 1276 } |
| 1289 FX_BOOL CPDFXFA_Document::_GetHValueByName(const CFX_ByteStringC& utf8Name, | 1277 FX_BOOL CPDFXFA_Document::_GetHValueByName(const CFX_ByteStringC& utf8Name, |
| 1290 FXJSE_HVALUE hValue, | 1278 FXJSE_HVALUE hValue, |
| 1291 IJS_Runtime* runTime) { | 1279 IJS_Runtime* runTime) { |
| 1292 return runTime->GetHValueByName(utf8Name, hValue); | 1280 return runTime->GetHValueByName(utf8Name, hValue); |
| 1293 } | 1281 } |
| OLD | NEW |