mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
45 lines
1.4 KiB
C++
45 lines
1.4 KiB
C++
#include "stdafx.h"
|
|
#include "OOXHeaderReader.h"
|
|
#include "OOXTextItemReader.h"
|
|
#include "OOXRelsReader.h"
|
|
|
|
bool OOXHeaderReader::Parse( ReaderParameter oParam, CString sRID, TextItemContainerPtr& oOutput, bool bHeader )
|
|
{
|
|
//èùåì ôàéë â rels
|
|
CString sRelativeFilename = oParam.oRels->GetByID( sRID );
|
|
CString sFilename = oParam.oReader->m_sDocumentPath + _T("\\") + sRelativeFilename;
|
|
//ïðîâåðÿåì íàëè÷èå ñîîòâåòñòâóþùèõ rels
|
|
CString sRelsPath = oParam.oReader->m_sDocumentPath + _T("\\_rels\\") + sRelativeFilename + _T(".rels");
|
|
OOXRelsReaderPtr oRelsReader;
|
|
if( ::GetFileAttributes( sRelsPath ) != DWORD(-1) )
|
|
{
|
|
oRelsReader = OOXRelsReaderPtr( new OOXRelsReader() );
|
|
oRelsReader->Init( sRelsPath );
|
|
}
|
|
oParam.oRels = oRelsReader;
|
|
|
|
XmlUtils::CXmlReader oXmlReader;
|
|
if( TRUE == oXmlReader.OpenFromFile( sFilename ) )
|
|
{
|
|
if( true == bHeader )
|
|
{
|
|
oXmlReader.ReadRootNode( _T("w:hdr") );
|
|
}
|
|
else
|
|
{
|
|
oXmlReader.ReadRootNode( _T("w:ftr") );
|
|
}
|
|
|
|
OOXTextItemReader oOOXTextItemReader;
|
|
oOutput = TextItemContainerPtr( new TextItemContainer() );
|
|
oOOXTextItemReader.m_oTextItems = oOutput;
|
|
XML::IXMLDOMNodePtr oNode;
|
|
oXmlReader.GetNode(oNode);
|
|
ReaderParameter oNewParam = oParam;
|
|
oNewParam.oNode = oNode;
|
|
oOOXTextItemReader.Parse( oNewParam );
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|