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 "fpdfsdk/fpdfxfa/include/fpdfxfa_doc.h" | 7 #include "fpdfsdk/fpdfxfa/include/fpdfxfa_doc.h" |
8 | 8 |
9 #include "core/fpdfapi/fpdf_parser/include/cpdf_array.h" | 9 #include "core/fpdfapi/fpdf_parser/include/cpdf_array.h" |
10 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" | 10 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" |
(...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
670 return; | 670 return; |
671 | 671 |
672 int size = pArray->GetCount(); | 672 int size = pArray->GetCount(); |
673 for (int i = 1; i < size; i += 2) { | 673 for (int i = 1; i < size; i += 2) { |
674 CPDF_Object* pPDFObj = pArray->GetObjectAt(i); | 674 CPDF_Object* pPDFObj = pArray->GetObjectAt(i); |
675 CPDF_Object* pPrePDFObj = pArray->GetObjectAt(i - 1); | 675 CPDF_Object* pPrePDFObj = pArray->GetObjectAt(i - 1); |
676 if (!pPrePDFObj->IsString()) | 676 if (!pPrePDFObj->IsString()) |
677 continue; | 677 continue; |
678 if (!pPDFObj->IsReference()) | 678 if (!pPDFObj->IsReference()) |
679 continue; | 679 continue; |
680 CPDF_Object* pDirectObj = pPDFObj->GetDirect(); | 680 CPDF_Stream* pStream = ToStream(pPDFObj->GetDirect()); |
681 if (!pDirectObj->IsStream()) | 681 if (!pStream) |
682 continue; | 682 continue; |
683 if (pPrePDFObj->GetString() == "form") { | 683 if (pPrePDFObj->GetString() == "form") { |
684 m_pXFADocView->GetDoc()->SavePackage(XFA_HASHCODE_Form, &fileWrite, | 684 m_pXFADocView->GetDoc()->SavePackage(XFA_HASHCODE_Form, &fileWrite, |
685 nullptr); | 685 nullptr); |
686 } else if (pPrePDFObj->GetString() == "datasets") { | 686 } else if (pPrePDFObj->GetString() == "datasets") { |
687 m_pXFADocView->GetDoc()->SavePackage(XFA_HASHCODE_Datasets, &fileWrite, | 687 m_pXFADocView->GetDoc()->SavePackage(XFA_HASHCODE_Datasets, &fileWrite, |
688 nullptr); | 688 nullptr); |
689 } else { | 689 } else { |
690 if (i == size - 1) { | 690 if (i == size - 1) { |
691 CFX_WideString wPath = CFX_WideString::FromUTF16LE( | 691 CFX_WideString wPath = CFX_WideString::FromUTF16LE( |
692 reinterpret_cast<const unsigned short*>(bs.c_str()), | 692 reinterpret_cast<const unsigned short*>(bs.c_str()), |
693 bs.GetLength() / sizeof(unsigned short)); | 693 bs.GetLength() / sizeof(unsigned short)); |
694 CFX_ByteString bPath = wPath.UTF8Encode(); | 694 CFX_ByteString bPath = wPath.UTF8Encode(); |
695 const char* szFormat = | 695 const char* szFormat = |
696 "\n<pdf href=\"%s\" xmlns=\"http://ns.adobe.com/xdp/pdf/\"/>"; | 696 "\n<pdf href=\"%s\" xmlns=\"http://ns.adobe.com/xdp/pdf/\"/>"; |
697 content.Format(szFormat, bPath.c_str()); | 697 content.Format(szFormat, bPath.c_str()); |
698 fileWrite.WriteBlock(content.c_str(), fileWrite.GetSize(), | 698 fileWrite.WriteBlock(content.c_str(), fileWrite.GetSize(), |
699 content.GetLength()); | 699 content.GetLength()); |
700 } | 700 } |
701 | 701 std::unique_ptr<CPDF_StreamAcc> pAcc(new CPDF_StreamAcc); |
702 CPDF_Stream* pStream = (CPDF_Stream*)pDirectObj; | |
703 CPDF_StreamAcc* pAcc = new CPDF_StreamAcc; | |
704 pAcc->LoadAllData(pStream); | 702 pAcc->LoadAllData(pStream); |
705 fileWrite.WriteBlock(pAcc->GetData(), fileWrite.GetSize(), | 703 fileWrite.WriteBlock(pAcc->GetData(), fileWrite.GetSize(), |
706 pAcc->GetSize()); | 704 pAcc->GetSize()); |
707 delete pAcc; | |
708 } | 705 } |
709 } | 706 } |
710 } | 707 } |
711 if (!fileWrite.Flush()) { | 708 if (!fileWrite.Flush()) { |
712 // Ignoring flush error. | 709 // Ignoring flush error. |
713 } | 710 } |
714 } | 711 } |
715 void CPDFXFA_Document::ImportData(CXFA_FFDoc* hDoc, | 712 void CPDFXFA_Document::ImportData(CXFA_FFDoc* hDoc, |
716 const CFX_WideString& wsFilePath) {} | 713 const CFX_WideString& wsFilePath) {} |
717 | 714 |
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1238 return FALSE; | 1235 return FALSE; |
1239 | 1236 |
1240 if (!m_pJSContext) { | 1237 if (!m_pJSContext) { |
1241 m_pSDKDoc->GetEnv()->GetJSRuntime()->SetReaderDocument(m_pSDKDoc); | 1238 m_pSDKDoc->GetEnv()->GetJSRuntime()->SetReaderDocument(m_pSDKDoc); |
1242 m_pJSContext = m_pSDKDoc->GetEnv()->GetJSRuntime()->NewContext(); | 1239 m_pJSContext = m_pSDKDoc->GetEnv()->GetJSRuntime()->NewContext(); |
1243 } | 1240 } |
1244 | 1241 |
1245 return m_pSDKDoc->GetEnv()->GetJSRuntime()->GetValueByName(szPropName, | 1242 return m_pSDKDoc->GetEnv()->GetJSRuntime()->GetValueByName(szPropName, |
1246 pValue); | 1243 pValue); |
1247 } | 1244 } |
OLD | NEW |