#ifndef DOCUMENT_WRITER #define DOCUMENT_WRITER #include "../../XlsxSerializerCom/Common/Common.h" #include "../BinWriter/BinReaderWriterDefines.h"; namespace Writers { class DocumentWriter : public ContentWriter { XmlUtils::CStringWriter m_oWriter; HeaderFooterWriter& m_oHeaderFooterWriter; public: CString m_sDir; public: DocumentWriter(CString sDir, HeaderFooterWriter& oHeaderFooterWriter):m_sDir(sDir), m_oHeaderFooterWriter(oHeaderFooterWriter) { } void Write() { OOX::CPath filePath = m_sDir + FILE_SEPARATOR_STR + _T("word") +FILE_SEPARATOR_STR + _T("document.xml"); CFile oFile; oFile.CreateFile(filePath.GetPath()); oFile.WriteStringUTF8(CString(_T(""))); oFile.WriteStringUTF8(m_oContent.GetData()); oFile.WriteStringUTF8(CString(_T(""))); oFile.WriteStringUTF8(WriteSectPrHdrFtr()); oFile.WriteStringUTF8(m_oSecPr.GetData()); oFile.WriteStringUTF8(CString(_T(""))); oFile.WriteStringUTF8(CString(_T(""))); oFile.CloseFile(); } CString WriteSectPrHdrFtr() { CString sResult; if(BinDocxRW::g_nCurFormatVersion < 5) { bool bTitlePage = false; for(int i = 0, length = m_oHeaderFooterWriter.m_aHeaders.size(); i < length; ++i) { HdrFtrItem* pHeader = m_oHeaderFooterWriter.m_aHeaders[i]; if(false == pHeader->rId.IsEmpty()) { if(SimpleTypes::hdrftrFirst == pHeader->eType) { sResult += _T("rId + _T("\"/>"); bTitlePage = true; } else if(SimpleTypes::hdrftrEven == pHeader->eType) { sResult += _T("rId + _T("\"/>"); } else { sResult += _T("rId + _T("\"/>"); } } } for(int i = 0, length = m_oHeaderFooterWriter.m_aFooters.size(); i < length; ++i) { HdrFtrItem* pFooter = m_oHeaderFooterWriter.m_aFooters[i]; if(false == pFooter->rId.IsEmpty()) { if(SimpleTypes::hdrftrFirst == pFooter->eType) { sResult += _T("rId + _T("\"/>"); bTitlePage = true; } else if(SimpleTypes::hdrftrEven == pFooter->eType) { sResult += _T("rId + _T("\"/>"); } else { sResult += _T("rId + _T("\"/>"); } } } if(true == bTitlePage) sResult += _T(""); } return sResult; } }; } #endif // #ifndef DOCUMENT_WRITER