mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
124 lines
5.1 KiB
C++
124 lines
5.1 KiB
C++
#include "stdafx.h"
|
||
#include "OOXWriter.h"
|
||
#include "RtfDocument.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"
|
||
#include "../Common/OfficeFileTemplate.h"
|
||
|
||
OOXWriter::OOXWriter( RtfDocument& oDocument, CString sPath ):m_oDocument(oDocument),m_sTargetFolder(sPath),m_oRels( _T(""), oDocument ),m_oDocRels( _T("document.xml"), oDocument )
|
||
{
|
||
nCurFitWidth = PROP_DEF;
|
||
m_poFootnoteWriter = NULL;
|
||
m_poEndnoteWriter = NULL;
|
||
m_sDocumentFolder = _T("word");
|
||
|
||
m_poDocumentWriter = new OOXDocumentWriter( *this, m_oDocument );
|
||
m_poFootnoteWriter = new OOXFootnoteWriter( *this, m_oDocument );
|
||
m_poEndnoteWriter = new OOXEndnoteWriter( *this, m_oDocument );
|
||
m_poDocPropAppWriter = new OOXDocPropAppWriter( *this, m_oDocument );
|
||
m_poDocPropCoreWriter = new OOXDocPropCoreWriter( *this, m_oDocument );
|
||
m_poFontTableWriter = new OOXFontTableWriter( *this, m_oDocument );
|
||
m_poNumberingWriter = new OOXNumberingWriter( *this, m_oDocument );
|
||
m_poSettingsWriter = new OOXSettingsWriter( *this, m_oDocument );
|
||
m_poStylesWriter = new OOXStylesWriter( *this, m_oDocument );
|
||
|
||
}
|
||
OOXWriter::~OOXWriter()
|
||
{
|
||
delete ((OOXDocumentWriter*)m_poDocumentWriter);
|
||
delete ((OOXFootnoteWriter*)m_poFootnoteWriter);
|
||
delete ((OOXEndnoteWriter*)m_poEndnoteWriter);
|
||
delete ((OOXDocPropAppWriter*)m_poDocPropAppWriter);
|
||
delete ((OOXDocPropCoreWriter*)m_poDocPropCoreWriter);
|
||
delete ((OOXFontTableWriter*)m_poFontTableWriter);
|
||
delete ((OOXNumberingWriter*)m_poNumberingWriter);
|
||
delete ((OOXSettingsWriter*)m_poSettingsWriter);
|
||
delete ((OOXStylesWriter*)m_poStylesWriter);
|
||
}
|
||
bool OOXWriter::Save()
|
||
{
|
||
int nItemsCount = ((OOXDocumentWriter*)m_poDocumentWriter)->GetCount();
|
||
SaveByItemStart();
|
||
for( int i = 0; i < nItemsCount; i++ )
|
||
{
|
||
SaveByItem();
|
||
short shCancel = c_shProgressContinue;
|
||
OnProgress( g_cdMaxPercent * i / nItemsCount, &shCancel );
|
||
if( c_shProgressCancel == shCancel )
|
||
break;
|
||
}
|
||
return SaveByItemEnd();
|
||
}
|
||
bool OOXWriter::SaveByItemStart()
|
||
{
|
||
//((OOXFootnoteWriter*)m_poFootnoteWriter)->Save(m_sTargetFolder + _T("\\") + m_sDocumentFolder);
|
||
//((OOXEndnoteWriter*)m_poEndnoteWriter)->Save(m_sTargetFolder + _T("\\") + m_sDocumentFolder);
|
||
|
||
//if( m_oFootnoteSep->GetCount() )
|
||
//{
|
||
// oNewParam = oRenderParameter;
|
||
// oNewParam.poRels = &poFootnoteWriter->m_oRelsWriter;
|
||
// oNewParam.nType = RENDER_TO_OOX_PARAM_UNKNOWN;
|
||
// poFootnoteWriter->AddFootnote( _T("separator"), -1, m_oFootnoteSep->RenderToOOX(oNewParam) );
|
||
//}
|
||
//if( m_oFootnoteCon->GetCount() )
|
||
//{
|
||
// oNewParam = oRenderParameter;
|
||
// oNewParam.poRels = &poFootnoteWriter->m_oRelsWriter;
|
||
// oNewParam.nType = RENDER_TO_OOX_PARAM_UNKNOWN;
|
||
// poFootnoteWriter->AddFootnote( _T("continuationSeparator"), 0, m_oFootnoteCon->RenderToOOX( oNewParam ) );
|
||
//}
|
||
//if( m_oEndnoteSep->GetCount() )
|
||
//{
|
||
// oNewParam = oRenderParameter;
|
||
// oNewParam.poRels = &poEndnoteWriter->m_oRelsWriter;
|
||
// oNewParam.nType = RENDER_TO_OOX_PARAM_UNKNOWN;
|
||
// poEndnoteWriter->AddEndnote( _T("separator"), -1, m_oEndnoteSep->RenderToOOX(oNewParam) );
|
||
//}
|
||
//if( m_oEndnoteCon->GetCount() )
|
||
//{
|
||
// oNewParam = oRenderParameter;
|
||
// oNewParam.poRels = &poEndnoteWriter->m_oRelsWriter;
|
||
// oNewParam.nType = RENDER_TO_OOX_PARAM_UNKNOWN;
|
||
// poEndnoteWriter->AddEndnote( _T("continuationSeparator"), 0, m_oEndnoteSep->RenderToOOX(oNewParam) );
|
||
//}
|
||
|
||
return ((OOXDocumentWriter*)m_poDocumentWriter)->SaveByItemStart( m_sTargetFolder );
|
||
}
|
||
bool OOXWriter::SaveByItem()
|
||
{
|
||
return ((OOXDocumentWriter*)m_poDocumentWriter)->SaveByItem();
|
||
}
|
||
bool OOXWriter::SaveByItemEnd()
|
||
{
|
||
OOXThemeWriter oThemeWr(*this, m_oDocument);
|
||
oThemeWr.Save(m_sTargetFolder);
|
||
|
||
((OOXDocumentWriter*)m_poDocumentWriter)->SaveByItemEnd();
|
||
|
||
((OOXFootnoteWriter*)m_poFootnoteWriter)->Save(m_sTargetFolder + _T("\\") + m_sDocumentFolder);
|
||
((OOXEndnoteWriter*)m_poEndnoteWriter)->Save(m_sTargetFolder + _T("\\") + m_sDocumentFolder);
|
||
((OOXNumberingWriter*)m_poNumberingWriter)->Save(m_sTargetFolder);
|
||
((OOXStylesWriter*)m_poStylesWriter)->Save(m_sTargetFolder);
|
||
((OOXFontTableWriter*)m_poFontTableWriter)->Save(m_sTargetFolder);
|
||
((OOXDocPropAppWriter*)m_poDocPropAppWriter)->Save(m_sTargetFolder);
|
||
((OOXDocPropCoreWriter*)m_poDocPropCoreWriter)->Save(m_sTargetFolder);
|
||
((OOXSettingsWriter*)m_poSettingsWriter)->Save(m_sTargetFolder); //setting <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
bool nResult = true;
|
||
nResult &= m_oContentTypes.Save(m_sTargetFolder);
|
||
nResult &= m_oRels.Save(m_sTargetFolder);
|
||
nResult &= m_oDocRels.Save(m_sTargetFolder + _T("\\") + m_sDocumentFolder);
|
||
for( int i = 0; i < (int)m_oCustomRelsWriter.GetCount(); i++ )
|
||
m_oCustomRelsWriter[i]->Save(m_sTargetFolder + _T("\\") + m_sDocumentFolder);
|
||
return nResult;
|
||
} |