1 // Copyright 2016 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #include "core/fpdfdoc/cpdf_metadata.h" 8 9 #include "core/fpdfapi/parser/cpdf_document.h" 10 #include "core/fpdfapi/parser/cpdf_stream.h" 11 #include "core/fpdfapi/parser/cpdf_stream_acc.h" 12 #include "core/fxcrt/xml/cxml_element.h" 13 CPDF_Metadata(const CPDF_Document * pDoc)14CPDF_Metadata::CPDF_Metadata(const CPDF_Document* pDoc) { 15 const CPDF_Dictionary* pRoot = pDoc->GetRoot(); 16 if (!pRoot) 17 return; 18 19 CPDF_Stream* pStream = pRoot->GetStreamFor("Metadata"); 20 if (!pStream) 21 return; 22 23 auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pStream); 24 pAcc->LoadAllDataFiltered(); 25 m_pXmlElement = CXML_Element::Parse(pAcc->GetData(), pAcc->GetSize()); 26 } 27 ~CPDF_Metadata()28CPDF_Metadata::~CPDF_Metadata() {} 29 GetRoot() const30const CXML_Element* CPDF_Metadata::GetRoot() const { 31 return m_pXmlElement.get(); 32 } 33