#include "stdafx.h" #include "OOXDocumentWriter.h" #include "OOXContentTypesWriter.h" #include "OOXRelsWriter.h" #include "OOXDocumentWriter.h" #include "OOXNumberingWriter.h" #include "OOXFontTableWriter.h" #include "OOXStylesWriter.h" #include "OOXSettingsWriter.h" #include "OOXThemeWriter.h" #include "OOXDocPropAppWriter.h" #include "OOXDocPropCoreWriter.h" #include "OOXFootnoteWriter.h" CString OOXDocumentWriter::CreateXmlStart() { //пишем Footnotes RenderParameter oNewParam; oNewParam.poDocument = &m_oDocument; oNewParam.poWriter = &m_oWriter; oNewParam.poRels = &m_oWriter.m_oDocRels; oNewParam.nType = RENDER_TO_OOX_PARAM_UNKNOWN; //пишем document.xml CString sResult = _T("\n"); sResult.Append( _T("") ); sResult.Append( _T("") ); return sResult; } CString OOXDocumentWriter::CreateXmlEnd( ) { CString sResult ; //пишем все кроме document.xml RenderParameter oNewParam; oNewParam.poDocument = &m_oDocument; oNewParam.poWriter = &m_oWriter; oNewParam.poRels = &m_oWriter.m_oDocRels; oNewParam.nType = RENDER_TO_OOX_PARAM_UNKNOWN; OOXEndnoteWriter* poEndnoteWriter = static_cast( m_oWriter.m_poEndnoteWriter ); OOXFootnoteWriter* poFootnoteWriter = static_cast( m_oWriter.m_poFootnoteWriter ); if( NULL != m_oDocument.m_oFootnoteCon ) { oNewParam.poRels = poFootnoteWriter->m_oRelsWriter.get(); oNewParam.nType = RENDER_TO_OOX_PARAM_UNKNOWN; poFootnoteWriter->AddFootnoteBegin( _T("continuationSeparator"), 1, m_oDocument.m_oFootnoteCon->RenderToOOX( oNewParam ) ); } if( NULL != m_oDocument.m_oFootnoteSep ) { oNewParam.poRels = poFootnoteWriter->m_oRelsWriter.get(); oNewParam.nType = RENDER_TO_OOX_PARAM_UNKNOWN; poFootnoteWriter->AddFootnoteBegin( _T("separator"), 0, m_oDocument.m_oFootnoteSep->RenderToOOX(oNewParam) ); } if( NULL != m_oDocument.m_oEndnoteCon ) { oNewParam.poRels = poEndnoteWriter->m_oRelsWriter.get(); oNewParam.nType = RENDER_TO_OOX_PARAM_UNKNOWN; poEndnoteWriter->AddEndnoteBegin( _T("continuationSeparator"), 1, m_oDocument.m_oEndnoteSep->RenderToOOX(oNewParam) ); } if( NULL != m_oDocument.m_oEndnoteSep ) { oNewParam.poRels = poEndnoteWriter->m_oRelsWriter.get(); oNewParam.nType = RENDER_TO_OOX_PARAM_UNKNOWN; poEndnoteWriter->AddEndnoteBegin( _T("separator"), 0, m_oDocument.m_oEndnoteSep->RenderToOOX(oNewParam) ); } //fontTable.xml OOXFontTableWriter* poFontTableWriter = static_cast( m_oWriter.m_poFontTableWriter ); oNewParam.poRels = poFontTableWriter->m_oRelsWriter.get(); oNewParam.nType = RENDER_TO_OOX_PARAM_FONTTABLE; poFontTableWriter->AddContent( m_oDocument.m_oFontTable.RenderToOOX( oNewParam ) ); //settings.xml OOXSettingsWriter* poSettingsWriter = static_cast( m_oWriter.m_poSettingsWriter ); oNewParam.poRels = poSettingsWriter->m_oRelsWriter.get(); oNewParam.nType = RENDER_TO_OOX_PARAM_UNKNOWN; poSettingsWriter->AddContent( m_oDocument.m_oProperty.RenderToOOX(oNewParam) ); //poSettingsWriter->AddContent( m_oDocument.m_oColorSchemeMapping.RenderToOOX(oNewParam) ); poSettingsWriter->AddContent( m_oDocument.m_oMathProp.RenderToOOX(oNewParam) ); //numbering.xml OOXNumberingWriter* poNumberingWriter = static_cast( m_oWriter.m_poNumberingWriter ); oNewParam.poRels = poNumberingWriter->m_oRelsWriter.get(); oNewParam.nType = RENDER_TO_OOX_PARAM_NUMBERING; poNumberingWriter->AddNumbering( m_oDocument.m_oListTabel.RenderToOOX(oNewParam) ); poNumberingWriter->AddNumbering( m_oDocument.m_oListOverrideTabel.RenderToOOX(oNewParam) ); //core.xml OOXDocPropCoreWriter* poDocPropCoreWriter = static_cast( m_oWriter.m_poDocPropCoreWriter ); oNewParam.poRels = poDocPropCoreWriter->m_oRelsWriter; oNewParam.nType = RENDER_TO_OOX_PARAM_CORE; poDocPropCoreWriter->AddContent( m_oDocument.m_oInformation.RenderToOOX(oNewParam) ); //app.xml OOXDocPropAppWriter* poDocPropAppWriter = static_cast( m_oWriter.m_poDocPropAppWriter ); oNewParam.poRels = poDocPropAppWriter->m_oRelsWriter; oNewParam.nType = RENDER_TO_OOX_PARAM_APP; poDocPropAppWriter->AddContent( m_oDocument.m_oInformation.RenderToOOX(oNewParam) ); ////styles.xml //OOXStylesWriter* poStylesWriter = static_cast( m_oWriter.m_poStylesWriter ); //oNewParam.poRels = poStylesWriter->m_oRelsWriter.get(); //oNewParam.nType = RENDER_TO_OOX_PARAM_UNKNOWN; //CString sTempParaDef = m_oDocument.m_oDefaultParagraphProp.RenderToOOX(oNewParam); //CString sTempCharDef = m_oDocument.m_oDefaultCharProp.RenderToOOX(oNewParam); ////CString sTempStyle = m_oDocument.m_oLatentStyleTable.RenderToOOX(oNewParam); //sTempStyle.Append( m_oDocument.m_oStyleTable.RenderToOOX(oNewParam) ); //CString sStyles; //if( false == sTempParaDef.IsEmpty() || false == sTempCharDef.IsEmpty() ) //{ // sStyles.Append(_T("")); // if( false == sTempParaDef.IsEmpty() ) // { // sStyles.Append(_T("")); // sStyles.Append( sTempParaDef ); // sStyles.Append(_T("")); // } // if( false == sTempCharDef.IsEmpty() ) // { // sStyles.Append(_T("")); // sStyles.Append( sTempCharDef ); // sStyles.Append(_T("")); // } // sStyles.Append(_T("")); //} //sStyles.Append( sTempStyle ); //poStylesWriter->AddContent( sStyles ); ////"theme.xml" //OOXStylesWriter* poStylesWriter = static_cast( m_oWriter. ); //CString sTempColorTbl = m_oColorTable.RenderToOOX(poWriter, poDocument, "theme.xml",_T("") ); //CString sTempFontTbl = m_oFontTable.RenderToOOX(poWriter, poDocument, "theme.xml",_T("") ); //if( false == sTempColorTbl.IsEmpty() || false == sTempFontTbl.IsEmpty() ) //{ // sResult.Append(""); // sResult.Append(""); // sResult.Append(""); // sResult.Append( sTempColorTbl ); // sResult.Append( sTempFontTbl ); // sResult.Append( "" ); // sResult.Append(""); // sResult.Append(""); //} //пишем финальные свойства секции oNewParam.poDocument = &m_oDocument; oNewParam.poWriter = &m_oWriter; oNewParam.poRels = &m_oWriter.m_oDocRels; oNewParam.nType = RENDER_TO_OOX_PARAM_UNKNOWN; sResult.Append( m_oDocument[0]->m_oProperty.RenderToOOX(oNewParam) ); sResult.Append( _T("") ); sResult.Append( _T("") ); return sResult; }