Commit 6ec3a4cf authored by Sergey.Konovalov's avatar Sergey.Konovalov Committed by Alexander Trofimov

add ASCOfficeUtils lib вместо dll; добавлено const в некоторые интерфейсы классов.

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@59124 954022d7-b5bf-4e40-9824-e11837661b57
parent 73ab9f4b
This diff is collapsed.
......@@ -6208,7 +6208,7 @@ namespace BinDocxRW
//Seek MainTable
m_oBcw.m_oStream.SetPosition(nCurPos);
}
void intoBindoc(CString& sDir) {
void intoBindoc(const CString& sDir) {
NSBinPptxRW::CBinaryFileWriter& oBufferedStream = m_oBcw.m_oStream;
OOX::CDocx oDocx = OOX::CDocx(OOX::CPath(sDir));
......
......@@ -6,6 +6,7 @@
#include "../BinWriter/BinWriters.h"
#include "../BinReader/Readers.h"
#include "../../ASCOfficePPTXFile/Editor/FontPicker.h"
#include "../../ASCOfficeUtils/ASCOfficeUtilsLib/OfficeUtils.h"
#ifndef _WIN32
#include "../../DesktopEditor/common/Types.h"
......@@ -20,7 +21,35 @@ BinDocxRW::CDocxSerializer::CDocxSerializer()
m_bIsNoBase64Save = false;
m_bSaveChartAsImg = false;
}
bool BinDocxRW::CDocxSerializer::saveToFile(CString& sSrcFileName, CString& sDstPath, CString& sXMLOptions)
bool BinDocxRW::CDocxSerializer::ConvertDocxToDoct(const CString& sSrcFileName, const CString& sDstFileName, const CString& sTmpDir, const CString& sXMLOptions)
{
std::wstring strDirSrc = NSSystemPath::Combine(string2std_string(sTmpDir), _T("from"));
std::wstring strEditorBin = NSSystemPath::Combine(strDirSrc, _T("Editor.bin"));
std::wstring strDirDst = NSSystemPath::Combine(string2std_string(sTmpDir), _T("to"));
CString sDirSrc = std_string2string(strDirSrc);
CString sEditorBin = std_string2string(strEditorBin);
COfficeUtils oCOfficeUtils(NULL);
if(oCOfficeUtils.ExtractToDirectory(string2std_string(sSrcFileName), strDirSrc, NULL, 0))
if(saveToFile(sDirSrc, sEditorBin, sXMLOptions))
if(oCOfficeUtils.CompressFileOrDirectory(strDirDst, string2std_string(sDstFileName), -1))
return true;
return false;
}
bool BinDocxRW::CDocxSerializer::ConvertDoctToDocx(const CString& sSrcFileName, const CString& sDstFileName, const CString& sTmpDir, const CString& sXMLOptions, const CString& sThemePath, const CString& sMediaPath)
{
std::wstring strDirSrc = NSSystemPath::Combine(string2std_string(sTmpDir), _T("from"));
std::wstring strEditorBin = NSSystemPath::Combine(strDirSrc, _T("Editor.bin"));
std::wstring strDirDst = NSSystemPath::Combine(string2std_string(sTmpDir), _T("to"));
CString sDirSrc = std_string2string(strDirSrc);
CString sEditorBin = std_string2string(strEditorBin);
COfficeUtils oCOfficeUtils(NULL);
if(oCOfficeUtils.ExtractToDirectory(string2std_string(sSrcFileName), strDirSrc, NULL, 0))
if(loadFromFile(sDirSrc, sEditorBin, sXMLOptions, sThemePath, sMediaPath))
if(oCOfficeUtils.CompressFileOrDirectory(strDirDst, string2std_string(sDstFileName), -1))
return true;
return false;
}
bool BinDocxRW::CDocxSerializer::saveToFile(const CString& sSrcFileName, const CString& sDstPath, const CString& sXMLOptions)
{
//create mediadir
OOX::CPath path(sSrcFileName);
......@@ -91,7 +120,7 @@ bool BinDocxRW::CDocxSerializer::saveToFile(CString& sSrcFileName, CString& sDst
RELEASEOBJECT(pFontPicker);
return true;
}
bool BinDocxRW::CDocxSerializer::loadFromFile(CString& sSrcFileName, CString& sDstPath, CString& sXMLOptions, CString& sThemePath, CString& sMediaPath)
bool BinDocxRW::CDocxSerializer::loadFromFile(const CString& sSrcFileName, const CString& sDstPath, const CString& sXMLOptions, const CString& sThemePath, const CString& sMediaPath)
{
bool bResultOk = false;
NSFile::CFileBinary oFile;
......@@ -224,7 +253,7 @@ bool BinDocxRW::CDocxSerializer::getXmlContent(NSBinPptxRW::CBinaryFileReader& o
sOutputXml = oTempContentWriter.m_oContent.GetData().GetString();
return true;
}
bool BinDocxRW::CDocxSerializer::getBinaryContent(CString& bsTxContent, NSBinPptxRW::CBinaryFileWriter& oBufferedStream, long& lDataSize)
bool BinDocxRW::CDocxSerializer::getBinaryContent(const CString& bsTxContent, NSBinPptxRW::CBinaryFileWriter& oBufferedStream, long& lDataSize)
{
if(NULL == m_oBinaryFileWriter)
return false;
......@@ -257,11 +286,11 @@ bool BinDocxRW::CDocxSerializer::getBinaryContent(CString& bsTxContent, NSBinPpt
lDataSize = nEndPos - nStartPos;
return true;
}
void BinDocxRW::CDocxSerializer::setFontDir(CString& sFontDir)
void BinDocxRW::CDocxSerializer::setFontDir(const CString& sFontDir)
{
m_sFontDir = sFontDir;
}
void BinDocxRW::CDocxSerializer::setEmbeddedFontsDir(CString& sEmbeddedFontsDir)
void BinDocxRW::CDocxSerializer::setEmbeddedFontsDir(const CString& sEmbeddedFontsDir)
{
m_sEmbeddedFontsDir = sEmbeddedFontsDir;
}
......
......@@ -27,12 +27,14 @@ namespace BinDocxRW {
Writers::FileWriter* m_pCurFileWriter;
public:
CDocxSerializer();
bool loadFromFile(CString& sSrcFileName, CString& sDstPath, CString& sXMLOptions, CString& sThemePath, CString& sMediaPath);
bool saveToFile(CString& sSrcFileName, CString& sDstPath, CString& sXMLOptions);
bool ConvertDocxToDoct(const CString& sSrcFileName, const CString& sDstFileName, const CString& sTmpDir, const CString& sXMLOptions);
bool ConvertDoctToDocx(const CString& sSrcFileName, const CString& sDstFileName, const CString& sTmpDir, const CString& sXMLOptions, const CString& sThemePath, const CString& sMediaPath);
bool loadFromFile(const CString& sSrcFileName, const CString& sDstPath, const CString& sXMLOptions, const CString& sThemePath, const CString& sMediaPath);
bool saveToFile(const CString& sSrcFileName, const CString& sDstPath, const CString& sXMLOptions);
bool getXmlContent(NSBinPptxRW::CBinaryFileReader& oBufferedStream, long lLength, CString& sOutputXml);
bool getBinaryContent(CString& bsTxContent, NSBinPptxRW::CBinaryFileWriter& oBufferedStream, long& lDataSize);
void setFontDir(CString& sFontDir);
void setEmbeddedFontsDir(CString& sEmbeddedFontsDir);
bool getBinaryContent(const CString& bsTxContent, NSBinPptxRW::CBinaryFileWriter& oBufferedStream, long& lDataSize);
void setFontDir(const CString& sFontDir);
void setEmbeddedFontsDir(const CString& sEmbeddedFontsDir);
void setIsNoBase64Save(bool bIsNoBase64Save);
void setSaveChartAsImg(bool bSaveChartAsImg);
};
......
......@@ -8,6 +8,7 @@
#include "../ASCOfficePPTXFile/ASCOfficePPTXFile.h"
#include "../Common/DocxFormat/Source/SystemUtility/File.h"
#include "../ASCOfficeUtils/ASCOfficeUtilsLib/OfficeUtils.h"
void comLoadTheme(void* pArg, int nIndex, CString& strDstFolder);
bool comExtractFile(void* pArg, CString& sFile, CString& sDir);
......@@ -194,39 +195,13 @@ void comLoadTheme(void* pArg, int nIndex, CString& strDstFolder)
}
bool comExtractFile(void* pArg, CString& sFile, CString& sDir)
{
OfficeUtils::IOfficeUtils* pOfficeUtils = NULL;
if (S_OK != CoCreateInstance(__uuidof(OfficeUtils::COfficeUtils), NULL, CLSCTX_INPROC_SERVER, __uuidof(OfficeUtils::IOfficeUtils),(void**)&pOfficeUtils))
return false;
BSTR bsFile = sFile.AllocSysString();
BSTR bsDir = sDir.AllocSysString();
HRESULT hr = pOfficeUtils->ExtractToDirectory( bsFile, bsDir, NULL, 0);
SysFreeString(bsFile);
SysFreeString(bsDir);
if(hr != S_OK)
return false;
RELEASEINTERFACE(pOfficeUtils);
return true;
COfficeUtils oCOfficeUtils(NULL);
return S_OK == oCOfficeUtils.ExtractToDirectory(string2std_string(sFile), string2std_string(sDir), NULL, 0) ? true : false;
}
bool comCompressFile(void* pArg, CString& sDir, CString& sFile)
{
OfficeUtils::IOfficeUtils* pOfficeUtils = NULL;
if (S_OK != CoCreateInstance(__uuidof(OfficeUtils::COfficeUtils), NULL, CLSCTX_INPROC_SERVER, __uuidof(OfficeUtils::IOfficeUtils),(void**)&pOfficeUtils))
return false;
BSTR bsDir = sDir.AllocSysString();
BSTR bsFile = sFile.AllocSysString();
HRESULT hr = pOfficeUtils->CompressFileOrDirectory( bsDir, bsFile, -1 );
SysFreeString(bsDir);
SysFreeString(bsFile);
if(hr != S_OK)
return false;
RELEASEINTERFACE(pOfficeUtils);
return true;
COfficeUtils oCOfficeUtils(NULL);
return S_OK == oCOfficeUtils.CompressFileOrDirectory(string2std_string(sDir), string2std_string(sFile), -1) ? true : false;
}
bool comProgress(void* pArg, long ID, long Percent)
{
......
......@@ -74,7 +74,7 @@ namespace ASCGraphics
#endif
#import "../Redist/ASCOfficeUtils.dll" named_guids raw_interfaces_only rename_namespace("OfficeUtils")
//#import "../Redist/ASCOfficeUtils.dll" named_guids raw_interfaces_only rename_namespace("OfficeUtils")
//#import "../Redist/ASCOfficePPTXFile.dll" named_guids raw_interfaces_only rename_namespace("PPTXFile"), exclude("_IAVSOfficeFileTemplateEvents"), exclude("_IAVSOfficeFileTemplateEvents2"), exclude("IASCRenderer")
#include "../Common/DocxFormat/Source/DocxFormat/Docx.h"
......
......@@ -65,7 +65,7 @@ using namespace ATL;
//#include "../ASCImageStudio3/ASCGraphics/Interfaces/ASCRenderer.h"
#include "../Common/Config.h"
#import "../Redist/ASCOfficeUtils.dll" named_guids raw_interfaces_only rename_namespace("OfficeUtils")
//#import "../Redist/ASCOfficeUtils.dll" named_guids raw_interfaces_only rename_namespace("OfficeUtils")
//#import "../Redist/ASCOfficeDocxFile2.dll" named_guids raw_interfaces_only rename_namespace("DocxFile2")
//#import "../Redist/XlsxSerializerCom.dll" named_guids raw_interfaces_only rename_namespace("XlsxCom"), exclude("_IAVSOfficeFileTemplateEvents"), exclude("_IAVSOfficeFileTemplateEvents2")
......
......@@ -121,10 +121,7 @@ namespace ZLibZipUtils
static int mymkdir( const wchar_t* dirname )
{
//todo return
NSDirectory::CreateDirectory(dirname);
return 0;
return NSDirectory::CreateDirectory(dirname) ? 0 : -1;
}
/*========================================================================================================*/
......@@ -159,7 +156,7 @@ namespace ZLibZipUtils
p++;
hold = *p;
*p = 0;
if ((mymkdir(buffer) == -1) && (errno == ENOENT))
if ((mymkdir(buffer) == -1) && !NSDirectory::Exists(buffer))
{
delete[] buffer;
return 0;
......
......@@ -4,6 +4,7 @@
#include <stdio.h>
#include <string>
#include "Array.h"
#include "File.h"
#ifdef WIN32
#include "windows.h"
......@@ -12,7 +13,7 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include "File.h"
#include <dirent.h>
#elif MAC
#endif
......@@ -42,25 +43,119 @@ namespace NSDirectory
}
} while( FindNextFileW( hRes, &oFD ) );
FindClose( hRes );
#elif LINUX
BYTE* pUtf8 = NULL;
LONG lLen = 0;
NSFile::CUtf8Converter::GetUtf8StringFromUnicode(strDirectory.c_str(), strDirectory.length(), pUtf8, lLen, false);
DIR *dp;
struct dirent *dirp;
if((dp = opendir((char*)pUtf8)) != NULL)
{
while ((dirp = readdir(dp)) != NULL)
{
if(DT_REG == dirp->d_type)
{
std::wstring sName = NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)dirp->d_name, strlen(dirp->d_name));
oArray.Add(strDirectory + L"/" + sName);
}
}
}
closedir(dp);
delete [] pUtf8;
#elif MAC
#endif
return oArray;
}
static CArray<std::wstring> GetDirectories(std::wstring strDirectory)
{
CArray<std::wstring> oArray;
#ifdef WIN32
WIN32_FIND_DATAW oFD;
std::wstring sSpec = strDirectory + L"\\*";
HANDLE hRes = FindFirstFileW( sSpec.c_str(), &oFD );
if( INVALID_HANDLE_VALUE == hRes )
return oArray;
do
{
sSpec = oFD.cFileName;
if (sSpec != L"." && sSpec != L"..")
{
sSpec = strDirectory + L"\\" + sSpec;
if( oFD.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
{
oArray.Add(sSpec);
}
}
} while( FindNextFileW( hRes, &oFD ) );
FindClose( hRes );
#elif LINUX
BYTE* pUtf8 = NULL;
LONG lLen = 0;
NSFile::CUtf8Converter::GetUtf8StringFromUnicode(strDirectory.c_str(), strDirectory.length(), pUtf8, lLen, false);
DIR *dp;
struct dirent *dirp;
if((dp = opendir((char*)pUtf8)) != NULL)
{
while ((dirp = readdir(dp)) != NULL)
{
if(DT_DIR == dirp->d_type)
{
if(dirp->d_name[0] != '.')
{
std::wstring sName = NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)dirp->d_name, strlen(dirp->d_name));
oArray.Add(strDirectory + L"/" + sName);
}
}
}
}
closedir(dp);
delete [] pUtf8;
#elif MAC
#endif
return oArray;
}
static void CreateDirectory(const std::wstring& strDirectory)
static bool CreateDirectory(const std::wstring& strDirectory)
{
#ifdef WIN32
::CreateDirectoryW(strDirectory.c_str(), NULL);
return FALSE != ::CreateDirectoryW(strDirectory.c_str(), NULL);
#elif LINUX
BYTE* pUtf8 = NULL;
LONG lLen = 0;
NSFile::CUtf8Converter::GetUtf8StringFromUnicode(strDirectory.c_str(), strDirectory.length(), pUtf8, lLen, false);
struct stat st;
int nRes = 0;
if (stat((char*)pUtf8, &st) == -1) {
mkdir((char*)pUtf8, S_IRWXU | S_IRWXG | S_IRWXO);
nRes = mkdir((char*)pUtf8, S_IRWXU | S_IRWXG | S_IRWXO);
}
delete [] pUtf8;
return 0 == nRes;
#elif MAC
return false;
#endif
}
static void DeleteDirectory(const std::wstring& strDirectory)
{
CArray<std::wstring> aFiles = GetFiles(strDirectory);
for(int i = 0; i < aFiles.GetCount(); ++i)
{
NSFile::CFileBinary::Remove(aFiles[i]);
}
CArray<std::wstring> aDirectories = GetDirectories(strDirectory);
for(int i = 0; i < aDirectories.GetCount(); ++i)
{
DeleteDirectory(aDirectories[i]);
}
#ifdef WIN32
RemoveDirectoryW(strDirectory.c_str());
#elif LINUX
BYTE* pUtf8 = NULL;
LONG lLen = 0;
NSFile::CUtf8Converter::GetUtf8StringFromUnicode(strDirectory.c_str(), strDirectory.length(), pUtf8, lLen, false);
rmdir((char*)pUtf8);
delete [] pUtf8;
#elif MAC
#endif
......
......@@ -6,7 +6,7 @@
#include "File.h"
#ifdef WIN32
#include <wchar.h>
#include <tchar.h>
#elif LINUX
#include <libgen.h>
#elif MAC
......@@ -76,7 +76,7 @@ namespace NSSystemPath
sRes = strLeft + strRight.substr(1);
}
else if(!bLeftSlash && !bRightSlash)
sRes = strLeft + _T("/") + strRight;
sRes = strLeft + L"/" + strRight;
else
sRes = strLeft + strRight;
return sRes;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment