mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
78 lines
2.2 KiB
C++
78 lines
2.2 KiB
C++
#include "stdafx.h"
|
|
#include "DocxFile.h"
|
|
#include "SimpleDocxFormat.h"
|
|
|
|
COfficeDocxFile::COfficeDocxFile()
|
|
{
|
|
}
|
|
|
|
|
|
HRESULT COfficeDocxFile::FinalConstruct()
|
|
{
|
|
m_pOfficeUtils = NULL;
|
|
return CoCreateInstance(__uuidof(COfficeUtils), NULL, CLSCTX_INPROC_SERVER, __uuidof(IOfficeUtils), (void **)&(this->m_pOfficeUtils));
|
|
}
|
|
|
|
|
|
void COfficeDocxFile::FinalRelease()
|
|
{
|
|
if (m_pOfficeUtils != NULL )
|
|
{
|
|
m_pOfficeUtils->Release();
|
|
m_pOfficeUtils = NULL;
|
|
}
|
|
}
|
|
|
|
|
|
STDMETHODIMP COfficeDocxFile::LoadFromFile(BSTR sSrcFileName, BSTR sDstPath, BSTR sXMLOptions)
|
|
{
|
|
OfficeUtilsEvents< _IAVSOfficeUtilsEvents, COfficeDocxFile >* oEventUtils = new OfficeUtilsEvents< _IAVSOfficeUtilsEvents, COfficeDocxFile >(this);
|
|
oEventUtils->AddRef();
|
|
oEventUtils->Advise( m_pOfficeUtils );
|
|
|
|
const HRESULT extractResult = m_pOfficeUtils->ExtractToDirectory(sSrcFileName, sDstPath, NULL, 0);
|
|
|
|
oEventUtils->UnAdvise( m_pOfficeUtils );
|
|
oEventUtils->Release();
|
|
|
|
if ( extractResult != S_OK )
|
|
{
|
|
return extractResult;
|
|
}
|
|
|
|
XmlUtils::CXmlReader oXmlReader;
|
|
if( TRUE == oXmlReader.OpenFromXmlString( sXMLOptions ) )
|
|
if( TRUE == oXmlReader.ReadRootNode( _T("Options") ) )
|
|
if( TRUE == oXmlReader.ReadNode( _T("ExtractOption") ) )
|
|
if( TRUE == oXmlReader.ReadNode( _T("Images") ) )
|
|
{
|
|
CString sResultPath = oXmlReader.ReadNodeAttribute( _T("path") );
|
|
CString sSourcePath = sDstPath;
|
|
|
|
SimpleDocxFormat oSimpleDocxFormat;
|
|
oSimpleDocxFormat.ExtractImages( sSourcePath, sResultPath );
|
|
}
|
|
return S_OK;
|
|
}
|
|
|
|
|
|
STDMETHODIMP COfficeDocxFile::SaveToFile(BSTR sDstFileName, BSTR sSrcPath, BSTR sXMLOptions)
|
|
{
|
|
OfficeUtilsEvents< _IAVSOfficeUtilsEvents, COfficeDocxFile >* oEventUtils = new OfficeUtilsEvents< _IAVSOfficeUtilsEvents, COfficeDocxFile >(this);
|
|
oEventUtils->AddRef();
|
|
oEventUtils->Advise( m_pOfficeUtils );
|
|
|
|
const HRESULT compressResult = m_pOfficeUtils->CompressFileOrDirectory(sSrcPath, sDstFileName, ZIP_DEFAULT_COMPRESSION);
|
|
|
|
oEventUtils->UnAdvise( m_pOfficeUtils );
|
|
oEventUtils->Release();
|
|
|
|
return compressResult;
|
|
}
|
|
|
|
|
|
STDMETHODIMP COfficeDocxFile::AddObjects(BSTR sSrcPath, BSTR sXMLOptions)
|
|
{
|
|
SimpleDocxFormat oSimpleDocxFormat;
|
|
return oSimpleDocxFormat.AddObject( sSrcPath, sXMLOptions );
|
|
} |