This commit is contained in:
Elena.Subbotina
2024-05-21 20:47:23 +03:00
parent 28f873be5c
commit f28119e646
7 changed files with 62 additions and 8 deletions

View File

@ -904,7 +904,8 @@ namespace PPTX
}
void GraphicFrame::ChartToOlePackageInStorage(OOX::IFileContainer* pRels, const std::wstring &sTempDirectory, int nCurrentGenerateId)
{
{
// AVS_OFFICESTUDIO_FILE_OTHER_PACKAGE_IN_OLE
if (!chartRec.IsInit()) return;
if (olePic.IsInit()) return;

View File

@ -282,7 +282,9 @@ namespace PPTX
ooxml_file = ole_file->filename().GetPath() + (bMacro ? L".docm" : L".docx");
}
else if (checker.nFileType == AVS_OFFICESTUDIO_FILE_PRESENTATION_PPT)
{//todooo
}
if (0 == nRes)
{
COfficeUtils oCOfficeUtils(NULL);
@ -296,6 +298,46 @@ namespace PPTX
ole_file->set_filename(ooxml_file, false);
}
}
else if (checker.nFileType == AVS_OFFICESTUDIO_FILE_OTHER_PACKAGE_IN_OLE)
{
POLE::Storage* storageIn = new POLE::Storage(ole_file->filename().GetPath().c_str());
if ((storageIn) && (storageIn->open(false, false))) //storage in storage
{
POLE::Stream stream(storageIn, L"Package");
if (false == stream.fail())
{//test package stream??? xls ole -> xlsx ole
POLE::uint64 size = stream.size();
unsigned char* data = new unsigned char[size];
stream.read(data, size);
storageIn->close();
std::wstring package = ole_file->filename().GetPath() + L".temp";
NSFile::CFileBinary file;
file.CreateFileW(package);
file.WriteFile(data, (DWORD)size);
file.CloseFile();
COfficeFileFormatChecker checker2;
checker2.isOfficeFile(package);
if (checker2.nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN)
{
std::wstring package2 = package + checker2.GetExtensionByType(checker2.nFileType);
file.CreateFileW(package2);
file.WriteFile(data, (DWORD)size);
file.CloseFile();
ole_file->set_MsPackage(true);
ole_file->set_filename(package2, false);
}
delete[]data;
}
}
delete storageIn;
}
}
if (ole_file.IsInit() && 0 == sProgID.find(L"asc."))
@ -419,7 +461,7 @@ namespace PPTX
delete pXlsxEmbedded;
}
//else if (office_checker.nFileType == AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX)
//{
//{ todooo
//}
else
{//unknown ms package