From add2c299545605c4e2ceda3a9ecdbc8032d4f6ba Mon Sep 17 00:00:00 2001 From: Oleg Korshul Date: Wed, 6 Sep 2023 19:57:49 +0300 Subject: [PATCH] Add ProcessEnv class for global process properties --- Common/OfficeFileFormatChecker.h | 83 +- Common/OfficeFileFormatChecker2.cpp | 1135 ++-- Common/kernel.pro | 4 + DesktopEditor/common/ProcessEnv.cpp | 210 + DesktopEditor/common/ProcessEnv.h | 71 + DesktopEditor/doctrenderer/docbuilder_p.cpp | 4 + DesktopEditor/doctrenderer/docbuilder_p.h | 11 + DesktopEditor/xml/include/xmlutils.h | 1 + DesktopEditor/xml/src/xmldom.cpp | 561 +- X2tConverter/src/ASCConverters.cpp | 5974 ++++++++++--------- X2tConverter/src/ASCConverters.h | 332 +- X2tConverter/src/cextracttools.cpp | 870 +-- X2tConverter/src/cextracttools.h | 1372 +++-- X2tConverter/src/main.cpp | 116 +- 14 files changed, 5769 insertions(+), 4975 deletions(-) create mode 100644 DesktopEditor/common/ProcessEnv.cpp create mode 100644 DesktopEditor/common/ProcessEnv.h diff --git a/Common/OfficeFileFormatChecker.h b/Common/OfficeFileFormatChecker.h index 6388db0cb7..a147b799cd 100644 --- a/Common/OfficeFileFormatChecker.h +++ b/Common/OfficeFileFormatChecker.h @@ -42,14 +42,14 @@ namespace POLE class COfficeFileFormatChecker { public: - int nFileType; - bool bMacroEnabled; - std::wstring sDocumentID; - + int nFileType; + bool bMacroEnabled; + std::wstring sDocumentID; + COfficeFileFormatChecker() { - nFileType = AVS_OFFICESTUDIO_FILE_UNKNOWN; - bMacroEnabled = false; + nFileType = AVS_OFFICESTUDIO_FILE_UNKNOWN; + bMacroEnabled = false; } COfficeFileFormatChecker(std::wstring sFileName) { @@ -57,53 +57,52 @@ public: isOfficeFile(sFileName); } - - bool isOfficeFile(const std::wstring & fileName); - bool isVbaProjectFile(const std::wstring & fileName); - std::wstring GetFormatExtension(const std::wstring & fileName); + bool isOfficeFile(const std::wstring& fileName); + bool isVbaProjectFile(const std::wstring& fileName); + + std::wstring GetFormatExtension(const std::wstring& fileName); std::wstring GetExtensionByType(int type); static int GetFormatByExtension(const std::wstring& ext); - bool isOOXFormatFile (const std::wstring & fileName, bool unpacked = false); - bool isOpenOfficeFormatFile (const std::wstring & fileName, std::wstring & documentID); - bool isOnlyOfficeFormatFile (const std::wstring & fileName); + bool isOOXFormatFile(const std::wstring& fileName, bool unpacked = false); + bool isOpenOfficeFormatFile(const std::wstring& fileName, std::wstring& documentID); + bool isOnlyOfficeFormatFile(const std::wstring& fileName); - bool isDocFormatFile (const std::wstring & fileName); - bool isXlsFormatFile (const std::wstring & fileName); + bool isDocFormatFile(const std::wstring& fileName); + bool isXlsFormatFile(const std::wstring& fileName); - bool isOleObjectFile (POLE::Storage* storage); - bool isDocFormatFile (POLE::Storage *storage); - bool isXlsFormatFile (POLE::Storage *storage); - bool isPptFormatFile (POLE::Storage *storage); - bool isMS_OFFICECRYPTOFormatFile(POLE::Storage * storage, std::wstring & documentID); - bool isMS_MITCRYPTOFormatFile(POLE::Storage * storage, std::wstring & documentID); - bool isVbaProjectFile(POLE::Storage * storage); - bool isMS_OFFCRYPTOFormatFile (const std::wstring & fileName, std::wstring & documentID); + bool isOleObjectFile(POLE::Storage* storage); + bool isDocFormatFile(POLE::Storage* storage); + bool isXlsFormatFile(POLE::Storage* storage); + bool isPptFormatFile(POLE::Storage* storage); + bool isMS_OFFICECRYPTOFormatFile(POLE::Storage* storage, std::wstring& documentID); + bool isMS_MITCRYPTOFormatFile(POLE::Storage* storage, std::wstring& documentID); + bool isVbaProjectFile(POLE::Storage* storage); + bool isMS_OFFCRYPTOFormatFile(const std::wstring& fileName, std::wstring& documentID); - bool iXmlFile(const std::wstring & fileName); + bool iXmlFile(const std::wstring& fileName); + + std::wstring getDocumentID(const std::wstring& fileName); + + bool isOOXFlatFormatFile(unsigned char* pBuffer, int dwBytes); + + bool isDocFlatFormatFile(unsigned char* pBuffer, int dwBytes); - std::wstring getDocumentID (const std::wstring & fileName); - - bool isOOXFlatFormatFile(unsigned char* pBuffer,int dwBytes); - - bool isDocFlatFormatFile(unsigned char* pBuffer,int dwBytes); - bool isXlsFlatFormatFile(unsigned char* pBuffer, int dwBytes); - bool isRtfFormatFile (unsigned char* pBuffer,int dwBytes); - bool isHtmlFormatFile (unsigned char* pBuffer,int dwBytes, bool testCloseTag); + bool isRtfFormatFile(unsigned char* pBuffer, int dwBytes); + bool isHtmlFormatFile(unsigned char* pBuffer, int dwBytes, bool testCloseTag); bool isMultiPartsHtmlFormatFile(unsigned char* pBuffer, int dwBytes); - bool isPdfFormatFile (unsigned char* pBuffer,int dwBytes, std::wstring & documentID); - bool isOpenOfficeFlatFormatFile(unsigned char* pBuffer,int dwBytes); + bool isPdfFormatFile(unsigned char* pBuffer, int dwBytes, std::wstring& documentID); + bool isOpenOfficeFlatFormatFile(unsigned char* pBuffer, int dwBytes); - bool isBinaryDoctFormatFile (unsigned char* pBuffer,int dwBytes); - bool isBinaryXlstFormatFile (unsigned char* pBuffer,int dwBytes); - bool isBinaryPpttFormatFile (unsigned char* pBuffer,int dwBytes); - - bool isDjvuFormatFile(unsigned char* pBuffer,int dwBytes); - bool isMobiFormatFile(unsigned char* pBuffer,int dwBytes); - bool isFB2FormatFile(unsigned char* pBuffer,int dwBytes); - bool isXpsFile(const std::wstring & fileName); + bool isBinaryDoctFormatFile(unsigned char* pBuffer, int dwBytes); + bool isBinaryXlstFormatFile(unsigned char* pBuffer, int dwBytes); + bool isBinaryPpttFormatFile(unsigned char* pBuffer, int dwBytes); + bool isDjvuFormatFile(unsigned char* pBuffer, int dwBytes); + bool isMobiFormatFile(unsigned char* pBuffer, int dwBytes); + bool isFB2FormatFile(unsigned char* pBuffer, int dwBytes); + bool isXpsFile(const std::wstring& fileName); }; diff --git a/Common/OfficeFileFormatChecker2.cpp b/Common/OfficeFileFormatChecker2.cpp index 425455c642..3174090705 100644 --- a/Common/OfficeFileFormatChecker2.cpp +++ b/Common/OfficeFileFormatChecker2.cpp @@ -32,12 +32,12 @@ #include "OfficeFileFormatChecker.h" #include "../DesktopEditor/common/Directory.h" -#include "../OfficeUtils/src/OfficeUtils.h" #include "../DesktopEditor/xml/include/xmlutils.h" #include "../OOXML/Base/Base.h" -//#if defined FILE_FORMAT_CHECKER_WITH_MACRO +#include "../OfficeUtils/src/OfficeUtils.h" +// #if defined FILE_FORMAT_CHECKER_WITH_MACRO // #include "../MsBinaryFile/PptFile/Main/PPTFormatLib.h" -//#endif +// #endif #include "3dParty/pole/pole.h" #include @@ -45,21 +45,24 @@ #define MIN_SIZE_BUFFER 4096 #define MAX_SIZE_BUFFER 102400 -std::string ReadStringFromOle(POLE::Stream* stream, unsigned int max_size) +std::string ReadStringFromOle(POLE::Stream *stream, unsigned int max_size) { std::string result; - - if (!stream) return result; + + if (!stream) + return result; _UINT32 cch = 0; - if (4 != stream->read((BYTE*)&cch, 4)) return result; + if (4 != stream->read((BYTE *)&cch, 4)) + return result; - unsigned char* stringBytes = new unsigned char[max_size]; - if (!stringBytes) return result; + unsigned char *stringBytes = new unsigned char[max_size]; + if (!stringBytes) + return result; if (cch > max_size) { - //error ... skip to 0 + // error ... skip to 0 unsigned int pos_orinal = stream->tell(); unsigned int pos = 0; @@ -77,34 +80,36 @@ std::string ReadStringFromOle(POLE::Stream* stream, unsigned int max_size) { if (cch > 0) { - //dont read the terminating zero + // dont read the terminating zero cch = stream->read(stringBytes, cch); - result = std::string((char*)stringBytes, cch); + result = std::string((char *)stringBytes, cch); } } RELEASEARRAYOBJECTS(stringBytes); - //skip the terminating zero of the Unicode string + // skip the terminating zero of the Unicode string stream->seek(stream->tell() + 2); return result; } -bool COfficeFileFormatChecker::isRtfFormatFile(unsigned char* pBuffer,int dwBytes) +bool COfficeFileFormatChecker::isRtfFormatFile(unsigned char *pBuffer, int dwBytes) { - if (pBuffer == NULL) return false; + if (pBuffer == NULL) + return false; - if ( (5 <= dwBytes) && ( '{' == pBuffer[0] && '\\' == pBuffer[1] && 'r' == pBuffer[2] && 't' == pBuffer[3] && 'f' == pBuffer[4] )) + if ((5 <= dwBytes) && ('{' == pBuffer[0] && '\\' == pBuffer[1] && 'r' == pBuffer[2] && 't' == pBuffer[3] && 'f' == pBuffer[4])) return true; return false; } -bool COfficeFileFormatChecker::isMultiPartsHtmlFormatFile(unsigned char* pBuffer, int dwBytes) +bool COfficeFileFormatChecker::isMultiPartsHtmlFormatFile(unsigned char *pBuffer, int dwBytes) { - if (pBuffer == NULL) return false; + if (pBuffer == NULL) + return false; const char *contentTypeFormatLine1 = "Content-Type: multipart/related"; const char *contentTypeFormatLine2 = "Content-Type: text/html"; // может быть и вне заданого буфера (todooo) - std::string xml_string((char*)pBuffer, dwBytes); + std::string xml_string((char *)pBuffer, dwBytes); if ((std::string::npos != xml_string.find(contentTypeFormatLine1)) && (std::string::npos != xml_string.find(contentTypeFormatLine2))) { @@ -113,38 +118,37 @@ bool COfficeFileFormatChecker::isMultiPartsHtmlFormatFile(unsigned char* pBuffer return false; } -bool COfficeFileFormatChecker::iXmlFile(const std::wstring & fileName) +bool COfficeFileFormatChecker::iXmlFile(const std::wstring &fileName) { XmlUtils::CXmlLiteReader oReader; if (!oReader.FromFile(fileName)) return false; if (!oReader.ReadNextNode()) return false; - + return true; } -bool COfficeFileFormatChecker::isHtmlFormatFile(unsigned char* pBuffer, int dwBytes, bool testCloseTag) +bool COfficeFileFormatChecker::isHtmlFormatFile(unsigned char *pBuffer, int dwBytes, bool testCloseTag) { - if (pBuffer == NULL || dwBytes < 4) return false; + if (pBuffer == NULL || dwBytes < 4) + return false; + + bool tagOpen = false; - bool tagOpen = false; - if (testCloseTag && dwBytes > 5) { for (int i = 0; i < dwBytes - 6; i++) { - if ((0x3C == pBuffer[i]) && (0x2F == pBuffer[i +1]) && (0x48 == pBuffer[i + 2] || 0x68 == pBuffer[i + 2]) - && (0x54 == pBuffer[i + 3] || 0x74 == pBuffer[i + 3]) - && (0x4d == pBuffer[i + 4] || 0x6d == pBuffer[i + 4]) - && (0x4c == pBuffer[i + 5] || 0x6c == pBuffer[i + 5])) + if ((0x3C == pBuffer[i]) && (0x2F == pBuffer[i + 1]) && (0x48 == pBuffer[i + 2] || 0x68 == pBuffer[i + 2]) && (0x54 == pBuffer[i + 3] || 0x74 == pBuffer[i + 3]) && + (0x4d == pBuffer[i + 4] || 0x6d == pBuffer[i + 4]) && (0x4c == pBuffer[i + 5] || 0x6c == pBuffer[i + 5])) { return true; } - else if ((0x3C == pBuffer[i]) && (0x2F == pBuffer[i + 1]) && (0x62 == pBuffer[i + 2]) - && (0x6f == pBuffer[i + 3]) && (0x64 == pBuffer[i + 4]) && (0x79 == pBuffer[i + 5]) - && (0x3e == pBuffer[i + 6])) - {// + else if ( + (0x3C == pBuffer[i]) && (0x2F == pBuffer[i + 1]) && (0x62 == pBuffer[i + 2]) && (0x6f == pBuffer[i + 3]) && (0x64 == pBuffer[i + 4]) && (0x79 == pBuffer[i + 5]) && + (0x3e == pBuffer[i + 6])) + { // return true; } } @@ -157,8 +161,9 @@ bool COfficeFileFormatChecker::isHtmlFormatFile(unsigned char* pBuffer, int dwBy tagOpen = true; else if (0x3E == pBuffer[i]) tagOpen = false; - else if (tagOpen && (0x48 == pBuffer[i] || 0x68 == pBuffer[i]) && (0x54 == pBuffer[i + 1] || 0x74 == pBuffer[i + 1]) - && (0x4d == pBuffer[i + 2] || 0x6d == pBuffer[i + 2]) && (0x4c == pBuffer[i + 3] || 0x6c == pBuffer[i + 3])) + else if ( + tagOpen && (0x48 == pBuffer[i] || 0x68 == pBuffer[i]) && (0x54 == pBuffer[i + 1] || 0x74 == pBuffer[i + 1]) && (0x4d == pBuffer[i + 2] || 0x6d == pBuffer[i + 2]) && + (0x4c == pBuffer[i + 3] || 0x6c == pBuffer[i + 3])) { return true; } @@ -167,70 +172,75 @@ bool COfficeFileFormatChecker::isHtmlFormatFile(unsigned char* pBuffer, int dwBy return false; } -bool COfficeFileFormatChecker::isBinaryDoctFormatFile (unsigned char* pBuffer,int dwBytes) +bool COfficeFileFormatChecker::isBinaryDoctFormatFile(unsigned char *pBuffer, int dwBytes) { - if (pBuffer == NULL) return false; + if (pBuffer == NULL) + return false; - if ( (4 <= dwBytes) && ( 'D' == pBuffer[0] && 'O' == pBuffer[1] && 'C' == pBuffer[2] && 'Y' == pBuffer[3] )) - return true; - - return false; -} -bool COfficeFileFormatChecker::isBinaryXlstFormatFile (unsigned char* pBuffer,int dwBytes) -{ - if (pBuffer == NULL) return false; - - if ( (4 <= dwBytes) && ( 'X' == pBuffer[0] && 'L' == pBuffer[1] && 'S' == pBuffer[2] && 'Y' == pBuffer[3] )) - return true; - - return false; -} -bool COfficeFileFormatChecker::isBinaryPpttFormatFile (unsigned char* pBuffer,int dwBytes) -{ - if (pBuffer == NULL) return false; - - if ( (4 <= dwBytes) && ( 'P' == pBuffer[0] && 'P' == pBuffer[1] && 'T' == pBuffer[2] && 'Y' == pBuffer[3] )) + if ((4 <= dwBytes) && ('D' == pBuffer[0] && 'O' == pBuffer[1] && 'C' == pBuffer[2] && 'Y' == pBuffer[3])) return true; return false; } -bool COfficeFileFormatChecker::isPdfFormatFile (unsigned char* pBuffer,int dwBytes, std::wstring & documentID) +bool COfficeFileFormatChecker::isBinaryXlstFormatFile(unsigned char *pBuffer, int dwBytes) { - if (pBuffer == NULL) return false; + if (pBuffer == NULL) + return false; + + if ((4 <= dwBytes) && ('X' == pBuffer[0] && 'L' == pBuffer[1] && 'S' == pBuffer[2] && 'Y' == pBuffer[3])) + return true; + + return false; +} +bool COfficeFileFormatChecker::isBinaryPpttFormatFile(unsigned char *pBuffer, int dwBytes) +{ + if (pBuffer == NULL) + return false; + + if ((4 <= dwBytes) && ('P' == pBuffer[0] && 'P' == pBuffer[1] && 'T' == pBuffer[2] && 'Y' == pBuffer[3])) + return true; + + return false; +} +bool COfficeFileFormatChecker::isPdfFormatFile(unsigned char *pBuffer, int dwBytes, std::wstring &documentID) +{ + if (pBuffer == NULL) + return false; documentID.clear(); - if (dwBytes < 1) - return false; + if (dwBytes < 1) + return false; - pBuffer[dwBytes - 1] = '\0'; + pBuffer[dwBytes - 1] = '\0'; - char* pFirst = strstr( (char*)pBuffer, "%PDF-" ); - - if( NULL != pFirst ) + char *pFirst = strstr((char *)pBuffer, "%PDF-"); + + if (NULL != pFirst) { - pFirst = strstr( (char*)pBuffer, "%DocumentID " ); - if( NULL != pFirst ) + pFirst = strstr((char *)pBuffer, "%DocumentID "); + if (NULL != pFirst) { pFirst += 12; - char* pLast = strstr( pFirst, " "); - if( NULL != pLast ) + char *pLast = strstr(pFirst, " "); + if (NULL != pLast) { std::string s(pFirst, pLast - pFirst); - documentID = NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)s.c_str(), s.length()); + documentID = NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE *)s.c_str(), s.length()); } } - return true; + return true; } return false; } -bool COfficeFileFormatChecker::isOleObjectFile(POLE::Storage* storage) +bool COfficeFileFormatChecker::isOleObjectFile(POLE::Storage *storage) { - if (storage == NULL) return false; + if (storage == NULL) + return false; POLE::Stream streamOle(storage, L"Ole"); - + if (false == streamOle.fail()) { std::string UserType, ClipboardFormat, Program; @@ -239,7 +249,7 @@ bool COfficeFileFormatChecker::isOleObjectFile(POLE::Storage* storage) if (false == streamCompObject.fail()) { streamCompObject.seek(28); // skip Header - + unsigned int sz_obj = streamCompObject.size() - streamCompObject.tell(); if (sz_obj > 4) @@ -269,16 +279,16 @@ bool COfficeFileFormatChecker::isOleObjectFile(POLE::Storage* storage) if (false == streamLinkInfo.fail()) { short cch = 0; - if (2 == streamLinkInfo.read((BYTE*)&cch, 2)) + if (2 == streamLinkInfo.read((BYTE *)&cch, 2)) { - unsigned char* str = new unsigned char[cch]; + unsigned char *str = new unsigned char[cch]; cch = streamLinkInfo.read(str, cch); - ClipboardFormat = std::string((char*)str, cch); + ClipboardFormat = std::string((char *)str, cch); RELEASEARRAYOBJECTS(str); streamLinkInfo.seek(streamLinkInfo.tell() + 6); - //skip ... + // skip ... } return true; } @@ -286,33 +296,34 @@ bool COfficeFileFormatChecker::isOleObjectFile(POLE::Storage* storage) } return false; } -bool COfficeFileFormatChecker::isDocFormatFile (POLE::Storage * storage) +bool COfficeFileFormatChecker::isDocFormatFile(POLE::Storage *storage) { - if (storage == NULL) return false; + if (storage == NULL) + return false; + + POLE::Stream stream(storage, L"WordDocument"); - POLE::Stream stream(storage, L"WordDocument"); - unsigned char buffer[64]; memset(buffer, 0, 64); if (stream.read(buffer, 64) > 0) { - //ms office 2007 encrypted contains stream WordDocument !! + // ms office 2007 encrypted contains stream WordDocument !! std::list entries = storage->entries(L"DataSpaces"); if (entries.size() > 0) return false; - - if ((buffer[0] == 0xEC && buffer[1] == 0xA5) || // word 1997-2003 - (buffer[0] == 0xDC && buffer[1] == 0xA5) || // word 1995 - (buffer[0] == 0xDB && buffer[1] == 0xA5)) // word 2.0 + + if ((buffer[0] == 0xEC && buffer[1] == 0xA5) || // word 1997-2003 + (buffer[0] == 0xDC && buffer[1] == 0xA5) || // word 1995 + (buffer[0] == 0xDB && buffer[1] == 0xA5)) // word 2.0 { nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC; } - else if ( isHtmlFormatFile(buffer, 64, false) ) - { - nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML_IN_CONTAINER; - return true; - } + else if (isHtmlFormatFile(buffer, 64, false)) + { + nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML_IN_CONTAINER; + return true; + } if (storage->isDirectory(L"Macros")) { bMacroEnabled = true; @@ -322,12 +333,13 @@ bool COfficeFileFormatChecker::isDocFormatFile (POLE::Storage * storage) return false; } -bool COfficeFileFormatChecker::isVbaProjectFile(POLE::Storage * storage) +bool COfficeFileFormatChecker::isVbaProjectFile(POLE::Storage *storage) { - if (storage == NULL) return false; - + if (storage == NULL) + return false; + unsigned char buffer[10]; - + POLE::Stream stream(storage, L"PROJECT"); if (stream.read(buffer, 10) < 1) { @@ -336,7 +348,7 @@ bool COfficeFileFormatChecker::isVbaProjectFile(POLE::Storage * storage) if (false == storage->isDirectory(L"VBA")) { return false; - } + } POLE::Stream stream2(storage, L"VBA/dir"); if (stream2.read(buffer, 10) < 1) { @@ -344,31 +356,32 @@ bool COfficeFileFormatChecker::isVbaProjectFile(POLE::Storage * storage) } return true; } -bool COfficeFileFormatChecker::isXlsFormatFile (POLE::Storage * storage) +bool COfficeFileFormatChecker::isXlsFormatFile(POLE::Storage *storage) { - if (storage == NULL) return false; + if (storage == NULL) + return false; - unsigned char buffer[10]; + unsigned char buffer[10]; - POLE::Stream stream(storage, L"Workbook"); - - if (stream.read(buffer,10) < 1) + POLE::Stream stream(storage, L"Workbook"); + + if (stream.read(buffer, 10) < 1) { POLE::Stream stream2(storage, L"Book"); - if (stream2.read(buffer,10) < 1) + if (stream2.read(buffer, 10) < 1) { POLE::Stream stream3(storage, L"WORKBOOK"); - if (stream3.read(buffer,10) < 1) + if (stream3.read(buffer, 10) < 1) { POLE::Stream stream4(storage, L"BOOK"); - if (stream4.read(buffer,10) < 1) + if (stream4.read(buffer, 10) < 1) { POLE::Stream stream5(storage, L"book"); - if (stream5.read(buffer,10) < 1) + if (stream5.read(buffer, 10) < 1) return false; } } @@ -380,59 +393,58 @@ bool COfficeFileFormatChecker::isXlsFormatFile (POLE::Storage * storage) } return true; } -bool COfficeFileFormatChecker::isDocFlatFormatFile (unsigned char* pBuffer, int dwBytes) +bool COfficeFileFormatChecker::isDocFlatFormatFile(unsigned char *pBuffer, int dwBytes) { - if (pBuffer == NULL || dwBytes < 2) return false; + if (pBuffer == NULL || dwBytes < 2) + return false; - if ((pBuffer[0] == 0xEC && pBuffer[1] == 0xA5) || - (pBuffer[0] == 0xDC && pBuffer[1] == 0xA5) || - (pBuffer[0] == 0xDB && pBuffer[1] == 0xA5)) + if ((pBuffer[0] == 0xEC && pBuffer[1] == 0xA5) || (pBuffer[0] == 0xDC && pBuffer[1] == 0xA5) || (pBuffer[0] == 0xDB && pBuffer[1] == 0xA5)) return true; return false; } -bool COfficeFileFormatChecker::isXlsFlatFormatFile(unsigned char* pBuffer, int dwBytes) +bool COfficeFileFormatChecker::isXlsFlatFormatFile(unsigned char *pBuffer, int dwBytes) { - if (pBuffer == NULL || dwBytes < 2) return false; + if (pBuffer == NULL || dwBytes < 2) + return false; // BOF started - if ((pBuffer[1] == 0x08 && pBuffer[0] == 0x09) || - (pBuffer[1] == 0x04 && pBuffer[0] == 0x09) || - (pBuffer[1] == 0x02 && pBuffer[0] == 0x09) || + if ((pBuffer[1] == 0x08 && pBuffer[0] == 0x09) || (pBuffer[1] == 0x04 && pBuffer[0] == 0x09) || (pBuffer[1] == 0x02 && pBuffer[0] == 0x09) || (pBuffer[2] == 0x04 && pBuffer[0] == 0x09 && pBuffer[1] == 0x00 && pBuffer[3] == 0x00)) return true; return false; } -bool COfficeFileFormatChecker::isPptFormatFile (POLE::Storage * storage) +bool COfficeFileFormatChecker::isPptFormatFile(POLE::Storage *storage) { - if (storage == NULL) return false; + if (storage == NULL) + return false; - POLE::Stream stream(storage, L"PowerPoint Document"); + POLE::Stream stream(storage, L"PowerPoint Document"); unsigned char buffer[10]; - if (stream.read(buffer,10) < 1) + if (stream.read(buffer, 10) < 1) return false; return true; } -std::wstring COfficeFileFormatChecker::getDocumentID (const std::wstring & _fileName ) +std::wstring COfficeFileFormatChecker::getDocumentID(const std::wstring &_fileName) { #if defined(_WIN32) || defined(_WIN32_WCE) || defined(_WIN64) - std::wstring fileName = CorrectPathW(_fileName); + std::wstring fileName = CorrectPathW(_fileName); #else - std::wstring fileName = _fileName; + std::wstring fileName = _fileName; #endif std::wstring documentID; POLE::Storage storage(fileName.c_str()); - if (storage.open()) - { - if ( isMS_OFFICECRYPTOFormatFile(&storage, documentID) ) - { - nFileType = AVS_OFFICESTUDIO_FILE_OTHER_MS_OFFCRYPTO; - } + if (storage.open()) + { + if (isMS_OFFICECRYPTOFormatFile(&storage, documentID)) + { + nFileType = AVS_OFFICESTUDIO_FILE_OTHER_MS_OFFCRYPTO; + } else if (isMS_MITCRYPTOFormatFile(&storage, documentID)) { nFileType = AVS_OFFICESTUDIO_FILE_OTHER_MS_MITCRYPTO; @@ -440,20 +452,24 @@ std::wstring COfficeFileFormatChecker::getDocumentID (const std::wstring & _file } else { - if ( false == isOpenOfficeFormatFile(fileName, documentID)) + if (false == isOpenOfficeFormatFile(fileName, documentID)) { NSFile::CFileBinary file; if (!file.OpenFile(fileName)) return documentID; - - unsigned char* buffer = new unsigned char[4096]; //enaf !! - if (!buffer){file.CloseFile();return documentID;} + + unsigned char *buffer = new unsigned char[4096]; // enaf !! + if (!buffer) + { + file.CloseFile(); + return documentID; + } DWORD dwReadBytes = 0; file.ReadFile(buffer, MIN_SIZE_BUFFER, dwReadBytes); file.CloseFile(); - if (isPdfFormatFile(buffer, (int)dwReadBytes, documentID) ) + if (isPdfFormatFile(buffer, (int)dwReadBytes, documentID)) { nFileType = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF; } @@ -464,22 +480,22 @@ std::wstring COfficeFileFormatChecker::getDocumentID (const std::wstring & _file return documentID; } -bool COfficeFileFormatChecker::isMS_OFFCRYPTOFormatFile (const std::wstring & _fileName, std::wstring & documentID) +bool COfficeFileFormatChecker::isMS_OFFCRYPTOFormatFile(const std::wstring &_fileName, std::wstring &documentID) { #if defined(_WIN32) || defined(_WIN32_WCE) || defined(_WIN64) - std::wstring fileName = CorrectPathW(_fileName); + std::wstring fileName = CorrectPathW(_fileName); #else - std::wstring fileName = _fileName; + std::wstring fileName = _fileName; #endif POLE::Storage storage(fileName.c_str()); - if (storage.open()) - { - if (isMS_OFFICECRYPTOFormatFile(&storage, documentID) ) - { - nFileType = AVS_OFFICESTUDIO_FILE_OTHER_MS_OFFCRYPTO; - return true; - } + if (storage.open()) + { + if (isMS_OFFICECRYPTOFormatFile(&storage, documentID)) + { + nFileType = AVS_OFFICESTUDIO_FILE_OTHER_MS_OFFCRYPTO; + return true; + } if (isMS_MITCRYPTOFormatFile(&storage, documentID)) { nFileType = AVS_OFFICESTUDIO_FILE_OTHER_MS_MITCRYPTO; @@ -488,15 +504,16 @@ bool COfficeFileFormatChecker::isMS_OFFCRYPTOFormatFile (const std::wstring & _f } return false; } -bool COfficeFileFormatChecker::isMS_OFFICECRYPTOFormatFile(POLE::Storage * storage, std::wstring & documentID) +bool COfficeFileFormatChecker::isMS_OFFICECRYPTOFormatFile(POLE::Storage *storage, std::wstring &documentID) { - if (storage == NULL) return false; + if (storage == NULL) + return false; documentID.clear(); bool result = false; std::list entries = storage->entries(L"DataSpaces"); - if (/*false == entries.empty() && */storage->exists(L"EncryptionInfo")) + if (/*false == entries.empty() && */ storage->exists(L"EncryptionInfo")) { result = true; } @@ -507,31 +524,31 @@ bool COfficeFileFormatChecker::isMS_OFFICECRYPTOFormatFile(POLE::Storage * stora std::string sData; sData.resize(stream.size()); - if (stream.read((BYTE*)sData.c_str(), stream.size()) > 0) + if (stream.read((BYTE *)sData.c_str(), stream.size()) > 0) { - documentID = NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)sData.c_str(), sData.length()); + documentID = NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE *)sData.c_str(), sData.length()); } - } return result; } -bool COfficeFileFormatChecker::isMS_MITCRYPTOFormatFile (POLE::Storage * storage, std::wstring & documentID) +bool COfficeFileFormatChecker::isMS_MITCRYPTOFormatFile(POLE::Storage *storage, std::wstring &documentID) { - if (storage == NULL) return false; + if (storage == NULL) + return false; documentID.clear(); bool result = false; - std::list entries = storage->entries(L"DataSpaces"); - if (false == entries.empty() && false == storage->exists(L"EncryptionInfo") && storage->exists(L"EncryptedPackage")) + std::list entries = storage->entries(L"DataSpaces"); + if (false == entries.empty() && false == storage->exists(L"EncryptionInfo") && storage->exists(L"EncryptedPackage")) { - result = true; + result = true; } return result; } -bool COfficeFileFormatChecker::isVbaProjectFile(const std::wstring & _fileName) +bool COfficeFileFormatChecker::isVbaProjectFile(const std::wstring &_fileName) { #if defined(_WIN32) || defined(_WIN32_WCE) || defined(_WIN64) std::wstring fileName = CorrectPathW(_fileName); @@ -549,55 +566,56 @@ bool COfficeFileFormatChecker::isVbaProjectFile(const std::wstring & _fileName) } return false; } -bool COfficeFileFormatChecker::isOfficeFile(const std::wstring & _fileName) +bool COfficeFileFormatChecker::isOfficeFile(const std::wstring &_fileName) { #if defined(_WIN32) || defined(_WIN32_WCE) || defined(_WIN64) - std::wstring fileName = CorrectPathW(_fileName); + std::wstring fileName = CorrectPathW(_fileName); #else - std::wstring fileName = _fileName; + std::wstring fileName = _fileName; #endif - //приоритет как оказывается важен - //Metamorphic Manual for windows 28415.doc + // приоритет как оказывается важен + // Metamorphic Manual for windows 28415.doc POLE::Storage storage(fileName.c_str()); - if (storage.open()) - { + if (storage.open()) + { if (isOleObjectFile(&storage)) { - if (nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) return true; + if (nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) + return true; return false; } - else if ( isDocFormatFile(&storage) ) - { - //nFileType внутри + else if (isDocFormatFile(&storage)) + { + // nFileType внутри return true; - } - else if ( isXlsFormatFile(&storage) ) - { - nFileType = AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS; - return true; - } - else if ( isPptFormatFile(&storage) ) - { -//#if defined FILE_FORMAT_CHECKER_WITH_MACRO -// COfficePPTFile pptFile; -// -// bMacroEnabled = true; -// long nResult = pptFile.OpenFile(fileName, L"", bMacroEnabled); -// if (nResult != S_OK) -// { -// return false; -// } -// pptFile.CloseFile(); -//#endif + } + else if (isXlsFormatFile(&storage)) + { + nFileType = AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS; + return true; + } + else if (isPptFormatFile(&storage)) + { + // #if defined FILE_FORMAT_CHECKER_WITH_MACRO + // COfficePPTFile pptFile; + // + // bMacroEnabled = true; + // long nResult = pptFile.OpenFile(fileName, L"", bMacroEnabled); + // if (nResult != S_OK) + // { + // return false; + // } + // pptFile.CloseFile(); + // #endif nFileType = AVS_OFFICESTUDIO_FILE_PRESENTATION_PPT; - return true; - } - else if ( isMS_OFFICECRYPTOFormatFile(&storage, sDocumentID) ) - { - nFileType = AVS_OFFICESTUDIO_FILE_OTHER_MS_OFFCRYPTO; - return true; - } + return true; + } + else if (isMS_OFFICECRYPTOFormatFile(&storage, sDocumentID)) + { + nFileType = AVS_OFFICESTUDIO_FILE_OTHER_MS_OFFCRYPTO; + return true; + } else if (isMS_MITCRYPTOFormatFile(&storage, sDocumentID)) { nFileType = AVS_OFFICESTUDIO_FILE_OTHER_MS_MITCRYPTO; @@ -610,30 +628,38 @@ bool COfficeFileFormatChecker::isOfficeFile(const std::wstring & _fileName) } } - COfficeUtils OfficeUtils(NULL); - if (OfficeUtils.IsArchive(fileName) == S_OK) + COfficeUtils OfficeUtils(NULL); + if (OfficeUtils.IsArchive(fileName) == S_OK) { - if ( isOOXFormatFile(fileName) ) return true; - else if ( isOpenOfficeFormatFile(fileName, sDocumentID) ) return true; - else if ( isOnlyOfficeFormatFile(fileName) ) return true; - else if ( isXpsFile(fileName) ) return true; + if (isOOXFormatFile(fileName)) + return true; + else if (isOpenOfficeFormatFile(fileName, sDocumentID)) + return true; + else if (isOnlyOfficeFormatFile(fileName)) + return true; + else if (isXpsFile(fileName)) + return true; } -//----------------------------------------------------------------------------------------------- - // others + //----------------------------------------------------------------------------------------------- + // others bool bEmptyFile = false; - { + { NSFile::CFileBinary file; - if (!file.OpenFile(fileName)) - return false; - - unsigned char* buffer = new unsigned char[4096]; //enaf !! - if (!buffer){file.CloseFile();return false;} + if (!file.OpenFile(fileName)) + return false; - DWORD dwReadBytes = 0; - file.ReadFile(buffer, MIN_SIZE_BUFFER, dwReadBytes); - int sizeRead = (int)dwReadBytes; + unsigned char *buffer = new unsigned char[4096]; // enaf !! + if (!buffer) + { + file.CloseFile(); + return false; + } + + DWORD dwReadBytes = 0; + file.ReadFile(buffer, MIN_SIZE_BUFFER, dwReadBytes); + int sizeRead = (int)dwReadBytes; bEmptyFile = (dwReadBytes < 1); @@ -641,57 +667,57 @@ bool COfficeFileFormatChecker::isOfficeFile(const std::wstring & _fileName) { nFileType = AVS_OFFICESTUDIO_FILE_CANVAS_WORD; } - else if (isBinaryXlstFormatFile(buffer, sizeRead))// min size - 4 + else if (isBinaryXlstFormatFile(buffer, sizeRead)) // min size - 4 { nFileType = AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET; } - else if (isBinaryPpttFormatFile(buffer, sizeRead))// min size - 4 + else if (isBinaryPpttFormatFile(buffer, sizeRead)) // min size - 4 { nFileType = AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION; } else if (isOOXFlatFormatFile(buffer, sizeRead)) { - //nFileType; + // nFileType; } - else if ( isRtfFormatFile(buffer,sizeRead) ) // min size - 5 + else if (isRtfFormatFile(buffer, sizeRead)) // min size - 5 { nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_RTF; - } - else if (isPdfFormatFile(buffer,sizeRead, sDocumentID) )// min size - 5 - { - nFileType = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF; - } - else if (isDjvuFormatFile(buffer,sizeRead) )// min size - 8 - { - nFileType = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_DJVU; - } - else if (isHtmlFormatFile(buffer,sizeRead, false))// min size - 4 - { + } + else if (isPdfFormatFile(buffer, sizeRead, sDocumentID)) // min size - 5 + { + nFileType = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF; + } + else if (isDjvuFormatFile(buffer, sizeRead)) // min size - 8 + { + nFileType = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_DJVU; + } + else if (isHtmlFormatFile(buffer, sizeRead, false)) // min size - 4 + { long fileSize = file.GetFileSize(); - if (fileSize > MIN_SIZE_BUFFER) + if (fileSize > MIN_SIZE_BUFFER) { file.SeekFile(fileSize - MIN_SIZE_BUFFER); file.ReadFile(buffer, MIN_SIZE_BUFFER, dwReadBytes); int sizeRead = (int)dwReadBytes; } - if (isHtmlFormatFile(buffer,sizeRead, true))// min size - 6 + if (isHtmlFormatFile(buffer, sizeRead, true)) // min size - 6 { nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML; } - } - else if (isFB2FormatFile(buffer,sizeRead) )// min size - 11 - { - nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_FB2; - } - else if (isOpenOfficeFlatFormatFile(buffer,sizeRead) )// min size - 78 - { - //nFileType } - else if (isDocFlatFormatFile(buffer,sizeRead) )// min size - 2 + else if (isFB2FormatFile(buffer, sizeRead)) // min size - 11 { - nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC_FLAT; // without compaund container + nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_FB2; } - else if (isXlsFlatFormatFile(buffer, sizeRead))// min size - 2 + else if (isOpenOfficeFlatFormatFile(buffer, sizeRead)) // min size - 78 + { + // nFileType + } + else if (isDocFlatFormatFile(buffer, sizeRead)) // min size - 2 + { + nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC_FLAT; // without compaund container + } + else if (isXlsFlatFormatFile(buffer, sizeRead)) // min size - 2 { nFileType = AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS; // without compaund container } @@ -699,40 +725,43 @@ bool COfficeFileFormatChecker::isOfficeFile(const std::wstring & _fileName) { nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_MHT; } -//------------------------------------------------------------------------------------------------ + //------------------------------------------------------------------------------------------------ file.CloseFile(); - if (buffer)delete []buffer; + if (buffer) + delete[] buffer; buffer = NULL; } - if (nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) return true; -//------------------------------------------------------------------------------------------------ + if (nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) + return true; + //------------------------------------------------------------------------------------------------ if (iXmlFile(fileName)) { nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_XML; return true; } -//// by Extension + //// by Extension - std::wstring::size_type nExtPos = fileName.rfind(L'.'); + std::wstring::size_type nExtPos = fileName.rfind(L'.'); std::wstring sExt = L"unknown"; - - if (nExtPos != std::wstring::npos) - sExt = fileName.substr(nExtPos); + + if (nExtPos != std::wstring::npos) + sExt = fileName.substr(nExtPos); std::transform(sExt.begin(), sExt.end(), sExt.begin(), tolower); - - if (nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) return true; - + + if (nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) + return true; + if (bEmptyFile) { if (0 == sExt.compare(L".xlsx")) nFileType = AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX; - else if ( 0 == sExt.compare(L".docx")) + else if (0 == sExt.compare(L".docx")) nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX; else if (0 == sExt.compare(L".pptx")) nFileType = AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX; - + else if (0 == sExt.compare(L".ods")) nFileType = AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS; else if (0 == sExt.compare(L".odt")) @@ -742,32 +771,33 @@ bool COfficeFileFormatChecker::isOfficeFile(const std::wstring & _fileName) } else if (0 == sExt.compare(L".mht") || 0 == sExt.compare(L".mhtml")) nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_MHT; - else if (0 == sExt.compare(L".csv") || 0 == sExt.compare(L".xlsx")) + else if (0 == sExt.compare(L".csv") || 0 == sExt.compare(L".xlsx")) nFileType = AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV; - else if (0 == sExt.compare(L".html") || 0 == sExt.compare(L".htm")) + else if (0 == sExt.compare(L".html") || 0 == sExt.compare(L".htm")) nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML; - else if (0 == sExt.compare(L".bin")) //base64 string + else if (0 == sExt.compare(L".bin")) // base64 string nFileType = AVS_OFFICESTUDIO_FILE_CANVAS_PDF; - else if (0 == sExt.compare(L".doct"))//случай архива с html viewer + else if (0 == sExt.compare(L".doct")) // случай архива с html viewer nFileType = AVS_OFFICESTUDIO_FILE_TEAMLAB_DOCY; else if (0 == sExt.compare(L".xlsb")) nFileType = AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB; - else //if (0 == sExt.compare(L".txt") || 0 == sExt.compare(L".xml")) //volsciv.rtf -или любой другой - nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT; + else // if (0 == sExt.compare(L".txt") || 0 == sExt.compare(L".xml")) //volsciv.rtf -или любой другой + nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT; - if (nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) return true; + if (nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) + return true; return false; } -bool COfficeFileFormatChecker::isOOXFormatFile(const std::wstring & fileName, bool unpacked) +bool COfficeFileFormatChecker::isOOXFormatFile(const std::wstring &fileName, bool unpacked) { COfficeUtils OfficeUtils(NULL); - + ULONG nBufferSize = 0; BYTE *pBuffer = NULL; HRESULT hresult = S_FALSE; - + if (unpacked) { if (NSFile::CFileBinary::ReadAllBytes(fileName + FILE_SEPARATOR_STR + L"[Content_Types].xml", &pBuffer, nBufferSize)) @@ -800,11 +830,11 @@ bool COfficeFileFormatChecker::isOOXFormatFile(const std::wstring & fileName, bo const char *ppsmFormatLine = "application/vnd.ms-powerpoint.slideshow.macroEnabled.main+xml"; const char *potmFormatLine = "application/vnd.ms-powerpoint.template.macroEnabled.main+xml"; - std::string strContentTypes((char*)pBuffer, nBufferSize); + std::string strContentTypes((char *)pBuffer, nBufferSize); + + std::string::size_type res1 = std::string::npos; + std::string::size_type res = 0; - std::string::size_type res1 = std::string::npos; - std::string::size_type res = 0; - if (std::string::npos != strContentTypes.find(oformFormatLine)) { nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM; @@ -822,7 +852,7 @@ bool COfficeFileFormatChecker::isOOXFormatFile(const std::wstring & fileName, bo nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM; bMacroEnabled = true; } - else if (std::string::npos != strContentTypes.find(dotxFormatLine)) + else if (std::string::npos != strContentTypes.find(dotxFormatLine)) { nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX; } @@ -840,7 +870,7 @@ bool COfficeFileFormatChecker::isOOXFormatFile(const std::wstring & fileName, bo nFileType = AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM; bMacroEnabled = true; } - else if (std::string::npos != strContentTypes.find(xltxFormatLine)) + else if (std::string::npos != strContentTypes.find(xltxFormatLine)) { nFileType = AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX; } @@ -853,7 +883,6 @@ bool COfficeFileFormatChecker::isOOXFormatFile(const std::wstring & fileName, bo { nFileType = AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB; bMacroEnabled = true; - } else if (std::string::npos != strContentTypes.find(pptxFormatLine)) { @@ -873,36 +902,37 @@ bool COfficeFileFormatChecker::isOOXFormatFile(const std::wstring & fileName, bo { nFileType = AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX; } - else if (std::string::npos != strContentTypes.find(potxFormatLine)) + else if (std::string::npos != strContentTypes.find(potxFormatLine)) { nFileType = AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX; } - else if (std::string::npos != strContentTypes.find(potmFormatLine)) + else if (std::string::npos != strContentTypes.find(potmFormatLine)) { nFileType = AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM; bMacroEnabled = true; } - delete []pBuffer; + delete[] pBuffer; pBuffer = NULL; - if (nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) return true; + if (nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) + return true; } return false; } -bool COfficeFileFormatChecker::isDocFormatFile(const std::wstring & fileName) +bool COfficeFileFormatChecker::isDocFormatFile(const std::wstring &fileName) { POLE::Storage storage(fileName.c_str()); if (storage.open()) { if (isDocFormatFile(&storage)) { - //nFileType внутри; + // nFileType внутри; return true; } } return false; } -bool COfficeFileFormatChecker::isXlsFormatFile(const std::wstring & fileName) +bool COfficeFileFormatChecker::isXlsFormatFile(const std::wstring &fileName) { POLE::Storage storage(fileName.c_str()); if (storage.open()) @@ -915,53 +945,54 @@ bool COfficeFileFormatChecker::isXlsFormatFile(const std::wstring & fileName) } return false; } -bool COfficeFileFormatChecker::isOnlyOfficeFormatFile(const std::wstring & fileName) +bool COfficeFileFormatChecker::isOnlyOfficeFormatFile(const std::wstring &fileName) { COfficeUtils OfficeUtils(NULL); - + ULONG nBufferSize = 128; // ограничим считывание из бинарника BYTE *pBuffer = NULL; HRESULT hresult = OfficeUtils.LoadFileFromArchive(fileName, L"Editor.bin", &pBuffer, nBufferSize); if (hresult == S_OK && pBuffer != NULL) { - if (isBinaryDoctFormatFile(pBuffer, nBufferSize) ) + if (isBinaryDoctFormatFile(pBuffer, nBufferSize)) { nFileType = AVS_OFFICESTUDIO_FILE_TEAMLAB_DOCY; } - else if (isBinaryXlstFormatFile(pBuffer, nBufferSize) ) + else if (isBinaryXlstFormatFile(pBuffer, nBufferSize)) { nFileType = AVS_OFFICESTUDIO_FILE_TEAMLAB_XLSY; } - else if (isBinaryPpttFormatFile(pBuffer, nBufferSize) ) + else if (isBinaryPpttFormatFile(pBuffer, nBufferSize)) { nFileType = AVS_OFFICESTUDIO_FILE_TEAMLAB_PPTY; } - delete []pBuffer; + delete[] pBuffer; pBuffer = NULL; - if (nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) return true; + if (nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) + return true; } return false; } -bool COfficeFileFormatChecker::isOpenOfficeFormatFile(const std::wstring & fileName, std::wstring & documentID) +bool COfficeFileFormatChecker::isOpenOfficeFormatFile(const std::wstring &fileName, std::wstring &documentID) { documentID.clear(); - const char *odtFormatLine = "application/vnd.oasis.opendocument.text"; - const char *odsFormatLine = "application/vnd.oasis.opendocument.spreadsheet"; - const char *odpFormatLine = "application/vnd.oasis.opendocument.presentation"; + const char *odtFormatLine = "application/vnd.oasis.opendocument.text"; + const char *odsFormatLine = "application/vnd.oasis.opendocument.spreadsheet"; + const char *odpFormatLine = "application/vnd.oasis.opendocument.presentation"; const char *ottFormatLine = "application/vnd.oasis.opendocument.text-template"; const char *otsFormatLine = "application/vnd.oasis.opendocument.spreadsheet-template"; - const char *otpFormatLine = "application/vnd.oasis.opendocument.presentation-template"; + const char *otpFormatLine = "application/vnd.oasis.opendocument.presentation-template"; const char *epubFormatLine = "application/epub+zip"; const char *sxwFormatLine = "application/vnd.sun.xml.writer"; const char *sxcFormatLine = "application/vnd.sun.xml.calc"; const char *sxiFormatLine = "application/vnd.sun.xml.impress"; - COfficeUtils OfficeUtils(NULL); - + COfficeUtils OfficeUtils(NULL); + ULONG nBufferSize = 0; BYTE *pBuffer = NULL; @@ -969,60 +1000,58 @@ bool COfficeFileFormatChecker::isOpenOfficeFormatFile(const std::wstring & fileN if (hresult == S_OK && pBuffer != NULL) { documentID = NSFile::CUtf8Converter::GetUnicodeStringFromUTF8(pBuffer, nBufferSize); - - delete []pBuffer; + + delete[] pBuffer; pBuffer = NULL; } - nBufferSize = 0; + nBufferSize = 0; hresult = OfficeUtils.LoadFileFromArchive(fileName, L"mimetype", &pBuffer, nBufferSize); if (hresult == S_OK && pBuffer != NULL) { - if ( NULL != strstr((char*)pBuffer, ottFormatLine) ) + if (NULL != strstr((char *)pBuffer, ottFormatLine)) { nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_OTT; } - else if ( NULL != strstr((char*)pBuffer, otsFormatLine) ) + else if (NULL != strstr((char *)pBuffer, otsFormatLine)) { nFileType = AVS_OFFICESTUDIO_FILE_SPREADSHEET_OTS; } - else if ( NULL != strstr((char*)pBuffer, otpFormatLine) ) + else if (NULL != strstr((char *)pBuffer, otpFormatLine)) { nFileType = AVS_OFFICESTUDIO_FILE_PRESENTATION_OTP; - } - else if ( NULL != strstr((char*)pBuffer, odtFormatLine) || - NULL != strstr((char*)pBuffer, sxwFormatLine) ) + } + else if (NULL != strstr((char *)pBuffer, odtFormatLine) || NULL != strstr((char *)pBuffer, sxwFormatLine)) { nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT; } - else if ( NULL != strstr((char*)pBuffer, odsFormatLine) || - NULL != strstr((char*)pBuffer, sxcFormatLine)) + else if (NULL != strstr((char *)pBuffer, odsFormatLine) || NULL != strstr((char *)pBuffer, sxcFormatLine)) { nFileType = AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS; } - else if ( NULL != strstr((char*)pBuffer, odpFormatLine) || - NULL != strstr((char*)pBuffer, sxiFormatLine)) + else if (NULL != strstr((char *)pBuffer, odpFormatLine) || NULL != strstr((char *)pBuffer, sxiFormatLine)) { nFileType = AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP; } - else if ( NULL != strstr((char*)pBuffer, epubFormatLine) ) - { - nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_EPUB; - } + else if (NULL != strstr((char *)pBuffer, epubFormatLine)) + { + nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_EPUB; + } - delete []pBuffer; + delete[] pBuffer; pBuffer = NULL; -if (nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) return true; + if (nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) + return true; } else { - //если не записан тип смотрим манифест + // если не записан тип смотрим манифест nBufferSize = 0; HRESULT hresult = OfficeUtils.LoadFileFromArchive(fileName, L"META-INF/manifest.xml", &pBuffer, nBufferSize); if (hresult == S_OK && pBuffer != NULL) { - std::string xml_string((char*)pBuffer, nBufferSize); + std::string xml_string((char *)pBuffer, nBufferSize); std::string::size_type nFindMem1 = xml_string.find(odtFormatLine); std::string::size_type nFindMem2 = xml_string.find(odsFormatLine); @@ -1057,24 +1086,25 @@ if (nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) return true; else if (nFindMem3 != std::string::npos) nFileType = AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP; - delete[]pBuffer; + delete[] pBuffer; pBuffer = NULL; - if (nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) return true; + if (nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) + return true; } - } return false; } -bool COfficeFileFormatChecker::isOpenOfficeFlatFormatFile(unsigned char* pBuffer, int dwBytes) +bool COfficeFileFormatChecker::isOpenOfficeFlatFormatFile(unsigned char *pBuffer, int dwBytes) { - if (dwBytes < 78) return false; + if (dwBytes < 78) + return false; const char *odfFormatLine1 = "office:document"; const char *odfFormatLine2 = "xmlns:office=\"urn:oasis:names:tc:opendocument:xmlns:office:1.0\""; - std::string xml_string((char*)pBuffer, dwBytes); + std::string xml_string((char *)pBuffer, dwBytes); if ((std::string::npos == xml_string.find(odfFormatLine1)) || (std::string::npos == xml_string.find(odfFormatLine2))) { @@ -1098,38 +1128,40 @@ bool COfficeFileFormatChecker::isOpenOfficeFlatFormatFile(unsigned char* pBuffer nFileType = AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP_FLAT; } - if (nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) return true; + if (nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) + return true; return false; } -bool COfficeFileFormatChecker::isOOXFlatFormatFile(unsigned char* pBuffer, int dwBytes) +bool COfficeFileFormatChecker::isOOXFlatFormatFile(unsigned char *pBuffer, int dwBytes) { - if (dwBytes < 8) return false; + if (dwBytes < 8) + return false; std::string xml_string; if (pBuffer[0] == 0xff && pBuffer[1] == 0xfe) - {//utf-16- little - std::wstring xml_wstring = NSFile::CUtf8Converter::GetWStringFromUTF16((unsigned short*)pBuffer, dwBytes / 2); + { // utf-16- little + std::wstring xml_wstring = NSFile::CUtf8Converter::GetWStringFromUTF16((unsigned short *)pBuffer, dwBytes / 2); xml_string = NSFile::CUtf8Converter::GetUtf8StringFromUnicode(xml_wstring); } else if (pBuffer[0] == 0xfe && pBuffer[1] == 0xff) - {//utf-16- big - //swap bytes + { // utf-16- big + // swap bytes DWORD file_size_round = (dwBytes / 2) * 2; for (long i = 0; i < file_size_round; i += 2) { char v = pBuffer[i]; pBuffer[i] = pBuffer[i + 1]; pBuffer[i + 1] = v; - } - std::wstring xml_wstring = NSFile::CUtf8Converter::GetWStringFromUTF16((unsigned short*)pBuffer, dwBytes / 2); + } + std::wstring xml_wstring = NSFile::CUtf8Converter::GetWStringFromUTF16((unsigned short *)pBuffer, dwBytes / 2); xml_string = NSFile::CUtf8Converter::GetUtf8StringFromUnicode(xml_wstring); } else - xml_string = std::string((char*)pBuffer, dwBytes); - - const char *docxFormatLine = "xmlns:w=\"http://schemas.microsoft.com/office/word/2003/wordml\""; - const char *xlsxFormatLine = "xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\""; + xml_string = std::string((char *)pBuffer, dwBytes); + + const char *docxFormatLine = "xmlns:w=\"http://schemas.microsoft.com/office/word/2003/wordml\""; + const char *xlsxFormatLine = "xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\""; const char *docxPackage = "progid=\"Word.Document\""; const char *xlsxPackage = "progid=\"Excel.Sheet\""; const char *pptxPackage = "progid=\"PowerPoint.Show\""; @@ -1163,122 +1195,184 @@ bool COfficeFileFormatChecker::isOOXFlatFormatFile(unsigned char* pBuffer, int d } std::wstring COfficeFileFormatChecker::GetExtensionByType(int type) { - switch (type) - { - case AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM: return L".oform"; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF: return L".docxf"; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX: return L".docx"; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM: return L".docm"; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX: return L".dotx"; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM: return L".dotm"; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC: return L".doc"; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT: return L".odt"; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_RTF: return L".rtf"; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT: return L".txt"; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML: return L".html"; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_MHT: return L".mht"; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_EPUB: return L".epub"; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_FB2: return L".fb2"; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_MOBI: return L".mobi"; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT_FLAT: return L".fodt"; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_OTT: return L".ott"; + switch (type) + { + case AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM: + return L".oform"; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF: + return L".docxf"; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX: + return L".docx"; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM: + return L".docm"; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX: + return L".dotx"; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM: + return L".dotm"; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC: + return L".doc"; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT: + return L".odt"; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_RTF: + return L".rtf"; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT: + return L".txt"; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML: + return L".html"; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_MHT: + return L".mht"; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_EPUB: + return L".epub"; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_FB2: + return L".fb2"; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_MOBI: + return L".mobi"; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT_FLAT: + return L".fodt"; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_OTT: + return L".ott"; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX: return L".pptx"; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM: return L".pptm"; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPT: return L".ppt"; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP: return L".odp"; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX: return L".ppsx"; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM: return L".ppsm"; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX: return L".potx"; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM: return L".potm"; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP_FLAT:return L".fodp"; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_OTP: return L".otp"; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX: + return L".pptx"; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM: + return L".pptm"; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPT: + return L".ppt"; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP: + return L".odp"; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX: + return L".ppsx"; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM: + return L".ppsm"; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX: + return L".potx"; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM: + return L".potm"; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP_FLAT: + return L".fodp"; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_OTP: + return L".otp"; - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX: return L".xlsx"; - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM: return L".xlsm"; - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX: return L".xltx"; - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM: return L".xltm"; - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB: return L".xlsb"; - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS: return L".xls"; - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS: return L".ods"; - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV: return L".csv"; - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS_FLAT:return L".fods"; - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_OTS: return L".ots"; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX: + return L".xlsx"; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM: + return L".xlsm"; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX: + return L".xltx"; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM: + return L".xltm"; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB: + return L".xlsb"; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS: + return L".xls"; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS: + return L".ods"; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV: + return L".csv"; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS_FLAT: + return L".fods"; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_OTS: + return L".ots"; - case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF: return L".pdf"; - case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_SWF: return L".swf"; - case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_DJVU: return L".djvu"; - case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_XPS: return L".xps"; - case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_SVG: return L".svg"; - case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_HTMLR: return L".htmlr"; + case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF: + return L".pdf"; + case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_SWF: + return L".swf"; + case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_DJVU: + return L".djvu"; + case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_XPS: + return L".xps"; + case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_SVG: + return L".svg"; + case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_HTMLR: + return L".htmlr"; - case AVS_OFFICESTUDIO_FILE_OTHER_HTMLZIP: return L".zip"; - case AVS_OFFICESTUDIO_FILE_OTHER_JSON: return L".json"; + case AVS_OFFICESTUDIO_FILE_OTHER_HTMLZIP: + return L".zip"; + case AVS_OFFICESTUDIO_FILE_OTHER_JSON: + return L".json"; - case AVS_OFFICESTUDIO_FILE_IMAGE: - case AVS_OFFICESTUDIO_FILE_IMAGE_JPG: return L".jpg"; - case AVS_OFFICESTUDIO_FILE_IMAGE_TIFF: return L".tiff"; - case AVS_OFFICESTUDIO_FILE_IMAGE_TGA: return L".tga"; - case AVS_OFFICESTUDIO_FILE_IMAGE_GIF: return L".gif"; - case AVS_OFFICESTUDIO_FILE_IMAGE_PNG: return L".png"; - case AVS_OFFICESTUDIO_FILE_IMAGE_EMF: return L".emf"; - case AVS_OFFICESTUDIO_FILE_IMAGE_WMF: return L".wmf"; - case AVS_OFFICESTUDIO_FILE_IMAGE_BMP: return L".bmp"; - case AVS_OFFICESTUDIO_FILE_IMAGE_CR2: return L".cr2"; - case AVS_OFFICESTUDIO_FILE_IMAGE_PCX: return L".pcx"; - case AVS_OFFICESTUDIO_FILE_IMAGE_RAS: return L".ras"; - case AVS_OFFICESTUDIO_FILE_IMAGE_PSD: return L".psd"; - case AVS_OFFICESTUDIO_FILE_IMAGE_ICO: return L".ico"; + case AVS_OFFICESTUDIO_FILE_IMAGE: + case AVS_OFFICESTUDIO_FILE_IMAGE_JPG: + return L".jpg"; + case AVS_OFFICESTUDIO_FILE_IMAGE_TIFF: + return L".tiff"; + case AVS_OFFICESTUDIO_FILE_IMAGE_TGA: + return L".tga"; + case AVS_OFFICESTUDIO_FILE_IMAGE_GIF: + return L".gif"; + case AVS_OFFICESTUDIO_FILE_IMAGE_PNG: + return L".png"; + case AVS_OFFICESTUDIO_FILE_IMAGE_EMF: + return L".emf"; + case AVS_OFFICESTUDIO_FILE_IMAGE_WMF: + return L".wmf"; + case AVS_OFFICESTUDIO_FILE_IMAGE_BMP: + return L".bmp"; + case AVS_OFFICESTUDIO_FILE_IMAGE_CR2: + return L".cr2"; + case AVS_OFFICESTUDIO_FILE_IMAGE_PCX: + return L".pcx"; + case AVS_OFFICESTUDIO_FILE_IMAGE_RAS: + return L".ras"; + case AVS_OFFICESTUDIO_FILE_IMAGE_PSD: + return L".psd"; + case AVS_OFFICESTUDIO_FILE_IMAGE_ICO: + return L".ico"; case AVS_OFFICESTUDIO_FILE_CANVAS_WORD: - case AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET: - case AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION: return L".bin"; - case AVS_OFFICESTUDIO_FILE_OTHER_OLD_DOCUMENT: - case AVS_OFFICESTUDIO_FILE_TEAMLAB_DOCY: return L".doct"; - case AVS_OFFICESTUDIO_FILE_TEAMLAB_XLSY: return L".xlst"; - case AVS_OFFICESTUDIO_FILE_OTHER_OLD_PRESENTATION: - case AVS_OFFICESTUDIO_FILE_OTHER_OLD_DRAWING: - case AVS_OFFICESTUDIO_FILE_TEAMLAB_PPTY: return L".pptt"; - } - return L""; + case AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET: + case AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION: + return L".bin"; + case AVS_OFFICESTUDIO_FILE_OTHER_OLD_DOCUMENT: + case AVS_OFFICESTUDIO_FILE_TEAMLAB_DOCY: + return L".doct"; + case AVS_OFFICESTUDIO_FILE_TEAMLAB_XLSY: + return L".xlst"; + case AVS_OFFICESTUDIO_FILE_OTHER_OLD_PRESENTATION: + case AVS_OFFICESTUDIO_FILE_OTHER_OLD_DRAWING: + case AVS_OFFICESTUDIO_FILE_TEAMLAB_PPTY: + return L".pptt"; + } + return L""; } -int COfficeFileFormatChecker::GetFormatByExtension(const std::wstring& sExt) +int COfficeFileFormatChecker::GetFormatByExtension(const std::wstring &sExt) { std::wstring ext; ext.resize(sExt.size()); std::transform(sExt.begin(), sExt.end(), ext.begin(), tolower); - + if (L".docx" == ext) - return AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX; + return AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX; if (L".oform" == ext) return AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM; if (L".docxf" == ext) return AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF; if (L".docm" == ext) - return AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM; - if (L".dotx" == ext) - return AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX; - if (L".dotm" == ext) - return AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM; - if (L".doc" == ext) - return AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC; - if (L".odt" == ext) - return AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT; - if (L".rtf" == ext) - return AVS_OFFICESTUDIO_FILE_DOCUMENT_RTF; - if (L".txt" == ext) - return AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT; - if (L".html" == ext || L".htm" == ext) - return AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML; - if (L".mht" == ext || L".mhtml" == ext) - return AVS_OFFICESTUDIO_FILE_DOCUMENT_MHT; - if (L".epub" == ext) - return AVS_OFFICESTUDIO_FILE_DOCUMENT_EPUB; - if (L".fb2" == ext) - return AVS_OFFICESTUDIO_FILE_DOCUMENT_FB2; - if (L".mobi" == ext) - return AVS_OFFICESTUDIO_FILE_DOCUMENT_MOBI; + return AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM; + if (L".dotx" == ext) + return AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX; + if (L".dotm" == ext) + return AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM; + if (L".doc" == ext) + return AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC; + if (L".odt" == ext) + return AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT; + if (L".rtf" == ext) + return AVS_OFFICESTUDIO_FILE_DOCUMENT_RTF; + if (L".txt" == ext) + return AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT; + if (L".html" == ext || L".htm" == ext) + return AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML; + if (L".mht" == ext || L".mhtml" == ext) + return AVS_OFFICESTUDIO_FILE_DOCUMENT_MHT; + if (L".epub" == ext) + return AVS_OFFICESTUDIO_FILE_DOCUMENT_EPUB; + if (L".fb2" == ext) + return AVS_OFFICESTUDIO_FILE_DOCUMENT_FB2; + if (L".mobi" == ext) + return AVS_OFFICESTUDIO_FILE_DOCUMENT_MOBI; if (L".docm" == ext) return AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM; if (L".dotx" == ext) @@ -1290,35 +1384,35 @@ int COfficeFileFormatChecker::GetFormatByExtension(const std::wstring& sExt) if (L".ott" == ext) return AVS_OFFICESTUDIO_FILE_DOCUMENT_OTT; - if (L".pptx" == ext) - return AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX; - if (L".pptm" == ext) - return AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM; + if (L".pptx" == ext) + return AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX; + if (L".pptm" == ext) + return AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM; if (L".ppsm" == ext) return AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM; - if (L".ppt" == ext) - return AVS_OFFICESTUDIO_FILE_PRESENTATION_PPT; - if (L".odp" == ext) - return AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP; - if (L".ppsx" == ext) - return AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX; - if (L".potx" == ext) - return AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX; - if (L".potm" == ext) - return AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM; + if (L".ppt" == ext) + return AVS_OFFICESTUDIO_FILE_PRESENTATION_PPT; + if (L".odp" == ext) + return AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP; + if (L".ppsx" == ext) + return AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX; + if (L".potx" == ext) + return AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX; + if (L".potm" == ext) + return AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM; if (L".fodp" == ext) return AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP_FLAT; if (L".otp" == ext) return AVS_OFFICESTUDIO_FILE_PRESENTATION_OTP; - + if (L".xlsx" == ext) - return AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX; - if (L".xlsm" == ext) - return AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM; - if (L".xltx" == ext) - return AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX; - if (L".xltm" == ext) - return AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM; + return AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX; + if (L".xlsm" == ext) + return AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM; + if (L".xltx" == ext) + return AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX; + if (L".xltm" == ext) + return AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM; if (L".xlsm" == ext) return AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM; if (L".xltx" == ext) @@ -1326,24 +1420,24 @@ int COfficeFileFormatChecker::GetFormatByExtension(const std::wstring& sExt) if (L".xltm" == ext) return AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM; if (L".xlsb" == ext) - return AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB; + return AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB; if (L".xls" == ext) - return AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS; + return AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS; if (L".csv" == ext) - return AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV; + return AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV; if (L".fods" == ext) return AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS_FLAT; if (L".ots" == ext) return AVS_OFFICESTUDIO_FILE_SPREADSHEET_OTS; - if (L".ods" == ext) - return AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS; - + if (L".ods" == ext) + return AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS; + if (L".pdf" == ext) - return AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF; - if (L".djvu" == ext) - return AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_DJVU; + return AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF; + if (L".djvu" == ext) + return AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_DJVU; if (L".xps" == ext || L".oxps" == ext) - return AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_XPS; + return AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_XPS; if (L".jpg" == ext || L".jpeg" == ext || L".jpe" == ext || L".jfif" == ext) return AVS_OFFICESTUDIO_FILE_IMAGE_JPG; @@ -1381,85 +1475,88 @@ int COfficeFileFormatChecker::GetFormatByExtension(const std::wstring& sExt) return 0; } -std::wstring COfficeFileFormatChecker::GetFormatExtension(const std::wstring & fileName) +std::wstring COfficeFileFormatChecker::GetFormatExtension(const std::wstring &fileName) { if (isOfficeFile(fileName)) return GetExtensionByType(nFileType); - return L""; + return L""; } -bool COfficeFileFormatChecker::isDjvuFormatFile(unsigned char* pBuffer,int dwBytes) +bool COfficeFileFormatChecker::isDjvuFormatFile(unsigned char *pBuffer, int dwBytes) { - if (pBuffer == NULL) return false; + if (pBuffer == NULL) + return false; - if ( (8 <= dwBytes) && (0x41 == pBuffer[0] && 0x54 == pBuffer[1] && 0x26 == pBuffer[2] && 0x54 == pBuffer[3] && - 0x46 == pBuffer[4] && 0x4f == pBuffer[5] && 0x52 == pBuffer[6] && 0x4d == pBuffer[7])) - return true; + if ((8 <= dwBytes) && + (0x41 == pBuffer[0] && 0x54 == pBuffer[1] && 0x26 == pBuffer[2] && 0x54 == pBuffer[3] && 0x46 == pBuffer[4] && 0x4f == pBuffer[5] && 0x52 == pBuffer[6] && 0x4d == pBuffer[7])) + return true; - return false; + return false; } -bool COfficeFileFormatChecker::isMobiFormatFile(unsigned char* pBuffer,int dwBytes) +bool COfficeFileFormatChecker::isMobiFormatFile(unsigned char *pBuffer, int dwBytes) { - if (pBuffer == NULL) return false; + if (pBuffer == NULL) + return false; - if ( (68 <= dwBytes) && (('B' == pBuffer[60] && 'O' == pBuffer[61] && 'O' == pBuffer[62] && 'K' == pBuffer[63] && 'M' == pBuffer[64] && 'O' == pBuffer[65] && 'B' == pBuffer[66] && 'I' == pBuffer[67]) || - ('T' == pBuffer[60] && 'E' == pBuffer[61] && 'X' == pBuffer[62] && 't' == pBuffer[63] && 'R' == pBuffer[64] && 'E' == pBuffer[65] && 'A' == pBuffer[66] && 'd' == pBuffer[67]))) - return true; + if ((68 <= dwBytes) && + (('B' == pBuffer[60] && 'O' == pBuffer[61] && 'O' == pBuffer[62] && 'K' == pBuffer[63] && 'M' == pBuffer[64] && 'O' == pBuffer[65] && 'B' == pBuffer[66] && 'I' == pBuffer[67]) || + ('T' == pBuffer[60] && 'E' == pBuffer[61] && 'X' == pBuffer[62] && 't' == pBuffer[63] && 'R' == pBuffer[64] && 'E' == pBuffer[65] && 'A' == pBuffer[66] && 'd' == pBuffer[67]))) + return true; - return false; + return false; } -bool COfficeFileFormatChecker::isFB2FormatFile(unsigned char* pBuffer,int dwBytes) +bool COfficeFileFormatChecker::isFB2FormatFile(unsigned char *pBuffer, int dwBytes) { - if (pBuffer == NULL || dwBytes < 11) return false; + if (pBuffer == NULL || dwBytes < 11) + return false; - bool tagOpen = false; - //FB2 File is XML-file with rootElement - FictionBook - for (int i = 0; i < dwBytes - 11 && i < 100; i++) - { - if (0x3C == pBuffer[i]) - tagOpen = true; - else if (0x3E == pBuffer[i]) - tagOpen = false; - else if (tagOpen && 0x46 == pBuffer[i] && 0x69 == pBuffer[i + 1] && 0x63 == pBuffer[i + 2] - && 0x74 == pBuffer[i + 3] && 0x69 == pBuffer[i + 4] && 0x6F == pBuffer[i + 5] - && 0x6E == pBuffer[i + 6] && 0x42 == pBuffer[i + 7] && 0x6F == pBuffer[i + 8] - && 0x6F == pBuffer[i + 9] && 0x6B == pBuffer[i + 10]) - return true; - } - return false; + bool tagOpen = false; + // FB2 File is XML-file with rootElement - FictionBook + for (int i = 0; i < dwBytes - 11 && i < 100; i++) + { + if (0x3C == pBuffer[i]) + tagOpen = true; + else if (0x3E == pBuffer[i]) + tagOpen = false; + else if ( + tagOpen && 0x46 == pBuffer[i] && 0x69 == pBuffer[i + 1] && 0x63 == pBuffer[i + 2] && 0x74 == pBuffer[i + 3] && 0x69 == pBuffer[i + 4] && 0x6F == pBuffer[i + 5] && 0x6E == pBuffer[i + 6] && + 0x42 == pBuffer[i + 7] && 0x6F == pBuffer[i + 8] && 0x6F == pBuffer[i + 9] && 0x6B == pBuffer[i + 10]) + return true; + } + return false; } -bool COfficeFileFormatChecker::isXpsFile(const std::wstring & fileName) +bool COfficeFileFormatChecker::isXpsFile(const std::wstring &fileName) { - COfficeUtils OfficeUtils(NULL); + COfficeUtils OfficeUtils(NULL); - ULONG nBufferSize = 0; - BYTE *pBuffer = NULL; + ULONG nBufferSize = 0; + BYTE *pBuffer = NULL; - HRESULT hresult = OfficeUtils.LoadFileFromArchive(fileName, L"_rels/.rels", &pBuffer, nBufferSize); - if (hresult == S_OK && pBuffer != NULL) - { - // http://schemas.microsoft.com/xps/2005/06/fixedrepresentation - // http://schemas.openxps.org/oxps/v1.0/fixedrepresentation - if (NULL != strstr((char*)pBuffer, "fixedrepresentation") && - (NULL != strstr((char*)pBuffer, "/xps/") || NULL != strstr((char*)pBuffer, "/oxps/"))) - { - nFileType = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_XPS; - } + HRESULT hresult = OfficeUtils.LoadFileFromArchive(fileName, L"_rels/.rels", &pBuffer, nBufferSize); + if (hresult == S_OK && pBuffer != NULL) + { + // http://schemas.microsoft.com/xps/2005/06/fixedrepresentation + // http://schemas.openxps.org/oxps/v1.0/fixedrepresentation + if (NULL != strstr((char *)pBuffer, "fixedrepresentation") && (NULL != strstr((char *)pBuffer, "/xps/") || NULL != strstr((char *)pBuffer, "/oxps/"))) + { + nFileType = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_XPS; + } - delete []pBuffer; - pBuffer = NULL; + delete[] pBuffer; + pBuffer = NULL; - if (nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) return true; - } - else - { - HRESULT hresult = OfficeUtils.LoadFileFromArchive(fileName, L"_rels/.rels/[0].piece", &pBuffer, nBufferSize); - if (hresult == S_OK && pBuffer != NULL) - { - nFileType = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_XPS; - return true; - } - } - return false; + if (nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) + return true; + } + else + { + HRESULT hresult = OfficeUtils.LoadFileFromArchive(fileName, L"_rels/.rels/[0].piece", &pBuffer, nBufferSize); + if (hresult == S_OK && pBuffer != NULL) + { + nFileType = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_XPS; + return true; + } + } + return false; } diff --git a/Common/kernel.pro b/Common/kernel.pro index 0ae82104c9..d935cffa86 100644 --- a/Common/kernel.pro +++ b/Common/kernel.pro @@ -87,6 +87,10 @@ SOURCES += ./../DesktopEditor/common/Directory.cpp HEADERS += ./../DesktopEditor/common/SystemUtils.h SOURCES += ./../DesktopEditor/common/SystemUtils.cpp +# PROCESSENV +HEADERS += ./../DesktopEditor/common/ProcessEnv.h +SOURCES += ./../DesktopEditor/common/ProcessEnv.cpp + core_windows { LIBS += -lRpcrt4 LIBS += -lShell32 diff --git a/DesktopEditor/common/ProcessEnv.cpp b/DesktopEditor/common/ProcessEnv.cpp new file mode 100644 index 0000000000..b69af7c29d --- /dev/null +++ b/DesktopEditor/common/ProcessEnv.cpp @@ -0,0 +1,210 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2023 + * + * This program is a free software product. You can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License (AGPL) + * version 3 as published by the Free Software Foundation. In accordance with + * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect + * that Ascensio System SIA expressly excludes the warranty of non-infringement + * of any third-party rights. + * + * This program is distributed WITHOUT ANY WARRANTY; without even the implied + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For + * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html + * + * You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish + * street, Riga, Latvia, EU, LV-1050. + * + * The interactive user interfaces in modified source and object code versions + * of the Program must display Appropriate Legal Notices, as required under + * Section 5 of the GNU AGPL version 3. + * + * Pursuant to Section 7(b) of the License you must retain the original Product + * logo when distributing the program. Pursuant to Section 7(e) we decline to + * grant you any rights under trademark law for use of our trademarks. + * + * All the Product's GUI elements, including illustrations and icon sets, as + * well as technical writing content are licensed under the terms of the + * Creative Commons Attribution-ShareAlike 4.0 International. See the License + * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode + * + */ + +#include "./ProcessEnv.h" +#include +#include "./StringBuilder.h" +#include "./File.h" + +namespace NSProcessEnv +{ + class CProps + { + public: + std::map m_props; + + public: + CProps() + { + } + + static CProps& getInstance() + { + static CProps props; + return props; + } + + void Load(XmlUtils::CXmlNode& node) + { + std::vector childs; + if (node.GetChilds(childs)) + { + for (std::vector::iterator iter = childs.begin(); iter != childs.end(); iter++) + { + m_props.insert(std::make_pair(iter->GetNameA(), iter->GetTextA())); + } + } + } + + std::string Save() + { + if (0 == m_props.size()) + return ""; + + NSStringUtils::CStringBuilder oBuilder; + oBuilder.WriteString(L""); + + for (std::map::iterator iter = m_props.begin(); iter != m_props.end(); iter++) + { + std::wstring name = UTF8_TO_U(iter->first); + oBuilder.AddCharSafe('<'); + oBuilder.WriteString(name); + oBuilder.AddCharSafe('>'); + + const std::string& value = iter->second; + oBuilder.WriteEncodeXmlString(UTF8_TO_U(value)); + + oBuilder.WriteString(L"'); + } + + oBuilder.WriteString(L""); + + std::wstring sData = oBuilder.GetData(); + return U_TO_UTF8(sData); + } + + inline bool IsPresent(const char* key) + { + std::map::const_iterator iter = m_props.find(std::string(key)); + return (iter == m_props.end()) ? false : true; + } + + inline bool GetBoolValue(const char* key) + { + std::map::const_iterator iter = m_props.find(std::string(key)); + if (iter == m_props.end()) + return false; + + if ("1" == iter->second || "true" == iter->second) + return true; + return false; + } + inline int GetIntValue(const char* key) + { + std::map::const_iterator iter = m_props.find(std::string(key)); + if (iter == m_props.end()) + return 0; + + return std::stoi(iter->second); + } + inline std::string GetStringValueA(const char* key) + { + std::map::const_iterator iter = m_props.find(std::string(key)); + if (iter == m_props.end()) + return ""; + + return iter->second; + } + inline std::wstring GetStringValue(const char* key) + { + std::map::const_iterator iter = m_props.find(std::string(key)); + if (iter == m_props.end()) + return L""; + + return UTF8_TO_U(iter->second); + } + }; + + void Load(XmlUtils::CXmlNode& node) + { + CProps::getInstance().Load(node); + } + void Load(const std::string& strUtf8) + { + XmlUtils::CXmlNode node; + if (node.FromXmlStringA(strUtf8)) + Load(node); + } + void Load(const std::wstring& str) + { + XmlUtils::CXmlNode node; + if (node.FromXmlString(str)) + Load(node); + } + + std::string Save() + { + return CProps::getInstance().Save(); + } + + // GET + bool IsPresent(const char* key) + { + return CProps::getInstance().IsPresent(key); + } + + bool GetBoolValue(const char* key) + { + return CProps::getInstance().GetBoolValue(key); + } + int GetIntValue(const char* key) + { + return CProps::getInstance().GetIntValue(key); + } + std::string GetStringValueA(const char* key) + { + return CProps::getInstance().GetStringValueA(key); + } + std::wstring GetStringValue(const char* key) + { + return CProps::getInstance().GetStringValue(key); + } + + // SET + bool SetBoolValue(const char* key, const bool& value) + { + bool res = IsPresent(key); + CProps::getInstance().m_props.insert(std::make_pair(key, value ? "1" : "0")); + return res; + } + bool SetIntValue(const char* key, const int& value) + { + bool res = IsPresent(key); + CProps::getInstance().m_props.insert(std::make_pair(key, std::to_string(value))); + return res; + } + bool SetStringValueA(const char* key, const char* value) + { + bool res = IsPresent(key); + CProps::getInstance().m_props.insert(std::make_pair(key, value)); + return res; + } + bool SetStringValue(const char* key, const wchar_t* value) + { + bool res = IsPresent(key); + std::wstring tmp(value); + CProps::getInstance().m_props.insert(std::make_pair(key, U_TO_UTF8(tmp))); + return res; + } +} // namespace NSProcessEnv diff --git a/DesktopEditor/common/ProcessEnv.h b/DesktopEditor/common/ProcessEnv.h new file mode 100644 index 0000000000..4d86dc810b --- /dev/null +++ b/DesktopEditor/common/ProcessEnv.h @@ -0,0 +1,71 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2023 + * + * This program is a free software product. You can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License (AGPL) + * version 3 as published by the Free Software Foundation. In accordance with + * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect + * that Ascensio System SIA expressly excludes the warranty of non-infringement + * of any third-party rights. + * + * This program is distributed WITHOUT ANY WARRANTY; without even the implied + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For + * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html + * + * You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish + * street, Riga, Latvia, EU, LV-1050. + * + * The interactive user interfaces in modified source and object code versions + * of the Program must display Appropriate Legal Notices, as required under + * Section 5 of the GNU AGPL version 3. + * + * Pursuant to Section 7(b) of the License you must retain the original Product + * logo when distributing the program. Pursuant to Section 7(e) we decline to + * grant you any rights under trademark law for use of our trademarks. + * + * All the Product's GUI elements, including illustrations and icon sets, as + * well as technical writing content are licensed under the terms of the + * Creative Commons Attribution-ShareAlike 4.0 International. See the License + * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode + * + */ +#ifndef _PROCESS_ENV_H +#define _PROCESS_ENV_H + +#include "../../Common/kernel_config.h" +#include "../xml/include/xmlutils.h" +#include + +namespace NSProcessEnv +{ + namespace Converter + { + static const char* gc_allowNetworkRequest = "allowNetworkRequest"; + static const char* gc_allowPrivateIP = "allowPrivateIP"; + static const char* gc_proxy = "proxy"; + static const char* gc_proxyUser = "proxyUser"; + static const char* gc_proxyHeader = "proxyHeader"; + } + + // serialize + KERNEL_DECL void Load(XmlUtils::CXmlNode& node); + KERNEL_DECL void Load(const std::string& strUtf8); + KERNEL_DECL void Load(const std::wstring& str); + KERNEL_DECL std::string Save(); + + // props + KERNEL_DECL bool IsPresent(const char* key); + + KERNEL_DECL bool GetBoolValue(const char* key); + KERNEL_DECL int GetIntValue(const char* key); + KERNEL_DECL std::string GetStringValueA(const char* key); + KERNEL_DECL std::wstring GetStringValue(const char* key); + + // return is override + KERNEL_DECL bool SetBoolValue(const char* key, const bool& value); + KERNEL_DECL bool SetIntValue(const char* key, const int& value); + KERNEL_DECL bool SetStringValueA(const char* key, const char* value); + KERNEL_DECL bool SetStringValue(const char* key, const wchar_t* value); +} + +#endif // _PROCESS_ENV_H diff --git a/DesktopEditor/doctrenderer/docbuilder_p.cpp b/DesktopEditor/doctrenderer/docbuilder_p.cpp index 1835d08215..2382cfb640 100644 --- a/DesktopEditor/doctrenderer/docbuilder_p.cpp +++ b/DesktopEditor/doctrenderer/docbuilder_p.cpp @@ -1512,6 +1512,10 @@ namespace NSDoctRenderer { m_pInternal->m_oParams.m_arFontDirs.push_back(std::wstring(value)); } + else if (sParam == "--options") + { + NSProcessEnv::Load(std::wstring(value)); + } } void CDocBuilder::SetPropertyW(const wchar_t* param, const wchar_t* value) { diff --git a/DesktopEditor/doctrenderer/docbuilder_p.h b/DesktopEditor/doctrenderer/docbuilder_p.h index d955b3fb33..c11263b83c 100644 --- a/DesktopEditor/doctrenderer/docbuilder_p.h +++ b/DesktopEditor/doctrenderer/docbuilder_p.h @@ -61,6 +61,8 @@ #include "../fontengine/ApplicationFontsWorker.h" #include "../../OfficeUtils/src/OfficeUtils.h" +#include "../common/ProcessEnv.h" + #ifdef CreateFile #undef CreateFile #endif @@ -739,6 +741,11 @@ namespace NSDoctRenderer oBuilder.WriteString(L"true"); oBuilder.WriteString(L"./sdkjs/slide/themestrue"); oBuilder.WriteString(sParams); + + std::string sOptions = NSProcessEnv::Save(); + if (!sOptions.empty()) + oBuilder.WriteString(UTF8_TO_U(sOptions)); + oBuilder.WriteString(L""); std::wstring sXmlConvert = oBuilder.GetData(); @@ -1066,6 +1073,10 @@ namespace NSDoctRenderer oBuilder.WriteEncodeXmlString(sDstTmpDir); oBuilder.WriteString(L""); + std::string sOptions = NSProcessEnv::Save(); + if (!sOptions.empty()) + oBuilder.WriteString(UTF8_TO_U(sOptions)); + oBuilder.WriteString(L""); std::wstring sXmlConvert = oBuilder.GetData(); diff --git a/DesktopEditor/xml/include/xmlutils.h b/DesktopEditor/xml/include/xmlutils.h index 283a515210..41b7363bd7 100644 --- a/DesktopEditor/xml/include/xmlutils.h +++ b/DesktopEditor/xml/include/xmlutils.h @@ -168,6 +168,7 @@ namespace XmlUtils void Clear(); std::wstring GetName(); + std::string GetNameA(); std::wstring GetText(); std::string GetTextA(); diff --git a/DesktopEditor/xml/src/xmldom.cpp b/DesktopEditor/xml/src/xmldom.cpp index 803df39b42..dfdf6a8557 100644 --- a/DesktopEditor/xml/src/xmldom.cpp +++ b/DesktopEditor/xml/src/xmldom.cpp @@ -35,13 +35,13 @@ namespace XmlUtils { - std::wstring GetNameNoNS(const std::wstring & strNodeName) - { - int nFind = (int)strNodeName.find(L":"); - if (-1 == nFind) - return strNodeName; - return strNodeName.substr(nFind + 1); - } + std::wstring GetNameNoNS(const std::wstring& strNodeName) + { + int nFind = (int)strNodeName.find(L":"); + if (-1 == nFind) + return strNodeName; + return strNodeName.substr(nFind + 1); + } const char* GetNameNoNS(const char* strNodeName) { const char* find = strchr(strNodeName, ':'); @@ -54,42 +54,42 @@ namespace XmlUtils return strNodeName; } } - std::wstring GetNamespace(const std::wstring& strNodeName) - { - int nFind = (int)strNodeName.find(L":"); - if (-1 == nFind) - return L""; - return strNodeName.substr(0, nFind); - } -} + std::wstring GetNamespace(const std::wstring& strNodeName) + { + int nFind = (int)strNodeName.find(L":"); + if (-1 == nFind) + return L""; + return strNodeName.substr(0, nFind); + } +} // namespace XmlUtils namespace XmlUtils { - class CXmlNodeBase : public IXmlDOMDocument - { - public: - IXmlDOMDocument* m_pDocument; + class CXmlNodeBase : public IXmlDOMDocument + { + public: + IXmlDOMDocument* m_pDocument; - std::map m_attributes; - std::vector m_nodes; - std::string m_sText; - std::wstring m_sName; + std::map m_attributes; + std::vector m_nodes; + std::string m_sText; + std::wstring m_sName; - public: - CXmlNodeBase(); - ~CXmlNodeBase(); + public: + CXmlNodeBase(); + ~CXmlNodeBase(); - void AddRefDoc(); - void ReleaseDoc(); + void AddRefDoc(); + void ReleaseDoc(); - std::wstring GetXml(); - void GetXml(NSStringUtils::CStringBuilder& oWriter); - }; + std::wstring GetXml(); + void GetXml(NSStringUtils::CStringBuilder& oWriter); + }; CXmlNodeBase::CXmlNodeBase() { m_pDocument = NULL; - m_sText = ""; + m_sText = ""; m_sName = L""; } CXmlNodeBase::~CXmlNodeBase() @@ -145,17 +145,17 @@ namespace XmlUtils { m_nodes[i]->GetXml(oWriter); } - oWriter.WriteEncodeXmlString(NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)m_sText.c_str(), (LONG)m_sText.length()).c_str()); + oWriter.WriteEncodeXmlString(NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)m_sText.c_str(), (LONG)m_sText.length()).c_str()); oWriter.WriteString(L"", 1); } -} +} // namespace XmlUtils namespace XmlUtils { - class CXmlDOMDocument : public IXmlDOMDocument, public CXmlLiteReader_Private + class CXmlDOMDocument : public IXmlDOMDocument, public CXmlLiteReader_Private { public: CXmlNodeBase* m_pNode; @@ -256,11 +256,11 @@ namespace XmlUtils nCurDepth = GetDepth(); if (eNodeType == XmlNodeType_Text || eNodeType == XmlNodeType_Whitespace || eNodeType == XmlNodeType_SIGNIFICANT_WHITESPACE) { - m_pCurrentNode->m_sText += GetTextA(); + m_pCurrentNode->m_sText += GetTextA(); } else if (eNodeType == XmlNodeType_CDATA) { - m_pCurrentNode->m_sText += GetTextA(); + m_pCurrentNode->m_sText += GetTextA(); } else if (eNodeType == XmlNodeType_Element) { @@ -292,7 +292,7 @@ namespace XmlUtils } } }; -} +} // namespace XmlUtils namespace XmlUtils { @@ -316,7 +316,7 @@ namespace XmlUtils } bool CXmlNode::FromXmlFile(const std::wstring& sFile, bool bRemoveRootNode) { - //ignore bRemoveRootNode + // ignore bRemoveRootNode CXmlDOMDocument* m_pDocument = new CXmlDOMDocument(); bool bRes = m_pDocument->FromFile(sFile); @@ -333,9 +333,9 @@ namespace XmlUtils delete m_pDocument; return false; } - //присваиваем m_pBase без AddRef, чтобы при удалении CXmlNode начался удаляться m_pBase(после конструктора RefCount==1, а если сделать AddRef то не удалится) + // присваиваем m_pBase без AddRef, чтобы при удалении CXmlNode начался удаляться m_pBase(после конструктора RefCount==1, а если сделать AddRef то не удалится) m_pBase = m_pDocument->m_pNode; - //после Parse все Node из m_pDocument сделали ему AddRef, поэтому можем вызвать Release(потому что напрямую нигде его не используем), а окончательно он удалится после удаления всех Node + // после Parse все Node из m_pDocument сделали ему AddRef, поэтому можем вызвать Release(потому что напрямую нигде его не используем), а окончательно он удалится после удаления всех Node m_pDocument->Release(); return true; @@ -359,15 +359,15 @@ namespace XmlUtils delete m_pDocument; return false; } - //присваиваем m_pBase без AddRef, чтобы при удалении CXmlNode начался удаляться m_pBase(после конструктора RefCount==1, а если сделать AddRef то не удалится) + // присваиваем m_pBase без AddRef, чтобы при удалении CXmlNode начался удаляться m_pBase(после конструктора RefCount==1, а если сделать AddRef то не удалится) m_pBase = m_pDocument->m_pNode; - //после Parse все Node из m_pDocument сделали ему AddRef, поэтому можем вызвать Release(потому что напрямую нигде его не используем), а окончательно он удалится после удаления всех Node + // после Parse все Node из m_pDocument сделали ему AddRef, поэтому можем вызвать Release(потому что напрямую нигде его не используем), а окончательно он удалится после удаления всех Node m_pDocument->Release(); return true; } bool CXmlNode::FromXmlString(const wchar_t* sString) { - return FromXmlString(std::wstring(sString)); + return FromXmlString(std::wstring(sString)); } bool CXmlNode::FromXmlString(const std::wstring& sString) { @@ -386,37 +386,41 @@ namespace XmlUtils { return (IsValid() ? m_pBase->m_sName : L""); } - std::string CXmlNode::GetTextA() - { - if (IsValid()) - { - return m_pBase->m_sText; - } - else - return ""; - } - std::wstring CXmlNode::GetText() + std::string CXmlNode::GetNameA() { - if (IsValid()) - { - return NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)m_pBase->m_sText.c_str(), (LONG)m_pBase->m_sText.length()); - } - else - return L""; + return (IsValid() ? U_TO_UTF8(m_pBase->m_sName) : ""); + } + std::string CXmlNode::GetTextA() + { + if (IsValid()) + { + return m_pBase->m_sText; + } + else + return ""; + } + std::wstring CXmlNode::GetText() + { + if (IsValid()) + { + return NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)m_pBase->m_sText.c_str(), (LONG)m_pBase->m_sText.length()); + } + else + return L""; } bool CXmlNode::GetTextIfExist(std::wstring& sOutput) { bool bRes = false; if (IsValid() && !m_pBase->m_sText.empty()) { - sOutput = NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)m_pBase->m_sText.c_str(), (LONG)m_pBase->m_sText.length()); + sOutput = NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)m_pBase->m_sText.c_str(), (LONG)m_pBase->m_sText.length()); bRes = true; } return bRes; } std::wstring CXmlNode::GetTextExt(const std::wstring& strDefaultValue) { - //todo xml:space preserve + // todo xml:space preserve std::wstring sRes; if (!GetTextIfExist(sRes)) sRes = strDefaultValue; @@ -436,31 +440,31 @@ namespace XmlUtils return GetAttribute(std::wstring(strAttibuteName)); } - void CXmlNode::ReadAllAttributesA(std::vector& strNames, std::vector& strValues) - { - if (!IsValid()) - return; + void CXmlNode::ReadAllAttributesA(std::vector& strNames, std::vector& strValues) + { + if (!IsValid()) + return; - std::map::iterator p; - for (p = m_pBase->m_attributes.begin(); p != m_pBase->m_attributes.end(); ++p) - { - strNames.push_back(p->first); - strValues.push_back(p->second); - } - } + std::map::iterator p; + for (p = m_pBase->m_attributes.begin(); p != m_pBase->m_attributes.end(); ++p) + { + strNames.push_back(p->first); + strValues.push_back(p->second); + } + } - void CXmlNode::ReadAllAttributes(std::vector& strNames, std::vector& strValues) - { - if (!IsValid()) - return; + void CXmlNode::ReadAllAttributes(std::vector& strNames, std::vector& strValues) + { + if (!IsValid()) + return; - std::map::iterator p; - for (p = m_pBase->m_attributes.begin(); p != m_pBase->m_attributes.end(); ++p) - { - strNames.push_back (NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)p->first.c_str(), (long)p->first.length())); - strValues.push_back (NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)p->second.c_str(), (long)p->second.length())); - } - } + std::map::iterator p; + for (p = m_pBase->m_attributes.begin(); p != m_pBase->m_attributes.end(); ++p) + { + strNames.push_back(NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)p->first.c_str(), (long)p->first.length())); + strValues.push_back(NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)p->second.c_str(), (long)p->second.length())); + } + } std::string CXmlNode::GetAttributeA(const std::string& sName, const std::string& _default) { @@ -515,41 +519,41 @@ namespace XmlUtils { return m_pBase->m_attributes.size(); } - else + else return 0; } - void CXmlNode::GetAllAttributes(std::vector& names, std::vector& values) - { - for (std::map::iterator p = m_pBase->m_attributes.begin(); p != m_pBase->m_attributes.end(); ++p) - { - names.push_back(UTF8_TO_U(p->first)); - values.push_back(UTF8_TO_U(p->second)); - } - } - void CXmlNode::GetAllAttributes(std::vector& names, std::vector& values) - { - for (std::map::iterator p = m_pBase->m_attributes.begin(); p != m_pBase->m_attributes.end(); ++p) - { - names.push_back(p->first); - values.push_back(p->second); - } - } - void CXmlNode::GetAllAttributes(std::list& names, std::list& values) - { - for (std::map::iterator p = m_pBase->m_attributes.begin(); p != m_pBase->m_attributes.end(); ++p) - { - names.push_back(UTF8_TO_U(p->first)); - values.push_back(UTF8_TO_U(p->second)); - } - } - void CXmlNode::GetAllAttributes(std::list& names, std::list& values) - { - for (std::map::iterator p = m_pBase->m_attributes.begin(); p != m_pBase->m_attributes.end(); ++p) - { - names.push_back(p->first); - values.push_back(p->second); - } - } + void CXmlNode::GetAllAttributes(std::vector& names, std::vector& values) + { + for (std::map::iterator p = m_pBase->m_attributes.begin(); p != m_pBase->m_attributes.end(); ++p) + { + names.push_back(UTF8_TO_U(p->first)); + values.push_back(UTF8_TO_U(p->second)); + } + } + void CXmlNode::GetAllAttributes(std::vector& names, std::vector& values) + { + for (std::map::iterator p = m_pBase->m_attributes.begin(); p != m_pBase->m_attributes.end(); ++p) + { + names.push_back(p->first); + values.push_back(p->second); + } + } + void CXmlNode::GetAllAttributes(std::list& names, std::list& values) + { + for (std::map::iterator p = m_pBase->m_attributes.begin(); p != m_pBase->m_attributes.end(); ++p) + { + names.push_back(UTF8_TO_U(p->first)); + values.push_back(UTF8_TO_U(p->second)); + } + } + void CXmlNode::GetAllAttributes(std::list& names, std::list& values) + { + for (std::map::iterator p = m_pBase->m_attributes.begin(); p != m_pBase->m_attributes.end(); ++p) + { + names.push_back(p->first); + values.push_back(p->second); + } + } bool CXmlNode::GetAttributeIfExist(const std::wstring& sName, std::wstring& sOutput) { bool bRes = false; @@ -674,16 +678,16 @@ namespace XmlUtils { std::wstring sText; if (oTemp.GetTextIfExist(sText)) - { - try - { - nRes = std::stoi(sText); - } - catch (...) - { - nRes = nDef; - } - } + { + try + { + nRes = std::stoi(sText); + } + catch (...) + { + nRes = nDef; + } + } } return nRes; } @@ -693,11 +697,11 @@ namespace XmlUtils std::wstring sRes; if (!GetAttributeIfExist(strAttributeName, sRes)) { - CXmlNode oTemp; - if (GetNode(strAttributeName, oTemp)) - sRes = oTemp.GetText(); - else - sRes = strDefaultValue; + CXmlNode oTemp; + if (GetNode(strAttributeName, oTemp)) + sRes = oTemp.GetText(); + else + sRes = strDefaultValue; } return sRes; } @@ -736,7 +740,7 @@ namespace XmlUtils { std::vector oNodes; - if (IsValid()) + if (IsValid()) { bool bGetAll = false; if (L"*" == sName) @@ -750,7 +754,7 @@ namespace XmlUtils CXmlNodeBase* pBase = m_pBase->m_nodes[i]; oNode.SetBase(pBase); - oNodes.push_back(oNode); + oNodes.push_back(oNode); } } } @@ -780,7 +784,7 @@ namespace XmlUtils CXmlNode oNode; CXmlNodeBase* pBase = m_pBase->m_nodes[i]; oNode.SetBase(pBase); - oNodes.push_back(oNode); + oNodes.push_back(oNode); } } } @@ -801,7 +805,7 @@ namespace XmlUtils CXmlNode oNode; CXmlNodeBase* pBase = m_pBase->m_nodes[i]; oNode.SetBase(pBase); - oXmlNodes.push_back(oNode); + oXmlNodes.push_back(oNode); } } } @@ -827,10 +831,10 @@ namespace XmlUtils } return bRes; } - bool CXmlNode::GetNodes(const std::wstring& sName, std::vector& oNodes) + bool CXmlNode::GetNodes(const std::wstring& sName, std::vector& oNodes) { oNodes = GetNodes(sName); - return (0 != oNodes.size()); + return (0 != oNodes.size()); } CXmlNode& CXmlNode::operator=(const CXmlNode& oSrc) @@ -860,7 +864,7 @@ namespace XmlUtils NSStringUtils::CStringBuilder oWriter; m_pBase->GetXml(oWriter); return oWriter.GetData(); - } + } void CXmlNode::SetBase(CXmlNodeBase* pBase) { @@ -871,181 +875,178 @@ namespace XmlUtils if (NULL != pBaseOld) pBaseOld->Release(); } - std::wstring CXmlNode::GetNamespace(const std::wstring& strNodeName) - { - int nFind = strNodeName.find(wchar_t(':')); - if (-1 == nFind) - return L""; - return strNodeName.substr(0, nFind); - } - std::wstring CXmlNode::GetNameNoNS(const std::wstring& strNodeName) - { - int nFind = strNodeName.find(wchar_t(':')); - if (-1 == nFind) - return strNodeName; - return strNodeName.substr(nFind + 1); - } -} + std::wstring CXmlNode::GetNamespace(const std::wstring& strNodeName) + { + int nFind = strNodeName.find(wchar_t(':')); + if (-1 == nFind) + return L""; + return strNodeName.substr(0, nFind); + } + std::wstring CXmlNode::GetNameNoNS(const std::wstring& strNodeName) + { + int nFind = strNodeName.find(wchar_t(':')); + if (-1 == nFind) + return strNodeName; + return strNodeName.substr(nFind + 1); + } +} // namespace XmlUtils namespace XmlUtils { - class CXmlBuffer - { - public: - NSStringUtils::CStringBuilderA builder; + class CXmlBuffer + { + public: + NSStringUtils::CStringBuilderA builder; - public: - CXmlBuffer() - { - } - ~CXmlBuffer() - { - } - }; + public: + CXmlBuffer() + { + } + ~CXmlBuffer() + { + } + }; - static int buffer_xmlBufferIOWrite(CXmlBuffer* buf, const char* buffer, int len) - { - buf->builder.WriteString(buffer, (size_t)len); - return len; - } + static int buffer_xmlBufferIOWrite(CXmlBuffer* buf, const char* buffer, int len) + { + buf->builder.WriteString(buffer, (size_t)len); + return len; + } - static int buffer_xmlBufferIOClose(CXmlBuffer* buf) - { - XML_UNUSED(buf); - return 0; - } + static int buffer_xmlBufferIOClose(CXmlBuffer* buf) + { + XML_UNUSED(buf); + return 0; + } - static int buffer_xmlC14NIsVisibleCallback(void * user_data, xmlNodePtr node, xmlNodePtr parent) - { - XML_UNUSED(user_data); - XML_UNUSED(parent); - if (node->type == XML_TEXT_NODE) - { - const char* cur = (char*)node->content; - size_t size = strlen(cur); - for (size_t i = 0; i < size; ++i, ++cur) - { - if (*cur != '\n' && *cur != '\r' && *cur != '\t') - return 1; - } - return 0; - } - return 1; - } + static int buffer_xmlC14NIsVisibleCallback(void* user_data, xmlNodePtr node, xmlNodePtr parent) + { + XML_UNUSED(user_data); + XML_UNUSED(parent); + if (node->type == XML_TEXT_NODE) + { + const char* cur = (char*)node->content; + size_t size = strlen(cur); + for (size_t i = 0; i < size; ++i, ++cur) + { + if (*cur != '\n' && *cur != '\r' && *cur != '\t') + return 1; + } + return 0; + } + return 1; + } - std::string NSXmlCanonicalizator::Execute(const std::string& sXml, int mode, bool withComments) - { + std::string NSXmlCanonicalizator::Execute(const std::string& sXml, int mode, bool withComments) + { #ifdef LIBXML_C14N_ENABLED - xmlDocPtr xmlDoc = xmlParseMemory((char*)sXml.c_str(), (int)sXml.length()); + xmlDocPtr xmlDoc = xmlParseMemory((char*)sXml.c_str(), (int)sXml.length()); - CXmlBuffer bufferC14N; - xmlOutputBufferPtr _buffer = xmlOutputBufferCreateIO((xmlOutputWriteCallback)buffer_xmlBufferIOWrite, - (xmlOutputCloseCallback)buffer_xmlBufferIOClose, - &bufferC14N, - NULL); + CXmlBuffer bufferC14N; + xmlOutputBufferPtr _buffer = xmlOutputBufferCreateIO((xmlOutputWriteCallback)buffer_xmlBufferIOWrite, (xmlOutputCloseCallback)buffer_xmlBufferIOClose, &bufferC14N, NULL); - xmlC14NExecute(xmlDoc, buffer_xmlC14NIsVisibleCallback, NULL, mode, NULL, withComments ? 1 : 0, _buffer); + xmlC14NExecute(xmlDoc, buffer_xmlC14NIsVisibleCallback, NULL, mode, NULL, withComments ? 1 : 0, _buffer); - xmlOutputBufferClose(_buffer); + xmlOutputBufferClose(_buffer); - return bufferC14N.builder.GetData(); + return bufferC14N.builder.GetData(); #else return ""; #endif - } - std::string NSXmlCanonicalizator::Execute(const std::wstring& sXmlFile, int mode, bool withComments) - { - std::string sXml; - NSFile::CFileBinary::ReadAllTextUtf8A(sXmlFile, sXml); - return Execute(sXml, mode, withComments); - } -} + } + std::string NSXmlCanonicalizator::Execute(const std::wstring& sXmlFile, int mode, bool withComments) + { + std::string sXml; + NSFile::CFileBinary::ReadAllTextUtf8A(sXmlFile, sXml); + return Execute(sXml, mode, withComments); + } +} // namespace XmlUtils std::string XmlUtils::GetUtf8FromFileContent(unsigned char* pData, unsigned int len) { - if (4 > len) - return std::string((char*)pData, (size_t)len); + if (4 > len) + return std::string((char*)pData, (size_t)len); - if (pData[0] == 0xEF && pData[1] == 0xBB && pData[2] == 0xFE && pData[3] == 0xBF) - { - return std::string((char*)pData + 3, (size_t)(len - 3)); - } + if (pData[0] == 0xEF && pData[1] == 0xBB && pData[2] == 0xFE && pData[3] == 0xBF) + { + return std::string((char*)pData + 3, (size_t)(len - 3)); + } - char markerUtf16 = 0; - if (pData[0] == 0xFF && pData[1] == 0xFE && !(pData[2] == 0x00 && pData[3] == 0x00)) - markerUtf16 = 1; - if (pData[0] == 0xFE && pData[1] == 0xFF) - markerUtf16 = 2; + char markerUtf16 = 0; + if (pData[0] == 0xFF && pData[1] == 0xFE && !(pData[2] == 0x00 && pData[3] == 0x00)) + markerUtf16 = 1; + if (pData[0] == 0xFE && pData[1] == 0xFF) + markerUtf16 = 2; - if (0 != markerUtf16) - { - int nCountSymbols = (len - 2) >> 1; - int nCountSymbolsNatural = 0; + if (0 != markerUtf16) + { + int nCountSymbols = (len - 2) >> 1; + int nCountSymbolsNatural = 0; - unsigned int* pUnicodes = new unsigned int[nCountSymbols]; - unsigned char* pCurrent = pData + 2; + unsigned int* pUnicodes = new unsigned int[nCountSymbols]; + unsigned char* pCurrent = pData + 2; - for (int i = 0; i < nCountSymbols; ++i) - { - unsigned short nLeading = (markerUtf16 == 1) ? (pCurrent[0] | (pCurrent[1] << 8)) : (pCurrent[1] | (pCurrent[0] << 8)); - pCurrent += 2; + for (int i = 0; i < nCountSymbols; ++i) + { + unsigned short nLeading = (markerUtf16 == 1) ? (pCurrent[0] | (pCurrent[1] << 8)) : (pCurrent[1] | (pCurrent[0] << 8)); + pCurrent += 2; - if (nLeading < 0xD800 || nLeading > 0xDFFF) - { - pUnicodes[nCountSymbolsNatural++] = nLeading; - } - else - { - i++; - if (i == nCountSymbols) - break; + if (nLeading < 0xD800 || nLeading > 0xDFFF) + { + pUnicodes[nCountSymbolsNatural++] = nLeading; + } + else + { + i++; + if (i == nCountSymbols) + break; - unsigned short nTrailing = (markerUtf16 == 1) ? (pCurrent[0] | (pCurrent[1] << 8)) : (pCurrent[1] | (pCurrent[0] << 8)); - pCurrent += 2; + unsigned short nTrailing = (markerUtf16 == 1) ? (pCurrent[0] | (pCurrent[1] << 8)) : (pCurrent[1] | (pCurrent[0] << 8)); + pCurrent += 2; - if (nTrailing >= 0xDC00 && nTrailing <= 0xDFFF) - { - pUnicodes[nCountSymbolsNatural++] = 0x10000 + (((nLeading & 0x03FF) << 10) | (nTrailing & 0x03FF)); - } - } - } + if (nTrailing >= 0xDC00 && nTrailing <= 0xDFFF) + { + pUnicodes[nCountSymbolsNatural++] = 0x10000 + (((nLeading & 0x03FF) << 10) | (nTrailing & 0x03FF)); + } + } + } - std::string sRet = NSStringExt::CConverter::GetUtf8FromUTF32(pUnicodes, nCountSymbolsNatural); + std::string sRet = NSStringExt::CConverter::GetUtf8FromUTF32(pUnicodes, nCountSymbolsNatural); - RELEASEARRAYOBJECTS(pUnicodes); - return sRet; - } + RELEASEARRAYOBJECTS(pUnicodes); + return sRet; + } - char markerUtf32 = 0; - if (pData[0] == 0xFF && pData[1] == 0xFE && pData[2] == 0x00 && pData[3] == 0x00) - markerUtf32 = 1; - if (pData[0] == 0 && pData[1] == 0 && pData[2] == 0xFE && pData[3] == 0xFF) - markerUtf32 = 2; + char markerUtf32 = 0; + if (pData[0] == 0xFF && pData[1] == 0xFE && pData[2] == 0x00 && pData[3] == 0x00) + markerUtf32 = 1; + if (pData[0] == 0 && pData[1] == 0 && pData[2] == 0xFE && pData[3] == 0xFF) + markerUtf32 = 2; - if (0 != markerUtf16) - { - int nCountSymbols = (len - 4) >> 2; - int nCountSymbolsNatural = 0; + if (0 != markerUtf16) + { + int nCountSymbols = (len - 4) >> 2; + int nCountSymbolsNatural = 0; - unsigned int* pUnicodes = new unsigned int[nCountSymbols]; - unsigned char* pCurrent = pData + 4; + unsigned int* pUnicodes = new unsigned int[nCountSymbols]; + unsigned char* pCurrent = pData + 4; - if (markerUtf32 == 1) - { - for (int i = 0; i < nCountSymbols; ++i, pCurrent += 4) - pUnicodes[nCountSymbolsNatural++] = (pCurrent[0] | (pCurrent[1] << 8) | (pCurrent[2] << 16) | (pCurrent[3] << 24)); - } - else - { - for (int i = 0; i < nCountSymbols; ++i, pCurrent += 4) - pUnicodes[nCountSymbolsNatural++] = (pCurrent[3] | (pCurrent[2] << 8) | (pCurrent[1] << 16) | (pCurrent[0] << 24)); - } + if (markerUtf32 == 1) + { + for (int i = 0; i < nCountSymbols; ++i, pCurrent += 4) + pUnicodes[nCountSymbolsNatural++] = (pCurrent[0] | (pCurrent[1] << 8) | (pCurrent[2] << 16) | (pCurrent[3] << 24)); + } + else + { + for (int i = 0; i < nCountSymbols; ++i, pCurrent += 4) + pUnicodes[nCountSymbolsNatural++] = (pCurrent[3] | (pCurrent[2] << 8) | (pCurrent[1] << 16) | (pCurrent[0] << 24)); + } - std::string sRet = NSStringExt::CConverter::GetUtf8FromUTF32(pUnicodes, nCountSymbolsNatural); + std::string sRet = NSStringExt::CConverter::GetUtf8FromUTF32(pUnicodes, nCountSymbolsNatural); - RELEASEARRAYOBJECTS(pUnicodes); - return sRet; - } + RELEASEARRAYOBJECTS(pUnicodes); + return sRet; + } - return std::string((char*)pData, (size_t)len); + return std::string((char*)pData, (size_t)len); } diff --git a/X2tConverter/src/ASCConverters.cpp b/X2tConverter/src/ASCConverters.cpp index 79bef13d0c..b0d89f5f5d 100644 --- a/X2tConverter/src/ASCConverters.cpp +++ b/X2tConverter/src/ASCConverters.cpp @@ -33,78 +33,78 @@ #include "ASCConverters.h" #include "cextracttools.h" -#include "../../OfficeUtils/src/OfficeUtils.h" #include "../../Common/3dParty/pole/pole.h" +#include "../../OfficeUtils/src/OfficeUtils.h" #include "../../OOXML/Binary/Document/DocWrapper/DocxSerializer.h" #include "../../OOXML/Binary/Document/DocWrapper/XlsxSerializer.h" -#include "../../OOXML/XlsbFormat/Xlsb.h" #include "../../OOXML/PPTXFormat/DrawingConverter/ASCOfficePPTXFile.h" +#include "../../OOXML/XlsbFormat/Xlsb.h" -#include "../../RtfFile/Format/ConvertationManager.h" #include "../../MsBinaryFile/DocFile/Main/DocFormatLib.h" -#include "../../TxtFile/Source/TxtXmlFile.h" #include "../../MsBinaryFile/PptFile/Main/PPTFormatLib.h" #include "../../OdfFile/Reader/Converter/ConvertOO2OOX.h" #include "../../OdfFile/Writer/Converter/Oox2OdfConverter.h" +#include "../../RtfFile/Format/ConvertationManager.h" +#include "../../TxtFile/Source/TxtXmlFile.h" -#include "../../DesktopEditor/doctrenderer/doctrenderer.h" #include "../../DesktopEditor/doctrenderer/docbuilder.h" -#include "../../DesktopEditor/graphics/pro/Fonts.h" +#include "../../DesktopEditor/doctrenderer/doctrenderer.h" #include "../../DesktopEditor/graphics/MetafileToGraphicsRenderer.h" +#include "../../DesktopEditor/graphics/pro/Fonts.h" -#include "../../PdfFile/PdfFile.h" #include "../../DjVuFile/DjVu.h" -#include "../../XpsFile/XpsFile.h" #include "../../DocxRenderer/DocxRenderer.h" -#include "../../HtmlRenderer/include/HTMLRenderer3.h" +#include "../../EpubFile/CEpubFile.h" #include "../../Fb2File/Fb2File.h" #include "../../HtmlFile2/htmlfile2.h" -#include "../../EpubFile/CEpubFile.h" +#include "../../HtmlRenderer/include/HTMLRenderer3.h" +#include "../../PdfFile/PdfFile.h" +#include "../../XpsFile/XpsFile.h" -#include "../../MsBinaryFile/XlsFile/Converter/ConvertXls2Xlsx.h" #include "../../MsBinaryFile/Common/Vba/VbaReader.h" +#include "../../MsBinaryFile/XlsFile/Converter/ConvertXls2Xlsx.h" #include "../../OfficeCryptReader/source/ECMACryptFile.h" #include "../../OOXML/Binary/Sheets/Common/Common.h" -#include "../../OOXML/Binary/Sheets/Writer/CSVWriter.h" #include "../../OOXML/Binary/Sheets/Reader/CSVReader.h" #include "../../OOXML/Binary/Sheets/Reader/XMLReader/XMLReader.h" +#include "../../OOXML/Binary/Sheets/Writer/CSVWriter.h" -#include "../../DesktopEditor/common/Path.h" #include "../../DesktopEditor/common/Directory.h" +#include "../../DesktopEditor/common/Path.h" -#include #include +#include namespace NExtractTools { - void initApplicationFonts(NSFonts::IApplicationFonts* pApplicationFonts, InputParams& params) - { + void initApplicationFonts(NSFonts::IApplicationFonts *pApplicationFonts, InputParams ¶ms) + { std::wstring sFontPath = params.getFontPath(); if (sFontPath.empty()) - pApplicationFonts->Initialize(); - else - pApplicationFonts->InitializeFromFolder(sFontPath); - } + pApplicationFonts->Initialize(); + else + pApplicationFonts->InitializeFromFolder(sFontPath); + } std::wstring getExtentionByRasterFormat(int format) { std::wstring sExt; - switch(format) + switch (format) { - case 1: - sExt = L".bmp"; + case 1: + sExt = L".bmp"; break; - case 2: - sExt = L".gif"; + case 2: + sExt = L".gif"; break; - case 3: - sExt = L".jpg"; + case 3: + sExt = L".jpg"; break; - default: - sExt = L".png"; + default: + sExt = L".png"; break; } return sExt; @@ -134,10 +134,10 @@ namespace NExtractTools return res; } - _UINT32 CopyOOXOrigin(const std::wstring& sToDir, const std::wstring& sOOXDir, const std::wstring& sToFile, const std::wstring& sOOXFile) + _UINT32 CopyOOXOrigin(const std::wstring &sToDir, const std::wstring &sOOXDir, const std::wstring &sToFile, const std::wstring &sOOXFile) { _UINT32 nRes = 0; - //save Editor.xlsx for pivot + // save Editor.xlsx for pivot std::wstring sEditorOOX = sToDir + FILE_SEPARATOR_STR + sToFile; if (sOOXFile.empty()) { @@ -167,7 +167,7 @@ namespace NExtractTools } _UINT32 replaceContentType(const std::wstring &sDir, const std::wstring &sCTFrom, const std::wstring &sCTTo) { - _UINT32 nRes = 0; + _UINT32 nRes = 0; std::wstring sContentTypesPath = sDir + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); if (NSFile::CFileBinary::Exists(sContentTypesPath)) { @@ -181,7 +181,7 @@ namespace NExtractTools } return nRes; } - _UINT32 processEncryptionError(_UINT32 hRes, const std::wstring &sFrom, InputParams& params) + _UINT32 processEncryptionError(_UINT32 hRes, const std::wstring &sFrom, InputParams ¶ms) { if (AVS_ERROR_DRM == hRes) { @@ -197,7 +197,7 @@ namespace NExtractTools } return hRes; } - _UINT32 package2ooxml(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 package2ooxml(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { std::wstring sResultOoxmlDir = sTemp + FILE_SEPARATOR_STR + _T("ooxml_unpacked"); @@ -212,7 +212,7 @@ namespace NExtractTools return nRes; } - _UINT32 package2bin_t(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 package2bin_t(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { std::wstring sResultBin_tDir = sTemp + FILE_SEPARATOR_STR + _T("bin_t_unpacked"); std::wstring sResultBin_tFileEditor = sResultBin_tDir + FILE_SEPARATOR_STR + _T("Editor.bin"); @@ -229,7 +229,7 @@ namespace NExtractTools return nRes; } - _UINT32 package2bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 package2bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { std::wstring sResultOoxmlDir = sTemp + FILE_SEPARATOR_STR + _T("ooxml_unpacked"); @@ -251,29 +251,33 @@ namespace NExtractTools case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM: case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX: case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM: - nRes = docx_dir2doct_bin(sResultOoxmlDir, sTo, sTemp, params, L""); break; + nRes = docx_dir2doct_bin(sResultOoxmlDir, sTo, sTemp, params, L""); + break; case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX: case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM: case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX: case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM: case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB: - nRes = xlsx_dir2xlst_bin(sResultOoxmlDir, sTo, params, true, L""); break; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX: + nRes = xlsx_dir2xlst_bin(sResultOoxmlDir, sTo, params, true, L""); + break; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX: case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM: case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX: case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX: case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM: case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM: - nRes = pptx_dir2pptt_bin(sResultOoxmlDir, sTo, sTemp, params, L""); break; - default: break; + nRes = pptx_dir2pptt_bin(sResultOoxmlDir, sTo, sTemp, params, L""); + break; + default: + break; } } } return nRes; } - _UINT32 package2ooxml_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 package2ooxml_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { BinDocxRW::CDocxSerializer m_oCDocxSerializer; @@ -282,30 +286,30 @@ namespace NExtractTools return nRes; } // docxflat -> bin - _UINT32 docxflat2doct_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) - { - // Save to file (from temp dir) - BinDocxRW::CDocxSerializer m_oCDocxSerializer; + _UINT32 docxflat2doct_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) + { + // Save to file (from temp dir) + BinDocxRW::CDocxSerializer m_oCDocxSerializer; m_oCDocxSerializer.setIsNoBase64(params.getIsNoBase64()); - m_oCDocxSerializer.setFontDir(params.getFontPath()); + m_oCDocxSerializer.setFontDir(params.getFontPath()); - //bool bRes = m_oCDocxSerializer.saveToFile (sResDoct, sSrcDocx, sTemp); - _UINT32 nRes = m_oCDocxSerializer.saveToFile (sTo, sFrom, params.getXmlOptions(), sTemp) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; + // bool bRes = m_oCDocxSerializer.saveToFile (sResDoct, sSrcDocx, sTemp); + _UINT32 nRes = m_oCDocxSerializer.saveToFile(sTo, sFrom, params.getXmlOptions(), sTemp) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; return nRes; - } + } // docx -> bin - _UINT32 docx2doct_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) - { - std::wstring sTempUnpackedDOCX = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); + _UINT32 docx2doct_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) + { + std::wstring sTempUnpackedDOCX = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedDOCX); + NSDirectory::CreateDirectory(sTempUnpackedDOCX); - COfficeUtils oCOfficeUtils(NULL); - if (S_OK != oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedDOCX, NULL, 0)) + COfficeUtils oCOfficeUtils(NULL); + if (S_OK != oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedDOCX, NULL, 0)) { - //check crypt + // check crypt COfficeFileFormatChecker OfficeFileFormatChecker; if (OfficeFileFormatChecker.isOfficeFile(sFrom)) { @@ -320,12 +324,13 @@ namespace NExtractTools } return AVS_FILEUTILS_ERROR_CONVERT; } - else return AVS_FILEUTILS_ERROR_CONVERT; + else + return AVS_FILEUTILS_ERROR_CONVERT; } return docx_dir2doct_bin(sTempUnpackedDOCX, sTo, sTemp, params, sFrom); - } - _UINT32 docx_dir2doct_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params, const std::wstring &sDocxFile) - { + } + _UINT32 docx_dir2doct_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms, const std::wstring &sDocxFile) + { _UINT32 nRes = S_OK; std::wstring sToDir = NSDirectory::GetFolderPath(sTo); if (params.needConvertToOrigin(AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX) && !sDocxFile.empty()) @@ -340,50 +345,50 @@ namespace NExtractTools m_oCDocxSerializer.setIsNoBase64(params.getIsNoBase64()); m_oCDocxSerializer.setFontDir(params.getFontPath()); - //bool bRes = m_oCDocxSerializer.saveToFile (sResDoct, sSrcDocx, sTemp); - nRes = m_oCDocxSerializer.saveToFile (sTo, sFrom, params.getXmlOptions(), sTemp) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; + // bool bRes = m_oCDocxSerializer.saveToFile (sResDoct, sSrcDocx, sTemp); + nRes = m_oCDocxSerializer.saveToFile(sTo, sFrom, params.getXmlOptions(), sTemp) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; } - return nRes; - } - // docxflat -> doct - _UINT32 docxflat2doct (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) - { - std::wstring sResultDoctDir = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); - std::wstring sResultDoctFileEditor = sResultDoctDir + FILE_SEPARATOR_STR + _T("Editor.bin"); + return nRes; + } + // docxflat -> doct + _UINT32 docxflat2doct(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) + { + std::wstring sResultDoctDir = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); + std::wstring sResultDoctFileEditor = sResultDoctDir + FILE_SEPARATOR_STR + _T("Editor.bin"); - NSDirectory::CreateDirectory(sResultDoctDir); + NSDirectory::CreateDirectory(sResultDoctDir); - _UINT32 nRes = docxflat2doct_bin(sFrom, sResultDoctFileEditor, sTemp, params); + _UINT32 nRes = docxflat2doct_bin(sFrom, sResultDoctFileEditor, sTemp, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultDoctDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; - } + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultDoctDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; + } - return nRes; - } - // docx -> doct - _UINT32 docx2doct (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) - { - // Extract docx to temp directory - std::wstring sResultDoctDir = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); - std::wstring sResultDoctFileEditor = sResultDoctDir + FILE_SEPARATOR_STR + _T("Editor.bin"); + return nRes; + } + // docx -> doct + _UINT32 docx2doct(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) + { + // Extract docx to temp directory + std::wstring sResultDoctDir = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); + std::wstring sResultDoctFileEditor = sResultDoctDir + FILE_SEPARATOR_STR + _T("Editor.bin"); - NSDirectory::CreateDirectory(sResultDoctDir); + NSDirectory::CreateDirectory(sResultDoctDir); - _UINT32 nRes = docx2doct_bin(sFrom, sResultDoctFileEditor, sTemp, params); + _UINT32 nRes = docx2doct_bin(sFrom, sResultDoctFileEditor, sTemp, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultDoctDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; - } + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultDoctDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; + } - return nRes; - } + return nRes; + } // docx_dir -> doct - _UINT32 docx_dir2doct(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params, const std::wstring &sDocxFile) + _UINT32 docx_dir2doct(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms, const std::wstring &sDocxFile) { // Extract docx to temp directory std::wstring sResultDoctDir = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); @@ -402,38 +407,42 @@ namespace NExtractTools return nRes; } // bin -> docx - _UINT32 doct_bin2docx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params) - { - std::wstring sResultDocxDir = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); - NSDirectory::CreateDirectory(sResultDocxDir); + _UINT32 doct_bin2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams ¶ms) + { + std::wstring sResultDocxDir = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); + NSDirectory::CreateDirectory(sResultDocxDir); _UINT32 nRes = doct_bin2docx_dir(sFrom, sTo, sResultDocxDir, sThemeDir, params); if (SUCCEEDED_X2T(nRes) && params.m_nFormatTo) { - if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM == *params.m_nFormatTo || - AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX == *params.m_nFormatTo || - AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM == *params.m_nFormatTo) + if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM == *params.m_nFormatTo || AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX == *params.m_nFormatTo || AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM == *params.m_nFormatTo) { std::wstring sCTFrom = _T("application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"); std::wstring sCTTo; - switch(*params.m_nFormatTo) + switch (*params.m_nFormatTo) { - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM: sCTTo = _T("application/vnd.ms-word.document.macroEnabled.main+xml");break; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX: sCTTo = _T("application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml");break; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM: sCTTo = _T("application/vnd.ms-word.template.macroEnabledTemplate.main+xml");break; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM: + sCTTo = _T("application/vnd.ms-word.document.macroEnabled.main+xml"); + break; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX: + sCTTo = _T("application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml"); + break; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM: + sCTTo = _T("application/vnd.ms-word.template.macroEnabledTemplate.main+xml"); + break; } nRes = replaceContentType(sResultDocxDir, sCTFrom, sCTTo); } else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM == *params.m_nFormatTo) { - //std::wstring sCT = L""; - //nRes = addContentType(sResultDocxDir, sCT); + // std::wstring sCT = L""; + // nRes = addContentType(sResultDocxDir, sCT); } else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF == *params.m_nFormatTo) { - //std::wstring sCT = L""; - //nRes = addContentType(sResultDocxDir, sCT); + // std::wstring sCT = L""; + // nRes = addContentType(sResultDocxDir, sCT); } } if (SUCCEEDED_X2T(nRes)) @@ -441,136 +450,135 @@ namespace NExtractTools nRes = dir2zipMscrypt(sResultDocxDir, sTo, sTemp, params); } - return nRes; - } - // bin -> docx dir - _UINT32 doct_bin2docx_dir (const std::wstring &sFrom, const std::wstring &sToResult, const std::wstring &sTo, const std::wstring &sThemeDir, InputParams& params) - { - _UINT32 nRes = 0; - std::wstring sTargetBin; + return nRes; + } + // bin -> docx dir + _UINT32 doct_bin2docx_dir(const std::wstring &sFrom, const std::wstring &sToResult, const std::wstring &sTo, const std::wstring &sThemeDir, InputParams ¶ms) + { + _UINT32 nRes = 0; + std::wstring sTargetBin; if (params.getFromChanges()) { params.setFromChanges(false); nRes = apply_changes(sFrom, sToResult, NSDoctRenderer::DoctRendererFormat::FormatFile::DOCT, sThemeDir, sTargetBin, params); } - else - sTargetBin = sFrom; + else + sTargetBin = sFrom; - BinDocxRW::CDocxSerializer m_oCDocxSerializer; + BinDocxRW::CDocxSerializer m_oCDocxSerializer; - m_oCDocxSerializer.setOFormEnabled(params.m_nFormatTo && ( *params.m_nFormatTo == AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM || - *params.m_nFormatTo == AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF)); + m_oCDocxSerializer.setOFormEnabled(params.m_nFormatTo && (*params.m_nFormatTo == AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM || *params.m_nFormatTo == AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF)); m_oCDocxSerializer.setMacroEnabled(params.m_bMacro); m_oCDocxSerializer.setIsNoBase64(params.getIsNoBase64()); m_oCDocxSerializer.setFontDir(params.getFontPath()); std::wstring sXmlOptions; - std::wstring sThemePath; // will be filled by 'CreateDocxFolders' method - std::wstring sMediaPath; // will be filled by 'CreateDocxFolders' method - std::wstring sEmbedPath; // will be filled by 'CreateDocxFolders' method + std::wstring sThemePath; // will be filled by 'CreateDocxFolders' method + std::wstring sMediaPath; // will be filled by 'CreateDocxFolders' method + std::wstring sEmbedPath; // will be filled by 'CreateDocxFolders' method - m_oCDocxSerializer.CreateDocxFolders (sTo, sThemePath, sMediaPath, sEmbedPath); + m_oCDocxSerializer.CreateDocxFolders(sTo, sThemePath, sMediaPath, sEmbedPath); - if (SUCCEEDED_X2T(nRes)) - { - nRes = m_oCDocxSerializer.loadFromFile (sTargetBin, sTo, sXmlOptions, sThemePath, sMediaPath, sEmbedPath) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; - } - //удаляем EditorWithChanges, потому что он не в Temp - if (sFrom != sTargetBin) - NSFile::CFileBinary::Remove(sTargetBin); - return nRes; - } + if (SUCCEEDED_X2T(nRes)) + { + nRes = m_oCDocxSerializer.loadFromFile(sTargetBin, sTo, sXmlOptions, sThemePath, sMediaPath, sEmbedPath) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; + } + // удаляем EditorWithChanges, потому что он не в Temp + if (sFrom != sTargetBin) + NSFile::CFileBinary::Remove(sTargetBin); + return nRes; + } - // doct -> docx - _UINT32 doct2docx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params) - { - // Extract docx to temp directory - std::wstring sTempUnpackedDOCT = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); - std::wstring sTempDoctFileEditor = sTempUnpackedDOCT + FILE_SEPARATOR_STR + _T("Editor.bin"); + // doct -> docx + _UINT32 doct2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams ¶ms) + { + // Extract docx to temp directory + std::wstring sTempUnpackedDOCT = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); + std::wstring sTempDoctFileEditor = sTempUnpackedDOCT + FILE_SEPARATOR_STR + _T("Editor.bin"); - NSDirectory::CreateDirectory(sTempUnpackedDOCT); + NSDirectory::CreateDirectory(sTempUnpackedDOCT); - // unzip doct to folder - COfficeUtils oCOfficeUtils(NULL); - if (S_OK != oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedDOCT, NULL, 0)) - return AVS_FILEUTILS_ERROR_CONVERT; + // unzip doct to folder + COfficeUtils oCOfficeUtils(NULL); + if (S_OK != oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedDOCT, NULL, 0)) + return AVS_FILEUTILS_ERROR_CONVERT; return doct_bin2docx(sTempDoctFileEditor, sTo, sTemp, sThemeDir, params); - } + } // dotx -> docx - _UINT32 dotx2docx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 dotx2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sTempUnpackedDOCX = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedDOCX); + std::wstring sTempUnpackedDOCX = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); + NSDirectory::CreateDirectory(sTempUnpackedDOCX); - _UINT32 nRes = dotx2docx_dir(sFrom, sTempUnpackedDOCX, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedDOCX, sTo, true)) - return 0; - } - return AVS_FILEUTILS_ERROR_CONVERT; + _UINT32 nRes = dotx2docx_dir(sFrom, sTempUnpackedDOCX, params); + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedDOCX, sTo, true)) + return 0; + } + return AVS_FILEUTILS_ERROR_CONVERT; } - _UINT32 dotx2docx_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params) - { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) - { - std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); - if (NSFile::CFileBinary::Exists(sContentTypesPath)) - { - std::wstring sData; - if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) - { - std::wstring sCTFrom = _T("application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml"); - std::wstring sCTTo = _T("application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"); - - sData = string_replaceAll(sData, sCTFrom, sCTTo); - - if (NSFile::CFileBinary::SaveToFile(sContentTypesPath, sData, true)) - { - return 0; - } - } - } - } - return AVS_FILEUTILS_ERROR_CONVERT; - } - // docm -> docx - _UINT32 docm2docx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) - { - std::wstring sTempUnpackedDOCX = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedDOCX); - - _UINT32 nRes = docm2docx_dir(sFrom, sTempUnpackedDOCX, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedDOCX, sTo, true)) - return 0; - } - return AVS_FILEUTILS_ERROR_CONVERT; - } - _UINT32 docm2docx_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params) + _UINT32 dotx2docx_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms) { COfficeUtils oCOfficeUtils(NULL); if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) { - std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); - if (NSFile::CFileBinary::Exists(sContentTypesPath)) - { - std::wstring sData; - if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) - { + std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); + if (NSFile::CFileBinary::Exists(sContentTypesPath)) + { + std::wstring sData; + if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) + { + std::wstring sCTFrom = _T("application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml"); + std::wstring sCTTo = _T("application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"); + + sData = string_replaceAll(sData, sCTFrom, sCTTo); + + if (NSFile::CFileBinary::SaveToFile(sContentTypesPath, sData, true)) + { + return 0; + } + } + } + } + return AVS_FILEUTILS_ERROR_CONVERT; + } + // docm -> docx + _UINT32 docm2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) + { + std::wstring sTempUnpackedDOCX = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); + NSDirectory::CreateDirectory(sTempUnpackedDOCX); + + _UINT32 nRes = docm2docx_dir(sFrom, sTempUnpackedDOCX, params); + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedDOCX, sTo, true)) + return 0; + } + return AVS_FILEUTILS_ERROR_CONVERT; + } + _UINT32 docm2docx_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms) + { + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) + { + std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); + if (NSFile::CFileBinary::Exists(sContentTypesPath)) + { + std::wstring sData; + if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) + { std::wstring sCTFrom = _T("application/vnd.ms-word.document.macroEnabled.main+xml"); std::wstring sCTTo = _T("application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"); sData = string_replaceAll(sData, sCTFrom, sCTTo); - sCTFrom = L""; + sCTFrom = L""; sData = string_replaceAll(sData, sCTFrom, L""); - sCTFrom = L""; + sCTFrom = L""; sData = string_replaceAll(sData, sCTFrom, L""); sCTFrom = L""; @@ -580,14 +588,14 @@ namespace NExtractTools { return AVS_FILEUTILS_ERROR_CONVERT; } - } + } } std::wstring sDocumentRelsPath = sTo + FILE_SEPARATOR_STR + L"word" + FILE_SEPARATOR_STR + L"_rels" + FILE_SEPARATOR_STR + L"document.xml.rels"; if (NSFile::CFileBinary::Exists(sDocumentRelsPath)) { - std::wstring sData; - if (NSFile::CFileBinary::ReadAllTextUtf8(sDocumentRelsPath, sData)) - { + std::wstring sData; + if (NSFile::CFileBinary::ReadAllTextUtf8(sDocumentRelsPath, sData)) + { size_t pos = sData.find(L"vbaProject.bin"); if (pos != std::wstring::npos) { @@ -603,7 +611,7 @@ namespace NExtractTools { return AVS_FILEUTILS_ERROR_CONVERT; } - } + } } std::wstring sVbaProjectPath = sTo + FILE_SEPARATOR_STR + L"word" + FILE_SEPARATOR_STR + L"vbaProject.bin"; NSFile::CFileBinary::Remove(sVbaProjectPath); @@ -613,43 +621,43 @@ namespace NExtractTools std::wstring sVbaDataPath = sTo + FILE_SEPARATOR_STR + L"word" + FILE_SEPARATOR_STR + L"vbaData.xml"; NSFile::CFileBinary::Remove(sVbaDataPath); - } - return 0; + } + return 0; } // dotm -> docx - _UINT32 dotm2docx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 dotm2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sTempUnpackedDOCX = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedDOCX); + std::wstring sTempUnpackedDOCX = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); + NSDirectory::CreateDirectory(sTempUnpackedDOCX); - _UINT32 nRes = dotm2docx_dir(sFrom, sTempUnpackedDOCX, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedDOCX, sTo, true)) - return 0; - } - return AVS_FILEUTILS_ERROR_CONVERT; + _UINT32 nRes = dotm2docx_dir(sFrom, sTempUnpackedDOCX, params); + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedDOCX, sTo, true)) + return 0; + } + return AVS_FILEUTILS_ERROR_CONVERT; } - _UINT32 dotm2docx_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params) + _UINT32 dotm2docx_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms) { COfficeUtils oCOfficeUtils(NULL); if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) { - std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); - if (NSFile::CFileBinary::Exists(sContentTypesPath)) - { - std::wstring sData; - if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) - { + std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); + if (NSFile::CFileBinary::Exists(sContentTypesPath)) + { + std::wstring sData; + if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) + { std::wstring sCTFrom = _T("application/vnd.ms-word.template.macroEnabledTemplate.main+xml"); std::wstring sCTTo = _T("application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"); sData = string_replaceAll(sData, sCTFrom, sCTTo); - sCTFrom = L""; + sCTFrom = L""; sData = string_replaceAll(sData, sCTFrom, L""); - sCTFrom = L""; + sCTFrom = L""; sData = string_replaceAll(sData, sCTFrom, L""); sCTFrom = L""; @@ -659,14 +667,14 @@ namespace NExtractTools { return AVS_FILEUTILS_ERROR_CONVERT; } - } + } } std::wstring sDocumentRelsPath = sTo + FILE_SEPARATOR_STR + L"word" + FILE_SEPARATOR_STR + L"_rels" + FILE_SEPARATOR_STR + L"document.xml.rels"; if (NSFile::CFileBinary::Exists(sDocumentRelsPath)) { - std::wstring sData; - if (NSFile::CFileBinary::ReadAllTextUtf8(sDocumentRelsPath, sData)) - { + std::wstring sData; + if (NSFile::CFileBinary::ReadAllTextUtf8(sDocumentRelsPath, sData)) + { size_t pos = sData.find(L"vbaProject.bin"); if (pos != std::wstring::npos) { @@ -682,7 +690,7 @@ namespace NExtractTools { return AVS_FILEUTILS_ERROR_CONVERT; } - } + } } std::wstring sVbaProjectPath = sTo + FILE_SEPARATOR_STR + L"word" + FILE_SEPARATOR_STR + L"vbaProject.bin"; NSFile::CFileBinary::Remove(sVbaProjectPath); @@ -692,61 +700,61 @@ namespace NExtractTools std::wstring sVbaDataPath = sTo + FILE_SEPARATOR_STR + L"word" + FILE_SEPARATOR_STR + L"vbaData.xml"; NSFile::CFileBinary::Remove(sVbaDataPath); - } - return 0; + } + return 0; } // dotm -> docm - _UINT32 dotm2docm (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 dotm2docm(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sTempUnpackedDOCM = sTemp + FILE_SEPARATOR_STR + _T("docm_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedDOCM); + std::wstring sTempUnpackedDOCM = sTemp + FILE_SEPARATOR_STR + _T("docm_unpacked"); + NSDirectory::CreateDirectory(sTempUnpackedDOCM); - _UINT32 nRes = dotm2docm_dir(sFrom, sTempUnpackedDOCM, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedDOCM, sTo, true)) - return 0; - } - return AVS_FILEUTILS_ERROR_CONVERT; - } - _UINT32 dotm2docm_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params) - { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) - { - std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); - if (NSFile::CFileBinary::Exists(sContentTypesPath)) - { - std::wstring sData; - if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) - { - std::wstring sCTFrom = _T("application/vnd.ms-word.template.macroEnabledTemplate.main+xml"); - std::wstring sCTTo = _T("application/vnd.ms-word.document.macroEnabled.main+xml"); - - sData = string_replaceAll(sData, sCTFrom, sCTTo); - - if (NSFile::CFileBinary::SaveToFile(sContentTypesPath, sData, true)) - { - return 0; - } - } - } - } - return AVS_FILEUTILS_ERROR_CONVERT; - } - // xslx -> bin - _UINT32 xlsx2xlst_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) - { - // Extract xlsx to temp directory - std::wstring sTempUnpackedXLSX = sTemp + FILE_SEPARATOR_STR + _T("xlsx_unpacked"); - - NSDirectory::CreateDirectory(sTempUnpackedXLSX); - - COfficeUtils oCOfficeUtils(NULL); - if (S_OK != oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedXLSX, NULL, 0)) + _UINT32 nRes = dotm2docm_dir(sFrom, sTempUnpackedDOCM, params); + if (SUCCEEDED_X2T(nRes)) { - //check crypt + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedDOCM, sTo, true)) + return 0; + } + return AVS_FILEUTILS_ERROR_CONVERT; + } + _UINT32 dotm2docm_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms) + { + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) + { + std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); + if (NSFile::CFileBinary::Exists(sContentTypesPath)) + { + std::wstring sData; + if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) + { + std::wstring sCTFrom = _T("application/vnd.ms-word.template.macroEnabledTemplate.main+xml"); + std::wstring sCTTo = _T("application/vnd.ms-word.document.macroEnabled.main+xml"); + + sData = string_replaceAll(sData, sCTFrom, sCTTo); + + if (NSFile::CFileBinary::SaveToFile(sContentTypesPath, sData, true)) + { + return 0; + } + } + } + } + return AVS_FILEUTILS_ERROR_CONVERT; + } + // xslx -> bin + _UINT32 xlsx2xlst_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) + { + // Extract xlsx to temp directory + std::wstring sTempUnpackedXLSX = sTemp + FILE_SEPARATOR_STR + _T("xlsx_unpacked"); + + NSDirectory::CreateDirectory(sTempUnpackedXLSX); + + COfficeUtils oCOfficeUtils(NULL); + if (S_OK != oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedXLSX, NULL, 0)) + { + // check crypt COfficeFileFormatChecker OfficeFileFormatChecker; if (OfficeFileFormatChecker.isOfficeFile(sFrom)) { @@ -756,7 +764,8 @@ namespace NExtractTools bool isOldPassword = params.hasPassword(); const std::wstring sOldPassword = params.getPassword(); - if (isOldPassword) delete params.m_sPassword; + if (isOldPassword) + delete params.m_sPassword; params.m_sPassword = new std::wstring(L"VelvetSweatshop"); _UINT32 nRes = mscrypt2oot_bin(sFrom, sTo, sTemp, params); @@ -781,26 +790,27 @@ namespace NExtractTools return AVS_FILEUTILS_ERROR_CONVERT; } } - else return AVS_FILEUTILS_ERROR_CONVERT; + else + return AVS_FILEUTILS_ERROR_CONVERT; } return xlsx_dir2xlst_bin(sTempUnpackedXLSX, sTo, params, true, sFrom); - } + } // xlsxflat -> bin - _UINT32 xlsxflat2xlst_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) - { + _UINT32 xlsxflat2xlst_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) + { std::wstring sToDir = NSDirectory::GetFolderPath(sTo); BinXlsxRW::CXlsxSerializer oCXlsxSerializer; oCXlsxSerializer.setIsNoBase64(params.getIsNoBase64()); - oCXlsxSerializer.setFontDir(params.getFontPath()); + oCXlsxSerializer.setFontDir(params.getFontPath()); - return oCXlsxSerializer.saveToFile (sTo, sFrom, params.getXmlOptions()); - } + return oCXlsxSerializer.saveToFile(sTo, sFrom, params.getXmlOptions()); + } - _UINT32 xlsx_dir2xlst_bin (const std::wstring &sXlsxDir, const std::wstring &sTo, InputParams& params, bool bXmlOptions, const std::wstring &sXlsxFile) - { + _UINT32 xlsx_dir2xlst_bin(const std::wstring &sXlsxDir, const std::wstring &sTo, InputParams ¶ms, bool bXmlOptions, const std::wstring &sXlsxFile) + { _UINT32 nRes = S_OK; std::wstring sToDir = NSDirectory::GetFolderPath(sTo); if (params.needConvertToOrigin(AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX) && !sXlsxFile.empty()) @@ -812,7 +822,7 @@ namespace NExtractTools BinXlsxRW::CXlsxSerializer oCXlsxSerializer; if (oCXlsxSerializer.hasPivot(sXlsxDir)) { - //save Editor.xlsx for pivot + // save Editor.xlsx for pivot nRes = CopyOOXOrigin(sToDir, sXlsxDir, L"Editor.xlsx", sXlsxFile); } @@ -820,12 +830,12 @@ namespace NExtractTools oCXlsxSerializer.setIsNoBase64(params.getIsNoBase64()); oCXlsxSerializer.setFontDir(params.getFontPath()); - nRes = oCXlsxSerializer.saveToFile (sTo, sXlsxDir, bXmlOptions ? params.getXmlOptions() : L""); + nRes = oCXlsxSerializer.saveToFile(sTo, sXlsxDir, bXmlOptions ? params.getXmlOptions() : L""); } return nRes; - } + } // xslx_dir -> xslt - _UINT32 xlsx_dir2xlst(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params, bool bXmlOptions, const std::wstring &sXlsxFile) + _UINT32 xlsx_dir2xlst(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms, bool bXmlOptions, const std::wstring &sXlsxFile) { // Extract xlsx to temp directory std::wstring sResultXlstDir = sTemp + FILE_SEPARATOR_STR + _T("xlst_unpacked"); @@ -841,26 +851,26 @@ namespace NExtractTools } return nRes; } - // xslx -> xslt - _UINT32 xlsx2xlst (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) - { - // Extract xlsx to temp directory - std::wstring sResultXlstDir = sTemp + FILE_SEPARATOR_STR + _T("xlst_unpacked"); - std::wstring sResultXlstFileEditor = sResultXlstDir + FILE_SEPARATOR_STR + _T("Editor.bin"); + // xslx -> xslt + _UINT32 xlsx2xlst(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) + { + // Extract xlsx to temp directory + std::wstring sResultXlstDir = sTemp + FILE_SEPARATOR_STR + _T("xlst_unpacked"); + std::wstring sResultXlstFileEditor = sResultXlstDir + FILE_SEPARATOR_STR + _T("Editor.bin"); - NSDirectory::CreateDirectory(sResultXlstDir); + NSDirectory::CreateDirectory(sResultXlstDir); _UINT32 nRes = xlsx2xlst_bin(sFrom, sResultXlstFileEditor, sTemp, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultXlstDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; - } + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultXlstDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; + } - return nRes; - } + return nRes; + } // xlsxflat -> xlsx - _UINT32 xlsxflat2xlsx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 xlsxflat2xlsx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { std::wstring sResultDocxDir = sTemp + FILE_SEPARATOR_STR + _T("xlsx_unpacked"); @@ -876,7 +886,7 @@ namespace NExtractTools return AVS_FILEUTILS_ERROR_CONVERT; } // xlsxflat -> xlsx dir - _UINT32 xlsxflat2xlsx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 xlsxflat2xlsx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { BinXlsxRW::CXlsxSerializer oCXlsxSerializer; @@ -888,43 +898,50 @@ namespace NExtractTools return nRes; } // xlsxflat -> xlst - _UINT32 xlsxflat2xlst (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) - { - std::wstring sResultXlstDir = sTemp + FILE_SEPARATOR_STR + _T("xlst_unpacked"); - std::wstring sResultXlstFileEditor = sResultXlstDir + FILE_SEPARATOR_STR + _T("Editor.bin"); + _UINT32 xlsxflat2xlst(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) + { + std::wstring sResultXlstDir = sTemp + FILE_SEPARATOR_STR + _T("xlst_unpacked"); + std::wstring sResultXlstFileEditor = sResultXlstDir + FILE_SEPARATOR_STR + _T("Editor.bin"); - NSDirectory::CreateDirectory(sResultXlstDir); + NSDirectory::CreateDirectory(sResultXlstDir); - _UINT32 nRes = xlsxflat2xlst_bin(sFrom, sResultXlstFileEditor, sTemp, params); + _UINT32 nRes = xlsxflat2xlst_bin(sFrom, sResultXlstFileEditor, sTemp, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultXlstDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; - } + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultXlstDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; + } - return nRes; - } - // bin -> xslx - _UINT32 xlst_bin2xlsx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params) - { - // Extract xlsx to temp directory - std::wstring sResultXlsxDir = sTemp + FILE_SEPARATOR_STR + _T("xlsx_unpacked"); - NSDirectory::CreateDirectory(sResultXlsxDir); + return nRes; + } + // bin -> xslx + _UINT32 xlst_bin2xlsx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams ¶ms) + { + // Extract xlsx to temp directory + std::wstring sResultXlsxDir = sTemp + FILE_SEPARATOR_STR + _T("xlsx_unpacked"); + NSDirectory::CreateDirectory(sResultXlsxDir); _UINT32 nRes = xlst_bin2xlsx_dir(sFrom, sTo, sResultXlsxDir, sThemeDir, params); if (SUCCEEDED_X2T(nRes) && params.m_nFormatTo) { - if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM == *params.m_nFormatTo || AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX == *params.m_nFormatTo || AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM == *params.m_nFormatTo) + if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM == *params.m_nFormatTo || AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX == *params.m_nFormatTo || + AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM == *params.m_nFormatTo) { std::wstring sCTFrom = _T("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"); std::wstring sCTTo; - switch(*params.m_nFormatTo) + switch (*params.m_nFormatTo) { - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM: sCTTo = _T("application/vnd.ms-excel.sheet.macroEnabled.main+xml");break; - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX: sCTTo = _T("application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml");break; - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM: sCTTo = _T("application/vnd.ms-excel.template.macroEnabled.main+xml");break; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM: + sCTTo = _T("application/vnd.ms-excel.sheet.macroEnabled.main+xml"); + break; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX: + sCTTo = _T("application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml"); + break; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM: + sCTTo = _T("application/vnd.ms-excel.template.macroEnabled.main+xml"); + break; } nRes = replaceContentType(sResultXlsxDir, sCTFrom, sCTTo); } @@ -933,128 +950,128 @@ namespace NExtractTools { nRes = dir2zipMscrypt(sResultXlsxDir, sTo, sTemp, params); } - return nRes; - } - _UINT32 xlst_bin2xlsx_dir (const std::wstring &sFrom, const std::wstring &sToResult, const std::wstring &sTo, const std::wstring &sThemeDir, InputParams& params) - { - _UINT32 nRes = 0; + return nRes; + } + _UINT32 xlst_bin2xlsx_dir(const std::wstring &sFrom, const std::wstring &sToResult, const std::wstring &sTo, const std::wstring &sThemeDir, InputParams ¶ms) + { + _UINT32 nRes = 0; - std::wstring sTargetBin; + std::wstring sTargetBin; if (params.getFromChanges()) { params.setFromChanges(false); nRes = apply_changes(sFrom, sToResult, NSDoctRenderer::DoctRendererFormat::FormatFile::XLST, sThemeDir, sTargetBin, params); } - else - sTargetBin = sFrom; + else + sTargetBin = sFrom; - BinXlsxRW::CXlsxSerializer oCXlsxSerializer; + BinXlsxRW::CXlsxSerializer oCXlsxSerializer; oCXlsxSerializer.setMacroEnabled(params.m_bMacro); oCXlsxSerializer.setIsNoBase64(params.getIsNoBase64()); oCXlsxSerializer.setFontDir(params.getFontPath()); - std::wstring sXmlOptions = _T(""); - std::wstring sMediaPath; // will be filled by 'CreateXlsxFolders' method - std::wstring sEmbedPath; // will be filled by 'CreateXlsxFolders' method + std::wstring sXmlOptions = _T(""); + std::wstring sMediaPath; // will be filled by 'CreateXlsxFolders' method + std::wstring sEmbedPath; // will be filled by 'CreateXlsxFolders' method - oCXlsxSerializer.CreateXlsxFolders (sXmlOptions, sTo, sMediaPath, sEmbedPath); + oCXlsxSerializer.CreateXlsxFolders(sXmlOptions, sTo, sMediaPath, sEmbedPath); - if (SUCCEEDED_X2T(nRes)) - { - nRes = oCXlsxSerializer.loadFromFile (sTargetBin, sTo, sXmlOptions, sMediaPath, sEmbedPath); - } - //удаляем EditorWithChanges, потому что он не в Temp - if (sFrom != sTargetBin) - NSFile::CFileBinary::Remove(sTargetBin); - return nRes; - } + if (SUCCEEDED_X2T(nRes)) + { + nRes = oCXlsxSerializer.loadFromFile(sTargetBin, sTo, sXmlOptions, sMediaPath, sEmbedPath); + } + // удаляем EditorWithChanges, потому что он не в Temp + if (sFrom != sTargetBin) + NSFile::CFileBinary::Remove(sTargetBin); + return nRes; + } - // xslt -> xslx - _UINT32 xlst2xlsx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params) - { - // Extract xlsx to temp directory - std::wstring sTempUnpackedXLST = sTemp + FILE_SEPARATOR_STR + _T("xlst_unpacked"); - std::wstring sTempXlstFileEditor = sTempUnpackedXLST + FILE_SEPARATOR_STR + _T("Editor.bin"); + // xslt -> xslx + _UINT32 xlst2xlsx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams ¶ms) + { + // Extract xlsx to temp directory + std::wstring sTempUnpackedXLST = sTemp + FILE_SEPARATOR_STR + _T("xlst_unpacked"); + std::wstring sTempXlstFileEditor = sTempUnpackedXLST + FILE_SEPARATOR_STR + _T("Editor.bin"); - NSDirectory::CreateDirectory(sTempUnpackedXLST); + NSDirectory::CreateDirectory(sTempUnpackedXLST); - // unzip xlst to folder - COfficeUtils oCOfficeUtils(NULL); - if (S_OK != oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedXLST, NULL, 0)) - return AVS_FILEUTILS_ERROR_CONVERT; + // unzip xlst to folder + COfficeUtils oCOfficeUtils(NULL); + if (S_OK != oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedXLST, NULL, 0)) + return AVS_FILEUTILS_ERROR_CONVERT; return xlst_bin2xlsx(sTempXlstFileEditor, sTo, sTemp, sThemeDir, params); - } - // xltx -> xlsx - _UINT32 xltx2xlsx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) - { - std::wstring sTempUnpackedXLSX = sTemp + FILE_SEPARATOR_STR + _T("xlsx_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedXLSX); - - _UINT32 nRes = xltx2xlsx_dir(sFrom, sTempUnpackedXLSX, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedXLSX, sTo, true)) - return 0; - } - return AVS_FILEUTILS_ERROR_CONVERT; } - _UINT32 xltx2xlsx_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params) + // xltx -> xlsx + _UINT32 xltx2xlsx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) - { - std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); - if (NSFile::CFileBinary::Exists(sContentTypesPath)) - { - std::wstring sData; - if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) - { - std::wstring sCTFrom = _T("application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml"); - std::wstring sCTTo = _T("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"); + std::wstring sTempUnpackedXLSX = sTemp + FILE_SEPARATOR_STR + _T("xlsx_unpacked"); + NSDirectory::CreateDirectory(sTempUnpackedXLSX); - sData = string_replaceAll(sData, sCTFrom, sCTTo); + _UINT32 nRes = xltx2xlsx_dir(sFrom, sTempUnpackedXLSX, params); + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedXLSX, sTo, true)) + return 0; + } + return AVS_FILEUTILS_ERROR_CONVERT; + } + _UINT32 xltx2xlsx_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms) + { + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) + { + std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); + if (NSFile::CFileBinary::Exists(sContentTypesPath)) + { + std::wstring sData; + if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) + { + std::wstring sCTFrom = _T("application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml"); + std::wstring sCTTo = _T("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"); - if (NSFile::CFileBinary::SaveToFile(sContentTypesPath, sData, true)) - { - return 0; - } - } - } - } - return AVS_FILEUTILS_ERROR_CONVERT; + sData = string_replaceAll(sData, sCTFrom, sCTTo); + + if (NSFile::CFileBinary::SaveToFile(sContentTypesPath, sData, true)) + { + return 0; + } + } + } + } + return AVS_FILEUTILS_ERROR_CONVERT; } // xlsm -> xlsx - _UINT32 xlsm2xlsx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 xlsm2xlsx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sTempUnpackedXLSX = sTemp + FILE_SEPARATOR_STR + _T("xlsx_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedXLSX); + std::wstring sTempUnpackedXLSX = sTemp + FILE_SEPARATOR_STR + _T("xlsx_unpacked"); + NSDirectory::CreateDirectory(sTempUnpackedXLSX); - _UINT32 nRes = xlsm2xlsx_dir(sFrom, sTempUnpackedXLSX, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedXLSX, sTo, true)) - return 0; - } - return AVS_FILEUTILS_ERROR_CONVERT; + _UINT32 nRes = xlsm2xlsx_dir(sFrom, sTempUnpackedXLSX, params); + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedXLSX, sTo, true)) + return 0; + } + return AVS_FILEUTILS_ERROR_CONVERT; } - _UINT32 xlsm2xlsx_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params) + _UINT32 xlsm2xlsx_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms) { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) - { - std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); - if (NSFile::CFileBinary::Exists(sContentTypesPath)) - { - std::wstring sData; - if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) - { - std::wstring sCTFrom = L"application/vnd.ms-excel.sheet.macroEnabled.main+xml"; - std::wstring sCTTo = L"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"; - sData = string_replaceAll(sData, sCTFrom, sCTTo); + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) + { + std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); + if (NSFile::CFileBinary::Exists(sContentTypesPath)) + { + std::wstring sData; + if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) + { + std::wstring sCTFrom = L"application/vnd.ms-excel.sheet.macroEnabled.main+xml"; + std::wstring sCTTo = L"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"; + sData = string_replaceAll(sData, sCTFrom, sCTTo); sCTFrom = L""; sData = string_replaceAll(sData, sCTFrom, L""); @@ -1062,18 +1079,18 @@ namespace NExtractTools sCTFrom = L""; sData = string_replaceAll(sData, sCTFrom, L""); - if (NSFile::CFileBinary::SaveToFile(sContentTypesPath, sData, true) == false) - { - return AVS_FILEUTILS_ERROR_CONVERT; - } + if (NSFile::CFileBinary::SaveToFile(sContentTypesPath, sData, true) == false) + { + return AVS_FILEUTILS_ERROR_CONVERT; + } } } std::wstring sWorkbookRelsPath = sTo + FILE_SEPARATOR_STR + L"xl" + FILE_SEPARATOR_STR + L"_rels" + FILE_SEPARATOR_STR + L"workbook.xml.rels"; if (NSFile::CFileBinary::Exists(sWorkbookRelsPath)) { - std::wstring sData; - if (NSFile::CFileBinary::ReadAllTextUtf8(sWorkbookRelsPath, sData)) - { + std::wstring sData; + if (NSFile::CFileBinary::ReadAllTextUtf8(sWorkbookRelsPath, sData)) + { size_t pos = sData.find(L"vbaProject.bin"); if (pos != std::wstring::npos) { @@ -1089,7 +1106,7 @@ namespace NExtractTools { return AVS_FILEUTILS_ERROR_CONVERT; } - } + } } std::wstring sVbaProjectPath = sTo + FILE_SEPARATOR_STR + L"xl" + FILE_SEPARATOR_STR + L"vbaProject.bin"; NSFile::CFileBinary::Remove(sVbaProjectPath); @@ -1097,21 +1114,21 @@ namespace NExtractTools return 0; } // xltm -> xlsx - _UINT32 xltm2xlsx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 xltm2xlsx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sTempUnpackedXLSX = sTemp + FILE_SEPARATOR_STR + _T("xlsx_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedXLSX); + std::wstring sTempUnpackedXLSX = sTemp + FILE_SEPARATOR_STR + _T("xlsx_unpacked"); + NSDirectory::CreateDirectory(sTempUnpackedXLSX); - _UINT32 nRes = xltm2xlsx_dir(sFrom, sTempUnpackedXLSX, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedXLSX, sTo, true)) - return 0; - } - return AVS_FILEUTILS_ERROR_CONVERT; + _UINT32 nRes = xltm2xlsx_dir(sFrom, sTempUnpackedXLSX, params); + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedXLSX, sTo, true)) + return 0; + } + return AVS_FILEUTILS_ERROR_CONVERT; } - _UINT32 xlsb2xlsx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 xlsb2xlsx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { std::wstring sTempUnpackedXLSB = sTemp + FILE_SEPARATOR_STR + _T("xlsb_unpacked"); NSDirectory::CreateDirectory(sTempUnpackedXLSB); @@ -1122,31 +1139,31 @@ namespace NExtractTools { OOX::Spreadsheet::CXlsb oXlsb; oXlsb.ReadNative(OOX::CPath(sTempUnpackedXLSB)); - oXlsb.PrepareSi(); - oXlsb.PrepareTableFormula(); + oXlsb.PrepareSi(); + oXlsb.PrepareTableFormula(); - OOX::CContentTypes oContentTypes; - oXlsb.SetPropForWriteSheet(sTo, oContentTypes); - oXlsb.ReadSheetData(); + OOX::CContentTypes oContentTypes; + oXlsb.SetPropForWriteSheet(sTo, oContentTypes); + oXlsb.ReadSheetData(); nRes = oXlsb.WriteNative(sTo, oContentTypes) ? S_OK : AVS_FILEUTILS_ERROR_CONVERT; } return nRes; } - _UINT32 xltm2xlsx_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params) + _UINT32 xltm2xlsx_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms) { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) - { - std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); - if (NSFile::CFileBinary::Exists(sContentTypesPath)) - { - std::wstring sData; - if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) - { - std::wstring sCTFrom = L"application/vnd.ms-excel.template.macroEnabled.main+xml"; - std::wstring sCTTo = L"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"; - sData = string_replaceAll(sData, sCTFrom, sCTTo); + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) + { + std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); + if (NSFile::CFileBinary::Exists(sContentTypesPath)) + { + std::wstring sData; + if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) + { + std::wstring sCTFrom = L"application/vnd.ms-excel.template.macroEnabled.main+xml"; + std::wstring sCTTo = L"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"; + sData = string_replaceAll(sData, sCTFrom, sCTTo); sCTFrom = L""; sData = string_replaceAll(sData, sCTFrom, L""); @@ -1154,18 +1171,18 @@ namespace NExtractTools sCTFrom = L""; sData = string_replaceAll(sData, sCTFrom, L""); - if (NSFile::CFileBinary::SaveToFile(sContentTypesPath, sData, true) == false) - { - return AVS_FILEUTILS_ERROR_CONVERT; - } + if (NSFile::CFileBinary::SaveToFile(sContentTypesPath, sData, true) == false) + { + return AVS_FILEUTILS_ERROR_CONVERT; + } } } std::wstring sWorkbookRelsPath = sTo + FILE_SEPARATOR_STR + L"xl" + FILE_SEPARATOR_STR + L"_rels" + FILE_SEPARATOR_STR + L"workbook.xml.rels"; if (NSFile::CFileBinary::Exists(sWorkbookRelsPath)) { - std::wstring sData; - if (NSFile::CFileBinary::ReadAllTextUtf8(sWorkbookRelsPath, sData)) - { + std::wstring sData; + if (NSFile::CFileBinary::ReadAllTextUtf8(sWorkbookRelsPath, sData)) + { size_t pos = sData.find(L"vbaProject.bin"); if (pos != std::wstring::npos) { @@ -1181,7 +1198,7 @@ namespace NExtractTools { return AVS_FILEUTILS_ERROR_CONVERT; } - } + } } std::wstring sVbaProjectPath = sTo + FILE_SEPARATOR_STR + L"xl" + FILE_SEPARATOR_STR + L"vbaProject.bin"; NSFile::CFileBinary::Remove(sVbaProjectPath); @@ -1189,58 +1206,58 @@ namespace NExtractTools return 0; } // xltm -> xlsm - _UINT32 xltm2xlsm (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 xltm2xlsm(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sTempUnpackedXLSM = sTemp + FILE_SEPARATOR_STR + _T("xlsm_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedXLSM); + std::wstring sTempUnpackedXLSM = sTemp + FILE_SEPARATOR_STR + _T("xlsm_unpacked"); + NSDirectory::CreateDirectory(sTempUnpackedXLSM); - _UINT32 nRes = xltm2xlsm_dir(sFrom, sTempUnpackedXLSM, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedXLSM, sTo, true)) - return 0; - } - return AVS_FILEUTILS_ERROR_CONVERT; + _UINT32 nRes = xltm2xlsm_dir(sFrom, sTempUnpackedXLSM, params); + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedXLSM, sTo, true)) + return 0; + } + return AVS_FILEUTILS_ERROR_CONVERT; } - _UINT32 xltm2xlsm_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params) + _UINT32 xltm2xlsm_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms) { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) - { - std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); - if (NSFile::CFileBinary::Exists(sContentTypesPath)) - { - std::wstring sData; - if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) - { - std::wstring sCTFrom = _T("application/vnd.ms-excel.template.macroEnabled.main+xml"); - std::wstring sCTTo = _T("application/vnd.ms-excel.sheet.macroEnabled.main+xml"); + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) + { + std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); + if (NSFile::CFileBinary::Exists(sContentTypesPath)) + { + std::wstring sData; + if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) + { + std::wstring sCTFrom = _T("application/vnd.ms-excel.template.macroEnabled.main+xml"); + std::wstring sCTTo = _T("application/vnd.ms-excel.sheet.macroEnabled.main+xml"); - sData = string_replaceAll(sData, sCTFrom, sCTTo); + sData = string_replaceAll(sData, sCTFrom, sCTTo); - if (NSFile::CFileBinary::SaveToFile(sContentTypesPath, sData, true)) - { - return 0; - } - } - } - } - return AVS_FILEUTILS_ERROR_CONVERT; + if (NSFile::CFileBinary::SaveToFile(sContentTypesPath, sData, true)) + { + return 0; + } + } + } + } + return AVS_FILEUTILS_ERROR_CONVERT; } - // pptx -> bin - _UINT32 pptx2pptt_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) - { - // unzip pptx to temp folder - std::wstring sTempUnpackedPPTX = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); + // pptx -> bin + _UINT32 pptx2pptt_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) + { + // unzip pptx to temp folder + std::wstring sTempUnpackedPPTX = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedPPTX); + NSDirectory::CreateDirectory(sTempUnpackedPPTX); - // unzip pptx to folder + // unzip pptx to folder COfficeUtils oCOfficeUtils(NULL); if (S_OK != oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedPPTX, NULL, 0)) { - //check crypt + // check crypt COfficeFileFormatChecker OfficeFileFormatChecker; if (OfficeFileFormatChecker.isOfficeFile(sFrom)) { @@ -1255,13 +1272,14 @@ namespace NExtractTools return AVS_FILEUTILS_ERROR_CONVERT; } } - else return AVS_FILEUTILS_ERROR_CONVERT; + else + return AVS_FILEUTILS_ERROR_CONVERT; } return pptx_dir2pptt_bin(sTempUnpackedPPTX, sTo, sTemp, params, sFrom); } - _UINT32 pptx_dir2pptt_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params, const std::wstring &sPptxFile) - { + _UINT32 pptx_dir2pptt_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms, const std::wstring &sPptxFile) + { _UINT32 nRes = 0; std::wstring sToDir = NSDirectory::GetFolderPath(sTo); if (params.needConvertToOrigin(AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX) && !sPptxFile.empty()) @@ -1277,16 +1295,16 @@ namespace NExtractTools { pptx_file->SetIsNoBase64(params.getIsNoBase64()); pptx_file->put_TempDirectory(sTemp); - pptx_file->SetFontDir (params.getFontPath()); - nRes = (S_OK == pptx_file->OpenFileToPPTY (sFrom, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; + pptx_file->SetFontDir(params.getFontPath()); + nRes = (S_OK == pptx_file->OpenFileToPPTY(sFrom, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; delete pptx_file; } } - return nRes; + return nRes; } // pptx_dir -> pptt - _UINT32 pptx_dir2pptt(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params, const std::wstring &sPptxFile) + _UINT32 pptx_dir2pptt(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms, const std::wstring &sPptxFile) { std::wstring sResultPpttDir = sTemp + FILE_SEPARATOR_STR + _T("pptt_unpacked"); std::wstring sTempPpttFileEditor = sResultPpttDir + FILE_SEPARATOR_STR + _T("Editor.bin"); @@ -1303,45 +1321,56 @@ namespace NExtractTools return nRes; } // pptx -> pptt - _UINT32 pptx2pptt (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) - { - std::wstring sResultPpttDir = sTemp + FILE_SEPARATOR_STR + _T("pptt_unpacked"); - std::wstring sTempPpttFileEditor = sResultPpttDir + FILE_SEPARATOR_STR + _T("Editor.bin"); + _UINT32 pptx2pptt(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) + { + std::wstring sResultPpttDir = sTemp + FILE_SEPARATOR_STR + _T("pptt_unpacked"); + std::wstring sTempPpttFileEditor = sResultPpttDir + FILE_SEPARATOR_STR + _T("Editor.bin"); - NSDirectory::CreateDirectory(sResultPpttDir); + NSDirectory::CreateDirectory(sResultPpttDir); - _UINT32 nRes = pptx2pptt_bin(sFrom, sTempPpttFileEditor, sTemp, params); - if (SUCCEEDED_X2T(nRes)) - { - // zip pptt folder to output file + _UINT32 nRes = pptx2pptt_bin(sFrom, sTempPpttFileEditor, sTemp, params); + if (SUCCEEDED_X2T(nRes)) + { + // zip pptt folder to output file COfficeUtils oCOfficeUtils(NULL); - nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory (sResultPpttDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; + nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultPpttDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; } - return nRes; - } + return nRes; + } - // bin -> pptx - _UINT32 pptt_bin2pptx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params) - { - std::wstring sResultPptxDir = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); - NSDirectory::CreateDirectory(sResultPptxDir); + // bin -> pptx + _UINT32 pptt_bin2pptx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams ¶ms) + { + std::wstring sResultPptxDir = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); + NSDirectory::CreateDirectory(sResultPptxDir); _UINT32 nRes = pptt_bin2pptx_dir(sFrom, sTo, sResultPptxDir, sThemeDir, params); if (SUCCEEDED_X2T(nRes) && params.m_nFormatTo) { - if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM == *params.m_nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX == *params.m_nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX == *params.m_nFormatTo || - AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM == *params.m_nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM == *params.m_nFormatTo) + if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM == *params.m_nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX == *params.m_nFormatTo || + AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX == *params.m_nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM == *params.m_nFormatTo || + AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM == *params.m_nFormatTo) { std::wstring sCTFrom = _T("application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml"); std::wstring sCTTo; - switch(*params.m_nFormatTo) + switch (*params.m_nFormatTo) { - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM: sCTTo = _T("application/vnd.ms-powerpoint.presentation.macroEnabled.main+xml");break; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX: sCTTo = _T("application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml");break; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX: sCTTo = _T("application/vnd.openxmlformats-officedocument.presentationml.template.main+xml");break; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM: sCTTo = _T("application/vnd.ms-powerpoint.template.macroEnabled.main+xml");break; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM: sCTTo = _T("application/vnd.ms-powerpoint.slideshow.macroEnabled.main+xml");break; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM: + sCTTo = _T("application/vnd.ms-powerpoint.presentation.macroEnabled.main+xml"); + break; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX: + sCTTo = _T("application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml"); + break; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX: + sCTTo = _T("application/vnd.openxmlformats-officedocument.presentationml.template.main+xml"); + break; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM: + sCTTo = _T("application/vnd.ms-powerpoint.template.macroEnabled.main+xml"); + break; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM: + sCTTo = _T("application/vnd.ms-powerpoint.slideshow.macroEnabled.main+xml"); + break; } nRes = replaceContentType(sResultPptxDir, sCTFrom, sCTTo); } @@ -1350,63 +1379,63 @@ namespace NExtractTools { nRes = dir2zipMscrypt(sResultPptxDir, sTo, sTemp, params); } - return nRes; + return nRes; } - _UINT32 pptt_bin2pptx_dir (const std::wstring &sFrom, const std::wstring &sToResult, const std::wstring &sTo, const std::wstring &sThemeDir, InputParams& params) - { - _UINT32 nRes = 0; + _UINT32 pptt_bin2pptx_dir(const std::wstring &sFrom, const std::wstring &sToResult, const std::wstring &sTo, const std::wstring &sThemeDir, InputParams ¶ms) + { + _UINT32 nRes = 0; - std::wstring sTargetBin; + std::wstring sTargetBin; if (params.getFromChanges()) { params.setFromChanges(false); nRes = apply_changes(sFrom, sToResult, NSDoctRenderer::DoctRendererFormat::FormatFile::PPTT, sThemeDir, sTargetBin, params); } - else - sTargetBin = sFrom; + else + sTargetBin = sFrom; - CPPTXFile *pptx_file = new CPPTXFile(); + CPPTXFile *pptx_file = new CPPTXFile(); - HRESULT hr = S_OK; + HRESULT hr = S_OK; - if (pptx_file) - { + if (pptx_file) + { pptx_file->SetMacroEnabled(params.m_bMacro); pptx_file->SetIsNoBase64(params.getIsNoBase64()); - pptx_file->SetFontDir(params.getFontPath()); - nRes = (S_OK == pptx_file->ConvertPPTYToPPTX(sTargetBin, sTo, sThemeDir)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; + pptx_file->SetFontDir(params.getFontPath()); + nRes = (S_OK == pptx_file->ConvertPPTYToPPTX(sTargetBin, sTo, sThemeDir)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; - delete pptx_file; - } - //удаляем EditorWithChanges, потому что он не в Temp - if (sFrom != sTargetBin) - NSFile::CFileBinary::Remove(sTargetBin); + delete pptx_file; + } + // удаляем EditorWithChanges, потому что он не в Temp + if (sFrom != sTargetBin) + NSFile::CFileBinary::Remove(sTargetBin); - return nRes; + return nRes; } // pptt -> pptx - _UINT32 pptt2pptx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params) - { - // unzip pptt to temp folder - std::wstring sTempUnpackedPPTT = sTemp + FILE_SEPARATOR_STR + _T("pptt_unpacked"); - std::wstring sTempPpttFileEditor = sTempUnpackedPPTT + FILE_SEPARATOR_STR + _T("Editor.bin"); + _UINT32 pptt2pptx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams ¶ms) + { + // unzip pptt to temp folder + std::wstring sTempUnpackedPPTT = sTemp + FILE_SEPARATOR_STR + _T("pptt_unpacked"); + std::wstring sTempPpttFileEditor = sTempUnpackedPPTT + FILE_SEPARATOR_STR + _T("Editor.bin"); - NSDirectory::CreateDirectory(sTempUnpackedPPTT); + NSDirectory::CreateDirectory(sTempUnpackedPPTT); - // unzip pptt to folder - COfficeUtils oCOfficeUtils(NULL); - if (S_OK != oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedPPTT, NULL, 0)) - return AVS_FILEUTILS_ERROR_CONVERT; + // unzip pptt to folder + COfficeUtils oCOfficeUtils(NULL); + if (S_OK != oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedPPTT, NULL, 0)) + return AVS_FILEUTILS_ERROR_CONVERT; return pptt_bin2pptx(sTempPpttFileEditor, sTo, sTemp, sThemeDir, params); - } - // zip dir - _UINT32 dir2zip (const std::wstring &sFrom, const std::wstring &sTo, bool bSorted, int method, short level, bool bDateTime) - { - COfficeUtils oCOfficeUtils(NULL); - return (S_OK == oCOfficeUtils.CompressFileOrDirectory(sFrom, sTo, bSorted, method, level, bDateTime)) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; - } - _UINT32 dir2zipMscrypt (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + } + // zip dir + _UINT32 dir2zip(const std::wstring &sFrom, const std::wstring &sTo, bool bSorted, int method, short level, bool bDateTime) + { + COfficeUtils oCOfficeUtils(NULL); + return (S_OK == oCOfficeUtils.CompressFileOrDirectory(sFrom, sTo, bSorted, method, level, bDateTime)) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; + } + _UINT32 dir2zipMscrypt(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { _UINT32 nRes = S_OK; if (params.hasSavePassword()) @@ -1425,44 +1454,45 @@ namespace NExtractTools return nRes; } - // unzip dir - _UINT32 zip2dir (const std::wstring &sFrom, const std::wstring &sTo) - { - COfficeUtils oCOfficeUtils(NULL); - return (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; - } + // unzip dir + _UINT32 zip2dir(const std::wstring &sFrom, const std::wstring &sTo) + { + COfficeUtils oCOfficeUtils(NULL); + return (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; + } - // csv -> xslt - _UINT32 csv2xlst (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) - { - std::wstring sCSV = sFrom; - std::wstring sResultXlstDir = sTemp + FILE_SEPARATOR_STR + _T("xlst_unpacked"); - std::wstring sResultXlstFileEditor = sResultXlstDir + FILE_SEPARATOR_STR + _T("Editor.bin"); + // csv -> xslt + _UINT32 csv2xlst(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) + { + std::wstring sCSV = sFrom; + std::wstring sResultXlstDir = sTemp + FILE_SEPARATOR_STR + _T("xlst_unpacked"); + std::wstring sResultXlstFileEditor = sResultXlstDir + FILE_SEPARATOR_STR + _T("Editor.bin"); - NSDirectory::CreateDirectory(sResultXlstDir); + NSDirectory::CreateDirectory(sResultXlstDir); - COfficeUtils oCOfficeUtils(NULL); - // Save to file (from temp dir) - BinXlsxRW::CXlsxSerializer oCXlsxSerializer; + COfficeUtils oCOfficeUtils(NULL); + // Save to file (from temp dir) + BinXlsxRW::CXlsxSerializer oCXlsxSerializer; oCXlsxSerializer.setIsNoBase64(params.getIsNoBase64()); - oCXlsxSerializer.setFontDir(params.getFontPath()); + oCXlsxSerializer.setFontDir(params.getFontPath()); - if (!params.m_nFormatFrom) params.m_nFormatFrom = new int(AVS_OFFICESTUDIO_FILE_UNKNOWN); + if (!params.m_nFormatFrom) + params.m_nFormatFrom = new int(AVS_OFFICESTUDIO_FILE_UNKNOWN); if (AVS_OFFICESTUDIO_FILE_UNKNOWN == *params.m_nFormatFrom) *params.m_nFormatFrom = AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV; - _UINT32 nRes = oCXlsxSerializer.saveToFile (sResultXlstFileEditor, sCSV, params.getXmlOptions()); + _UINT32 nRes = oCXlsxSerializer.saveToFile(sResultXlstFileEditor, sCSV, params.getXmlOptions()); - if (SUCCEEDED_X2T(nRes)) - { - nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultXlstDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; - } + if (SUCCEEDED_X2T(nRes)) + { + nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultXlstDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; + } - return nRes; - } -// csv -> xslx_dir - _UINT32 csv2xlsx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + return nRes; + } + // csv -> xslx_dir + _UINT32 csv2xlsx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { OOX::Spreadsheet::CXlsx oXlsx; @@ -1482,8 +1512,8 @@ namespace NExtractTools return nRes; } -//xml -> xlsx - _UINT32 xml2xlsx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + // xml -> xlsx + _UINT32 xml2xlsx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { std::wstring sResultXlsxDir = sTemp + FILE_SEPARATOR_STR + _T("xlsx_unpacked"); NSDirectory::CreateDirectory(sResultXlsxDir); @@ -1495,7 +1525,7 @@ namespace NExtractTools } return nRes; } - _UINT32 xml2xlsx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 xml2xlsx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { OOX::Spreadsheet::CXlsx oXlsx; @@ -1510,9 +1540,9 @@ namespace NExtractTools return nRes; } -// csv -> xslx - _UINT32 csv2xlsx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) - { + // csv -> xslx + _UINT32 csv2xlsx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) + { std::wstring sResultXlsxDir = sTemp + FILE_SEPARATOR_STR + _T("xlsx_unpacked"); NSDirectory::CreateDirectory(sResultXlsxDir); @@ -1522,46 +1552,46 @@ namespace NExtractTools nRes = dir2zipMscrypt(sResultXlsxDir, sTo, sTemp, params); } return nRes; - } - _UINT32 csv2xlst_bin (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params) - { - // Save to file (from temp dir) - BinXlsxRW::CXlsxSerializer oCXlsxSerializer; + } + _UINT32 csv2xlst_bin(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms) + { + // Save to file (from temp dir) + BinXlsxRW::CXlsxSerializer oCXlsxSerializer; oCXlsxSerializer.setIsNoBase64(params.getIsNoBase64()); - oCXlsxSerializer.setFontDir(params.getFontPath()); + oCXlsxSerializer.setFontDir(params.getFontPath()); - return oCXlsxSerializer.saveToFile(sTo, sFrom, params.getXmlOptions()); - } + return oCXlsxSerializer.saveToFile(sTo, sFrom, params.getXmlOptions()); + } // xlst -> csv - _UINT32 xlst2csv (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) - { - std::wstring sCSV = sTo; - std::wstring sTempUnpackedXLST = sTemp + FILE_SEPARATOR_STR + _T("xlst_unpacked"); - std::wstring sTempXlstFileEditor = sTempUnpackedXLST + FILE_SEPARATOR_STR + _T("Editor.bin"); + _UINT32 xlst2csv(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) + { + std::wstring sCSV = sTo; + std::wstring sTempUnpackedXLST = sTemp + FILE_SEPARATOR_STR + _T("xlst_unpacked"); + std::wstring sTempXlstFileEditor = sTempUnpackedXLST + FILE_SEPARATOR_STR + _T("Editor.bin"); - NSDirectory::CreateDirectory(sTempUnpackedXLST); + NSDirectory::CreateDirectory(sTempUnpackedXLST); - // unzip xlst to folder - COfficeUtils oCOfficeUtils(NULL); - if (S_OK != oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedXLST, NULL, 0)) - return AVS_FILEUTILS_ERROR_CONVERT; + // unzip xlst to folder + COfficeUtils oCOfficeUtils(NULL); + if (S_OK != oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedXLST, NULL, 0)) + return AVS_FILEUTILS_ERROR_CONVERT; - BinXlsxRW::CXlsxSerializer oCXlsxSerializer; + BinXlsxRW::CXlsxSerializer oCXlsxSerializer; oCXlsxSerializer.setIsNoBase64(params.getIsNoBase64()); - oCXlsxSerializer.setFontDir(params.getFontPath()); + oCXlsxSerializer.setFontDir(params.getFontPath()); oCXlsxSerializer.setTempDir(sTemp); - std::wstring sMediaPath; - std::wstring sEmbedPath; + std::wstring sMediaPath; + std::wstring sEmbedPath; params.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV); - return oCXlsxSerializer.loadFromFile (sTempXlstFileEditor, sCSV, params.getXmlOptions(), sMediaPath, sEmbedPath); - } + return oCXlsxSerializer.loadFromFile(sTempXlstFileEditor, sCSV, params.getXmlOptions(), sMediaPath, sEmbedPath); + } // xlsx_dir -> csv - _UINT32 xlsx_dir2csv(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 xlsx_dir2csv(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { std::wstring sResultXlstDir = sTemp + FILE_SEPARATOR_STR + _T("xlst_unpacked"); std::wstring sResultXlstFileEditor = sResultXlstDir + FILE_SEPARATOR_STR + _T("Editor.bin"); @@ -1588,7 +1618,7 @@ namespace NExtractTools return nRes; } // xslx -> csv - _UINT32 xlsx2csv(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 xlsx2csv(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { std::wstring sTempUnpackedXLSX = sTemp + FILE_SEPARATOR_STR + _T("xlsx_unpacked"); NSDirectory::CreateDirectory(sTempUnpackedXLSX); @@ -1599,50 +1629,50 @@ namespace NExtractTools return xlsx_dir2csv(sTempUnpackedXLSX, sTo, sTemp, params); } - _UINT32 xlst_bin2csv (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params) + _UINT32 xlst_bin2csv(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams ¶ms) { - _UINT32 nRes = 0; + _UINT32 nRes = 0; - std::wstring sTargetBin; - if (params.getFromChanges()) - { - params.setFromChanges(false); - nRes = apply_changes(sFrom, sTo, NSDoctRenderer::DoctRendererFormat::FormatFile::XLST, sThemeDir, sTargetBin, params); - } - else - sTargetBin = sFrom; + std::wstring sTargetBin; + if (params.getFromChanges()) + { + params.setFromChanges(false); + nRes = apply_changes(sFrom, sTo, NSDoctRenderer::DoctRendererFormat::FormatFile::XLST, sThemeDir, sTargetBin, params); + } + else + sTargetBin = sFrom; - if (SUCCEEDED_X2T(nRes)) - { - //todo сделать отдельный метод для сохранения в csv - // Save to file (from temp dir) - BinXlsxRW::CXlsxSerializer oCXlsxSerializer; + if (SUCCEEDED_X2T(nRes)) + { + // todo сделать отдельный метод для сохранения в csv + // Save to file (from temp dir) + BinXlsxRW::CXlsxSerializer oCXlsxSerializer; - oCXlsxSerializer.setIsNoBase64(params.getIsNoBase64()); - oCXlsxSerializer.setFontDir(params.getFontPath()); + oCXlsxSerializer.setIsNoBase64(params.getIsNoBase64()); + oCXlsxSerializer.setFontDir(params.getFontPath()); - std::wstring sToTemp = sTemp + FILE_SEPARATOR_STR + _T("output.csv"); - std::wstring sMediaPath; // will be filled by 'CreateXlsxFolders' method - std::wstring sEmbedPath; // will be filled by 'CreateXlsxFolders' method - std::wstring sXmlOptions = params.getXmlOptions(); + std::wstring sToTemp = sTemp + FILE_SEPARATOR_STR + _T("output.csv"); + std::wstring sMediaPath; // will be filled by 'CreateXlsxFolders' method + std::wstring sEmbedPath; // will be filled by 'CreateXlsxFolders' method + std::wstring sXmlOptions = params.getXmlOptions(); - oCXlsxSerializer.CreateXlsxFolders (sXmlOptions, sTemp, sMediaPath, sEmbedPath); + oCXlsxSerializer.CreateXlsxFolders(sXmlOptions, sTemp, sMediaPath, sEmbedPath); - nRes = oCXlsxSerializer.loadFromFile(sTargetBin, sToTemp, sXmlOptions, sMediaPath, sEmbedPath); + nRes = oCXlsxSerializer.loadFromFile(sTargetBin, sToTemp, sXmlOptions, sMediaPath, sEmbedPath); - //пишем в Temp и копируем, чтобы не возникало лишних файлов рядом с sTo, а лучше перейти на отдельный метод - if (SUCCEEDED_X2T(nRes)) - { - nRes = NSFile::CFileBinary::Copy(sToTemp, sTo) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; - } - } - return nRes; - } + // пишем в Temp и копируем, чтобы не возникало лишних файлов рядом с sTo, а лучше перейти на отдельный метод + if (SUCCEEDED_X2T(nRes)) + { + nRes = NSFile::CFileBinary::Copy(sToTemp, sTo) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; + } + } + return nRes; + } // bin -> pdf - _UINT32 bin2pdf (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, bool bPaid, const std::wstring &sThemeDir, InputParams& params) + _UINT32 bin2pdf(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, bool bPaid, const std::wstring &sThemeDir, InputParams ¶ms) { - NSFonts::IApplicationFonts* pApplicationFonts = NSFonts::NSApplication::Create(); - initApplicationFonts(pApplicationFonts, params); + NSFonts::IApplicationFonts *pApplicationFonts = NSFonts::NSApplication::Create(); + initApplicationFonts(pApplicationFonts, params); CPdfFile pdfWriter(pApplicationFonts); pdfWriter.CreatePdf(params.getIsPDFA()); @@ -1661,7 +1691,7 @@ namespace NExtractTools pdfWriter.SetPassword(password); int nReg = (bPaid == false) ? 0 : 1; - _UINT32 nRet = 0; + _UINT32 nRet = 0; if (params.getIsNoBase64()) { nRet = S_OK == pdfWriter.OnlineWordToPdfFromBinary(sFrom, sTo, &oBufferParams) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; @@ -1670,42 +1700,44 @@ namespace NExtractTools { nRet = S_OK == pdfWriter.OnlineWordToPdf(sFrom, sTo, &oBufferParams) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; } - RELEASEOBJECT(pApplicationFonts); - return nRet; + RELEASEOBJECT(pApplicationFonts); + return nRet; } - _UINT32 bin2image (const std::wstring &sTFileDir, BYTE* pBuffer, LONG lBufferLen, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params, const std::wstring& sDocxDir = L"") + _UINT32 bin2image( + const std::wstring &sTFileDir, BYTE *pBuffer, LONG lBufferLen, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams ¶ms, + const std::wstring &sDocxDir = L"") { _UINT32 nRes = 0; - NSFonts::IApplicationFonts* pApplicationFonts = NSFonts::NSApplication::Create(); - initApplicationFonts(pApplicationFonts, params); + NSFonts::IApplicationFonts *pApplicationFonts = NSFonts::NSApplication::Create(); + initApplicationFonts(pApplicationFonts, params); NSOnlineOfficeBinToPdf::CMetafileToRenderterRaster imageWriter(NULL); imageWriter.SetMediaDirectory(sTFileDir); imageWriter.SetThemesDirectory(sThemeDir); imageWriter.SetInternalMediaDirectory(sDocxDir); imageWriter.SetTempDirectory(sTemp); - imageWriter.SetApplication(pApplicationFonts); + imageWriter.SetApplication(pApplicationFonts); if (NULL != params.m_oThumbnail) { - InputParamsThumbnail* oThumbnail = params.m_oThumbnail; + InputParamsThumbnail *oThumbnail = params.m_oThumbnail; if (NULL != oThumbnail->format) { - imageWriter.SetRasterFormat(*oThumbnail->format); + imageWriter.SetRasterFormat(*oThumbnail->format); } if (NULL != oThumbnail->aspect) { - imageWriter.SetSaveType(*oThumbnail->aspect); + imageWriter.SetSaveType(*oThumbnail->aspect); } if (NULL != oThumbnail->first) { - imageWriter.SetIsOnlyFirst(*oThumbnail->first); + imageWriter.SetIsOnlyFirst(*oThumbnail->first); } if (NULL != oThumbnail->width) { - imageWriter.SetRasterW(*oThumbnail->width); + imageWriter.SetRasterW(*oThumbnail->width); } if (NULL != oThumbnail->height) { - imageWriter.SetRasterH(*oThumbnail->height); + imageWriter.SetRasterH(*oThumbnail->height); } } std::wstring sThumbnailDir; @@ -1738,7 +1770,7 @@ namespace NExtractTools RELEASEOBJECT(pApplicationFonts); return nRes; } - _UINT32 bin2imageBase64 (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params, const std::wstring& sDocxDir = L"") + _UINT32 bin2imageBase64(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams ¶ms, const std::wstring &sDocxDir = L"") { _UINT32 nRes = 0; NSFile::CFileBinary oFile; @@ -1746,7 +1778,7 @@ namespace NExtractTools return AVS_FILEUTILS_ERROR_CONVERT; DWORD dwFileSize = oFile.GetFileSize(); - BYTE* pFileContent = new BYTE[dwFileSize]; + BYTE *pFileContent = new BYTE[dwFileSize]; if (!pFileContent) { oFile.CloseFile(); @@ -1757,15 +1789,15 @@ namespace NExtractTools oFile.ReadFile(pFileContent, dwFileSize, dwReaded); oFile.CloseFile(); - int nBufferLen = NSBase64::Base64DecodeGetRequiredLength(dwFileSize); - BYTE* pBuffer = new BYTE[nBufferLen]; + int nBufferLen = NSBase64::Base64DecodeGetRequiredLength(dwFileSize); + BYTE *pBuffer = new BYTE[nBufferLen]; if (!pBuffer) { RELEASEARRAYOBJECTS(pFileContent); return AVS_FILEUTILS_ERROR_CONVERT; } - if (NSBase64::Base64Decode((const char*)pFileContent, dwFileSize, pBuffer, &nBufferLen)) + if (NSBase64::Base64Decode((const char *)pFileContent, dwFileSize, pBuffer, &nBufferLen)) { std::wstring sTFileDir = NSDirectory::GetFolderPath(sFrom); nRes = bin2image(sTFileDir, pBuffer, nBufferLen, sTo, sTemp, sThemeDir, params, sDocxDir); @@ -1781,13 +1813,15 @@ namespace NExtractTools return nRes; } // doct_bin -> epub - _UINT32 doct_bin2epub(NSDoctRenderer::DoctRendererFormat::FormatFile eFromType, const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params, const std::wstring& sDocxDir = L"") + _UINT32 doct_bin2epub( + NSDoctRenderer::DoctRendererFormat::FormatFile eFromType, const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams ¶ms, + const std::wstring &sDocxDir = L"") { _UINT32 nRes = 0; NSDoctRenderer::DoctRendererFormat::FormatFile eToType = NSDoctRenderer::DoctRendererFormat::FormatFile::HTML; std::wstring sFileFromDir = NSDirectory::GetFolderPath(sFrom); std::wstring sImagesDirectory = sFileFromDir + FILE_SEPARATOR_STR + L"media"; - std::wstring sHtmlFile = sTemp + FILE_SEPARATOR_STR + L"index.html"; + std::wstring sHtmlFile = sTemp + FILE_SEPARATOR_STR + L"index.html"; if (!NSDirectory::Exists(sImagesDirectory)) NSDirectory::CreateDirectory(sImagesDirectory); NSDoctRenderer::CDoctrenderer oDoctRenderer(NULL != params.m_sAllFontsPath ? *params.m_sAllFontsPath : L""); @@ -1811,13 +1845,15 @@ namespace NExtractTools return nRes; } // doct_bin -> fb2 - _UINT32 doct_bin2fb(NSDoctRenderer::DoctRendererFormat::FormatFile eFromType, const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params, const std::wstring& sDocxDir = L"") + _UINT32 doct_bin2fb( + NSDoctRenderer::DoctRendererFormat::FormatFile eFromType, const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams ¶ms, + const std::wstring &sDocxDir = L"") { _UINT32 nRes = 0; NSDoctRenderer::DoctRendererFormat::FormatFile eToType = NSDoctRenderer::DoctRendererFormat::FormatFile::HTML; std::wstring sFileFromDir = NSDirectory::GetFolderPath(sFrom); std::wstring sImagesDirectory = sFileFromDir + FILE_SEPARATOR_STR + L"media"; - std::wstring sHtmlFile = sTemp + FILE_SEPARATOR_STR + L"index.html"; + std::wstring sHtmlFile = sTemp + FILE_SEPARATOR_STR + L"index.html"; if (!NSDirectory::Exists(sImagesDirectory)) NSDirectory::CreateDirectory(sImagesDirectory); NSDoctRenderer::CDoctrenderer oDoctRenderer(NULL != params.m_sAllFontsPath ? *params.m_sAllFontsPath : L""); @@ -1839,13 +1875,15 @@ namespace NExtractTools return nRes; } // doct_bin -> html - _UINT32 doct_bin2html(NSDoctRenderer::DoctRendererFormat::FormatFile eFromType, const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, bool bPaid, const std::wstring &sThemeDir, InputParams& params, const std::wstring& sDocxDir = L"") + _UINT32 doct_bin2html( + NSDoctRenderer::DoctRendererFormat::FormatFile eFromType, const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, bool bPaid, const std::wstring &sThemeDir, + InputParams ¶ms, const std::wstring &sDocxDir = L"") { _UINT32 nRes = 0; NSDoctRenderer::DoctRendererFormat::FormatFile eToType = NSDoctRenderer::DoctRendererFormat::FormatFile::HTML; std::wstring sFileFromDir = NSDirectory::GetFolderPath(sFrom); std::wstring sImagesDirectory = sFileFromDir + FILE_SEPARATOR_STR + L"media"; - std::wstring sHtmlFile = sTemp + FILE_SEPARATOR_STR + L"index.html"; + std::wstring sHtmlFile = sTemp + FILE_SEPARATOR_STR + L"index.html"; if (!NSDirectory::Exists(sImagesDirectory)) NSDirectory::CreateDirectory(sImagesDirectory); NSDoctRenderer::CDoctrenderer oDoctRenderer(NULL != params.m_sAllFontsPath ? *params.m_sAllFontsPath : L""); @@ -1862,13 +1900,15 @@ namespace NExtractTools return nRes; } // doct_bin -> html_zip - _UINT32 doct_bin2html_zip(NSDoctRenderer::DoctRendererFormat::FormatFile eFromType, const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, bool bPaid, const std::wstring &sThemeDir, InputParams& params, const std::wstring& sDocxDir = L"") + _UINT32 doct_bin2html_zip( + NSDoctRenderer::DoctRendererFormat::FormatFile eFromType, const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, bool bPaid, const std::wstring &sThemeDir, + InputParams ¶ms, const std::wstring &sDocxDir = L"") { _UINT32 nRes = 0; NSDoctRenderer::DoctRendererFormat::FormatFile eToType = NSDoctRenderer::DoctRendererFormat::FormatFile::HTML; std::wstring sFileFromDir = NSDirectory::GetFolderPath(sFrom); std::wstring sImagesDirectory = sFileFromDir + FILE_SEPARATOR_STR + L"media"; - std::wstring sHtmlFile = sTemp + FILE_SEPARATOR_STR + L"index.html"; + std::wstring sHtmlFile = sTemp + FILE_SEPARATOR_STR + L"index.html"; if (!NSDirectory::Exists(sImagesDirectory)) NSDirectory::CreateDirectory(sImagesDirectory); NSDoctRenderer::CDoctrenderer oDoctRenderer(NULL != params.m_sAllFontsPath ? *params.m_sAllFontsPath : L""); @@ -1889,7 +1929,9 @@ namespace NExtractTools return nRes; } // doct_bin -> pdf - _UINT32 doct_bin2pdf(NSDoctRenderer::DoctRendererFormat::FormatFile eFromType, const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, bool bPaid, const std::wstring &sThemeDir, InputParams& params, const std::wstring& sDocxDir = L"") + _UINT32 doct_bin2pdf( + NSDoctRenderer::DoctRendererFormat::FormatFile eFromType, const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, bool bPaid, const std::wstring &sThemeDir, + InputParams ¶ms, const std::wstring &sDocxDir = L"") { _UINT32 nRes = 0; NSDoctRenderer::DoctRendererFormat::FormatFile eToType = NSDoctRenderer::DoctRendererFormat::FormatFile::PDF; @@ -1907,7 +1949,7 @@ namespace NExtractTools } else { - NSFonts::IApplicationFonts* pApplicationFonts = NSFonts::NSApplication::Create(); + NSFonts::IApplicationFonts *pApplicationFonts = NSFonts::NSApplication::Create(); initApplicationFonts(pApplicationFonts, params); CPdfFile pdfWriter(pApplicationFonts); @@ -1931,13 +1973,15 @@ namespace NExtractTools nRes = (S_OK == pdfWriter.OnlineWordToPdfFromBinary(sPdfBinFile, sTo, &oBufferParams)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; RELEASEOBJECT(pApplicationFonts); } - //удаляем sPdfBinFile, потому что он не в Temp + // удаляем sPdfBinFile, потому что он не в Temp if (NSFile::CFileBinary::Exists(sPdfBinFile)) NSFile::CFileBinary::Remove(sPdfBinFile); return nRes; } // doct_bin -> image - _UINT32 doct_bin2image(NSDoctRenderer::DoctRendererFormat::FormatFile eFromType, const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, bool bPaid, const std::wstring &sThemeDir, InputParams& params, const std::wstring& sDocxDir = L"") + _UINT32 doct_bin2image( + NSDoctRenderer::DoctRendererFormat::FormatFile eFromType, const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, bool bPaid, const std::wstring &sThemeDir, + InputParams ¶ms, const std::wstring &sDocxDir = L"") { _UINT32 nRes = 0; NSDoctRenderer::DoctRendererFormat::FormatFile eToType = NSDoctRenderer::DoctRendererFormat::FormatFile::IMAGE; @@ -1955,95 +1999,95 @@ namespace NExtractTools } else { - BYTE* pData = NULL; + BYTE *pData = NULL; DWORD nBytesCount; if (NSFile::CFileBinary::ReadAllBytes(sPdfBinFile, &pData, nBytesCount)) { nRes = 0 == bin2image(sTFileDir, pData, nBytesCount, sTo, sTemp, sThemeDir, params, sDocxDir) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; RELEASEARRAYOBJECTS(pData); - } + } else { nRes = AVS_FILEUTILS_ERROR_CONVERT; } - } - //delete sPdfBinFile, because it is not in Temp + } + // delete sPdfBinFile, because it is not in Temp if (NSFile::CFileBinary::Exists(sPdfBinFile)) NSFile::CFileBinary::Remove(sPdfBinFile); return nRes; } // ppsx -> pptx - _UINT32 ppsx2pptx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 ppsx2pptx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sTempUnpackedPPTX = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedPPTX); + std::wstring sTempUnpackedPPTX = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); + NSDirectory::CreateDirectory(sTempUnpackedPPTX); - _UINT32 nRes = ppsx2pptx_dir(sFrom, sTempUnpackedPPTX, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedPPTX, sTo, true)) - return 0; - } - return AVS_FILEUTILS_ERROR_CONVERT; + _UINT32 nRes = ppsx2pptx_dir(sFrom, sTempUnpackedPPTX, params); + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedPPTX, sTo, true)) + return 0; + } + return AVS_FILEUTILS_ERROR_CONVERT; } - _UINT32 ppsx2pptx_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params) + _UINT32 ppsx2pptx_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms) { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) - { - std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); - if (NSFile::CFileBinary::Exists(sContentTypesPath)) - { - std::wstring sData; - if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) - { - std::wstring sCTFrom = _T("application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml"); - std::wstring sCTTo = _T("application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml"); + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) + { + std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); + if (NSFile::CFileBinary::Exists(sContentTypesPath)) + { + std::wstring sData; + if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) + { + std::wstring sCTFrom = _T("application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml"); + std::wstring sCTTo = _T("application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml"); - sData = string_replaceAll(sData, sCTFrom, sCTTo); + sData = string_replaceAll(sData, sCTFrom, sCTTo); - if (NSFile::CFileBinary::SaveToFile(sContentTypesPath, sData, true)) - { - return 0; - } - } - } - } - return AVS_FILEUTILS_ERROR_CONVERT; - } + if (NSFile::CFileBinary::SaveToFile(sContentTypesPath, sData, true)) + { + return 0; + } + } + } + } + return AVS_FILEUTILS_ERROR_CONVERT; + } // pptm -> pptx - _UINT32 pptm2pptx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 pptm2pptx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sTempUnpackedPPTX = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedPPTX); + std::wstring sTempUnpackedPPTX = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); + NSDirectory::CreateDirectory(sTempUnpackedPPTX); - _UINT32 nRes = pptm2pptx_dir(sFrom, sTempUnpackedPPTX, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedPPTX, sTo, true)) - return 0; - } - return AVS_FILEUTILS_ERROR_CONVERT; + _UINT32 nRes = pptm2pptx_dir(sFrom, sTempUnpackedPPTX, params); + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedPPTX, sTo, true)) + return 0; + } + return AVS_FILEUTILS_ERROR_CONVERT; } - _UINT32 pptm2pptx_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params) + _UINT32 pptm2pptx_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms) { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) - { - std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); - if (NSFile::CFileBinary::Exists(sContentTypesPath)) - { - std::wstring sData; - if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) - { - std::wstring sCTFrom = _T("application/vnd.ms-powerpoint.presentation.macroEnabled.main+xml"); - std::wstring sCTTo = _T("application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml"); - sData = string_replaceAll(sData, sCTFrom, sCTTo); + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) + { + std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); + if (NSFile::CFileBinary::Exists(sContentTypesPath)) + { + std::wstring sData; + if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) + { + std::wstring sCTFrom = _T("application/vnd.ms-powerpoint.presentation.macroEnabled.main+xml"); + std::wstring sCTTo = _T("application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml"); + sData = string_replaceAll(sData, sCTFrom, sCTTo); - sCTFrom = L""; + sCTFrom = L""; sData = string_replaceAll(sData, sCTFrom, L""); sCTFrom = L""; @@ -2058,9 +2102,9 @@ namespace NExtractTools std::wstring sPresentationRelsPath = sTo + FILE_SEPARATOR_STR + L"ppt" + FILE_SEPARATOR_STR + L"_rels" + FILE_SEPARATOR_STR + L"presentation.xml.rels"; if (NSFile::CFileBinary::Exists(sPresentationRelsPath)) { - std::wstring sData; - if (NSFile::CFileBinary::ReadAllTextUtf8(sPresentationRelsPath, sData)) - { + std::wstring sData; + if (NSFile::CFileBinary::ReadAllTextUtf8(sPresentationRelsPath, sData)) + { size_t pos = sData.find(L"vbaProject.bin"); if (pos != std::wstring::npos) { @@ -2076,45 +2120,44 @@ namespace NExtractTools { return AVS_FILEUTILS_ERROR_CONVERT; } - } + } } std::wstring sVbaProjectPath = sTo + FILE_SEPARATOR_STR + L"ppt" + FILE_SEPARATOR_STR + L"vbaProject.bin"; NSFile::CFileBinary::Remove(sVbaProjectPath); - - } - return 0; - } + } + return 0; + } // potm -> pptx - _UINT32 potm2pptx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 potm2pptx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sTempUnpackedPPTX = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedPPTX); + std::wstring sTempUnpackedPPTX = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); + NSDirectory::CreateDirectory(sTempUnpackedPPTX); - _UINT32 nRes = potm2pptx_dir(sFrom, sTempUnpackedPPTX, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedPPTX, sTo, true)) - return 0; - } - return AVS_FILEUTILS_ERROR_CONVERT; + _UINT32 nRes = potm2pptx_dir(sFrom, sTempUnpackedPPTX, params); + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedPPTX, sTo, true)) + return 0; + } + return AVS_FILEUTILS_ERROR_CONVERT; } - _UINT32 potm2pptx_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params) + _UINT32 potm2pptx_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms) { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) - { - std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); - if (NSFile::CFileBinary::Exists(sContentTypesPath)) - { - std::wstring sData; - if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) - { - std::wstring sCTFrom = _T("application/vnd.ms-powerpoint.template.macroEnabled.main+xml"); - std::wstring sCTTo = _T("application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml"); - sData = string_replaceAll(sData, sCTFrom, sCTTo); + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) + { + std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); + if (NSFile::CFileBinary::Exists(sContentTypesPath)) + { + std::wstring sData; + if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) + { + std::wstring sCTFrom = _T("application/vnd.ms-powerpoint.template.macroEnabled.main+xml"); + std::wstring sCTTo = _T("application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml"); + sData = string_replaceAll(sData, sCTFrom, sCTTo); - sCTFrom = L""; + sCTFrom = L""; sData = string_replaceAll(sData, sCTFrom, L""); sCTFrom = L""; @@ -2129,9 +2172,9 @@ namespace NExtractTools std::wstring sPresentationRelsPath = sTo + FILE_SEPARATOR_STR + L"ppt" + FILE_SEPARATOR_STR + L"_rels" + FILE_SEPARATOR_STR + L"presentation.xml.rels"; if (NSFile::CFileBinary::Exists(sPresentationRelsPath)) { - std::wstring sData; - if (NSFile::CFileBinary::ReadAllTextUtf8(sPresentationRelsPath, sData)) - { + std::wstring sData; + if (NSFile::CFileBinary::ReadAllTextUtf8(sPresentationRelsPath, sData)) + { size_t pos = sData.find(L"vbaProject.bin"); if (pos != std::wstring::npos) { @@ -2147,45 +2190,44 @@ namespace NExtractTools { return AVS_FILEUTILS_ERROR_CONVERT; } - } + } } std::wstring sVbaProjectPath = sTo + FILE_SEPARATOR_STR + L"ppt" + FILE_SEPARATOR_STR + L"vbaProject.bin"; NSFile::CFileBinary::Remove(sVbaProjectPath); - - } - return 0; - } + } + return 0; + } // ppsm -> pptx - _UINT32 ppsm2pptx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 ppsm2pptx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sTempUnpackedPPTX = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedPPTX); + std::wstring sTempUnpackedPPTX = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); + NSDirectory::CreateDirectory(sTempUnpackedPPTX); - _UINT32 nRes = ppsm2pptx_dir(sFrom, sTempUnpackedPPTX, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedPPTX, sTo, true)) - return 0; - } - return AVS_FILEUTILS_ERROR_CONVERT; + _UINT32 nRes = ppsm2pptx_dir(sFrom, sTempUnpackedPPTX, params); + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedPPTX, sTo, true)) + return 0; + } + return AVS_FILEUTILS_ERROR_CONVERT; } - _UINT32 ppsm2pptx_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params) + _UINT32 ppsm2pptx_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms) { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) - { - std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); - if (NSFile::CFileBinary::Exists(sContentTypesPath)) - { - std::wstring sData; - if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) - { - std::wstring sCTFrom = _T("application/vnd.ms-powerpoint.slideshow.macroEnabled.main+xml"); - std::wstring sCTTo = _T("application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml"); - sData = string_replaceAll(sData, sCTFrom, sCTTo); + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) + { + std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); + if (NSFile::CFileBinary::Exists(sContentTypesPath)) + { + std::wstring sData; + if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) + { + std::wstring sCTFrom = _T("application/vnd.ms-powerpoint.slideshow.macroEnabled.main+xml"); + std::wstring sCTTo = _T("application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml"); + sData = string_replaceAll(sData, sCTFrom, sCTTo); - sCTFrom = L""; + sCTFrom = L""; sData = string_replaceAll(sData, sCTFrom, L""); sCTFrom = L""; @@ -2200,9 +2242,9 @@ namespace NExtractTools std::wstring sPresentationRelsPath = sTo + FILE_SEPARATOR_STR + L"ppt" + FILE_SEPARATOR_STR + L"_rels" + FILE_SEPARATOR_STR + L"presentation.xml.rels"; if (NSFile::CFileBinary::Exists(sPresentationRelsPath)) { - std::wstring sData; - if (NSFile::CFileBinary::ReadAllTextUtf8(sPresentationRelsPath, sData)) - { + std::wstring sData; + if (NSFile::CFileBinary::ReadAllTextUtf8(sPresentationRelsPath, sData)) + { size_t pos = sData.find(L"vbaProject.bin"); if (pos != std::wstring::npos) { @@ -2218,142 +2260,141 @@ namespace NExtractTools { return AVS_FILEUTILS_ERROR_CONVERT; } - } + } } std::wstring sVbaProjectPath = sTo + FILE_SEPARATOR_STR + L"ppt" + FILE_SEPARATOR_STR + L"vbaProject.bin"; NSFile::CFileBinary::Remove(sVbaProjectPath); - - } - return 0; - } - // potx -> pptx - _UINT32 potx2pptx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) - { - std::wstring sTempUnpackedPPTX = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedPPTX); - - _UINT32 nRes = potx2pptx_dir(sFrom, sTempUnpackedPPTX, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedPPTX, sTo, true)) - return 0; - } - return AVS_FILEUTILS_ERROR_CONVERT; + } + return 0; } - _UINT32 potx2pptx_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params) + // potx -> pptx + _UINT32 potx2pptx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) - { - std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); - if (NSFile::CFileBinary::Exists(sContentTypesPath)) - { - std::wstring sData; - if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) - { - std::wstring sCTFrom = _T("application/vnd.openxmlformats-officedocument.presentationml.template.main+xml"); - std::wstring sCTTo = _T("application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml"); + std::wstring sTempUnpackedPPTX = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); + NSDirectory::CreateDirectory(sTempUnpackedPPTX); - sData = string_replaceAll(sData, sCTFrom, sCTTo); + _UINT32 nRes = potx2pptx_dir(sFrom, sTempUnpackedPPTX, params); + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedPPTX, sTo, true)) + return 0; + } + return AVS_FILEUTILS_ERROR_CONVERT; + } + _UINT32 potx2pptx_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms) + { + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) + { + std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); + if (NSFile::CFileBinary::Exists(sContentTypesPath)) + { + std::wstring sData; + if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) + { + std::wstring sCTFrom = _T("application/vnd.openxmlformats-officedocument.presentationml.template.main+xml"); + std::wstring sCTTo = _T("application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml"); - if (NSFile::CFileBinary::SaveToFile(sContentTypesPath, sData, true)) - { - return 0; - } - } - } - } - return AVS_FILEUTILS_ERROR_CONVERT; + sData = string_replaceAll(sData, sCTFrom, sCTTo); + + if (NSFile::CFileBinary::SaveToFile(sContentTypesPath, sData, true)) + { + return 0; + } + } + } + } + return AVS_FILEUTILS_ERROR_CONVERT; } // potm -> pptm - _UINT32 potm2pptm (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 potm2pptm(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sTempUnpackedPPTM = sTemp + FILE_SEPARATOR_STR + _T("pptm_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedPPTM); + std::wstring sTempUnpackedPPTM = sTemp + FILE_SEPARATOR_STR + _T("pptm_unpacked"); + NSDirectory::CreateDirectory(sTempUnpackedPPTM); - _UINT32 nRes = potm2pptm_dir(sFrom, sTempUnpackedPPTM, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedPPTM, sTo, true)) - return 0; - } - return AVS_FILEUTILS_ERROR_CONVERT; + _UINT32 nRes = potm2pptm_dir(sFrom, sTempUnpackedPPTM, params); + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedPPTM, sTo, true)) + return 0; + } + return AVS_FILEUTILS_ERROR_CONVERT; } - _UINT32 potm2pptm_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params) + _UINT32 potm2pptm_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms) { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) - { - std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); - if (NSFile::CFileBinary::Exists(sContentTypesPath)) - { - std::wstring sData; - if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) - { - std::wstring sCTFrom = _T("application/vnd.ms-powerpoint.template.macroEnabled.main+xml"); - std::wstring sCTTo = _T("application/vnd.ms-powerpoint.presentation.macroEnabled.main+xml"); + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) + { + std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); + if (NSFile::CFileBinary::Exists(sContentTypesPath)) + { + std::wstring sData; + if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) + { + std::wstring sCTFrom = _T("application/vnd.ms-powerpoint.template.macroEnabled.main+xml"); + std::wstring sCTTo = _T("application/vnd.ms-powerpoint.presentation.macroEnabled.main+xml"); - sData = string_replaceAll(sData, sCTFrom, sCTTo); + sData = string_replaceAll(sData, sCTFrom, sCTTo); - if (NSFile::CFileBinary::SaveToFile(sContentTypesPath, sData, true)) - { - return 0; - } - } - } - } - return AVS_FILEUTILS_ERROR_CONVERT; + if (NSFile::CFileBinary::SaveToFile(sContentTypesPath, sData, true)) + { + return 0; + } + } + } + } + return AVS_FILEUTILS_ERROR_CONVERT; } // ppsm -> pptm - _UINT32 ppsm2pptm (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 ppsm2pptm(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sTempUnpackedPPTM = sTemp + FILE_SEPARATOR_STR + _T("pptm_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedPPTM); + std::wstring sTempUnpackedPPTM = sTemp + FILE_SEPARATOR_STR + _T("pptm_unpacked"); + NSDirectory::CreateDirectory(sTempUnpackedPPTM); - _UINT32 nRes = ppsm2pptm_dir(sFrom, sTempUnpackedPPTM, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedPPTM, sTo, true)) - return 0; - } - return AVS_FILEUTILS_ERROR_CONVERT; + _UINT32 nRes = ppsm2pptm_dir(sFrom, sTempUnpackedPPTM, params); + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedPPTM, sTo, true)) + return 0; + } + return AVS_FILEUTILS_ERROR_CONVERT; } - _UINT32 ppsm2pptm_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params) + _UINT32 ppsm2pptm_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms) { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) - { - std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); - if (NSFile::CFileBinary::Exists(sContentTypesPath)) - { - std::wstring sData; - if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) - { - std::wstring sCTFrom = _T("application/vnd.ms-powerpoint.slideshow.macroEnabled.main+xml"); - std::wstring sCTTo = _T("application/vnd.ms-powerpoint.presentation.macroEnabled.main+xml"); + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTo, NULL, 0)) + { + std::wstring sContentTypesPath = sTo + FILE_SEPARATOR_STR + _T("[Content_Types].xml"); + if (NSFile::CFileBinary::Exists(sContentTypesPath)) + { + std::wstring sData; + if (NSFile::CFileBinary::ReadAllTextUtf8(sContentTypesPath, sData)) + { + std::wstring sCTFrom = _T("application/vnd.ms-powerpoint.slideshow.macroEnabled.main+xml"); + std::wstring sCTTo = _T("application/vnd.ms-powerpoint.presentation.macroEnabled.main+xml"); - sData = string_replaceAll(sData, sCTFrom, sCTTo); + sData = string_replaceAll(sData, sCTFrom, sCTTo); - if (NSFile::CFileBinary::SaveToFile(sContentTypesPath, sData, true)) - { - return 0; - } - } - } - } - return AVS_FILEUTILS_ERROR_CONVERT; + if (NSFile::CFileBinary::SaveToFile(sContentTypesPath, sData, true)) + { + return 0; + } + } + } + } + return AVS_FILEUTILS_ERROR_CONVERT; } // ppt -> pptx - _UINT32 ppt2pptx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 ppt2pptx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sResultPptxDir = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); + std::wstring sResultPptxDir = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); - NSDirectory::CreateDirectory(sResultPptxDir); + NSDirectory::CreateDirectory(sResultPptxDir); - _UINT32 nRes = ppt2pptx_dir(sFrom, sResultPptxDir, sTemp, params); + _UINT32 nRes = ppt2pptx_dir(sFrom, sResultPptxDir, sTemp, params); nRes = processEncryptionError(nRes, sFrom, params); @@ -2363,7 +2404,7 @@ namespace NExtractTools } return nRes; } - _UINT32 ppt2pptx_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 ppt2pptx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { COfficePPTFile pptFile; @@ -2375,110 +2416,109 @@ namespace NExtractTools return nRes; } // ppt -> pptm - _UINT32 ppt2pptm (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 ppt2pptm(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sResultPptxDir = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); + std::wstring sResultPptxDir = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); - NSDirectory::CreateDirectory(sResultPptxDir); + NSDirectory::CreateDirectory(sResultPptxDir); - _UINT32 nRes = ppt2pptm_dir(sFrom, sResultPptxDir, sTemp, params); + _UINT32 nRes = ppt2pptm_dir(sFrom, sResultPptxDir, sTemp, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultPptxDir, sTo, true)) - return 0; + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultPptxDir, sTo, true)) + return 0; } return nRes; } - _UINT32 ppt2pptm_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 ppt2pptm_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - COfficePPTFile pptFile; + COfficePPTFile pptFile; - pptFile.put_TempDirectory(sTemp); + pptFile.put_TempDirectory(sTemp); - params.m_bMacro = true; + params.m_bMacro = true; _UINT32 nRes = pptFile.LoadFromFile(sFrom, sTo, params.getPassword(), params.m_bMacro); nRes = processEncryptionError(nRes, sFrom, params); return nRes; } // ppt -> pptt - _UINT32 ppt2pptt (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 ppt2pptt(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sResultPpttDir = sTemp + FILE_SEPARATOR_STR + _T("pptt_unpacked"); - std::wstring sTempPpttFileEditor = sResultPpttDir + FILE_SEPARATOR_STR + _T("Editor.bin"); + std::wstring sResultPpttDir = sTemp + FILE_SEPARATOR_STR + _T("pptt_unpacked"); + std::wstring sTempPpttFileEditor = sResultPpttDir + FILE_SEPARATOR_STR + _T("Editor.bin"); - NSDirectory::CreateDirectory(sResultPpttDir); + NSDirectory::CreateDirectory(sResultPpttDir); - _UINT32 nRes = ppt2pptt_bin(sFrom, sTempPpttFileEditor, sTemp, params); + _UINT32 nRes = ppt2pptt_bin(sFrom, sTempPpttFileEditor, sTemp, params); if (SUCCEEDED_X2T(nRes)) { - // zip pptt folder to output file - COfficeUtils oCOfficeUtils(NULL); - nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory (sResultPpttDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; - } - return nRes; - } + // zip pptt folder to output file + COfficeUtils oCOfficeUtils(NULL); + nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultPpttDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; + } + return nRes; + } // ppt -> pptt_bin - _UINT32 ppt2pptt_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 ppt2pptt_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - // unzip pptx to temp folder - std::wstring sTempUnpackedPPTX = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked")+ FILE_SEPARATOR_STR; // leading slash is very important! + // unzip pptx to temp folder + std::wstring sTempUnpackedPPTX = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked") + FILE_SEPARATOR_STR; // leading slash is very important! - NSDirectory::CreateDirectory(sTempUnpackedPPTX); + NSDirectory::CreateDirectory(sTempUnpackedPPTX); - COfficePPTFile pptFile; + COfficePPTFile pptFile; - pptFile.put_TempDirectory(sTemp); + pptFile.put_TempDirectory(sTemp); - params.m_bMacro = true; - _UINT32 nRes = pptFile.LoadFromFile(sFrom, sTempUnpackedPPTX, params.getPassword(), params.m_bMacro); + params.m_bMacro = true; + _UINT32 nRes = pptFile.LoadFromFile(sFrom, sTempUnpackedPPTX, params.getPassword(), params.m_bMacro); nRes = processEncryptionError(nRes, sFrom, params); if (SUCCEEDED_X2T(nRes)) - { - // convert unzipped pptx to unzipped pptt - CPPTXFile *pptx_file = new CPPTXFile(); + { + // convert unzipped pptx to unzipped pptt + CPPTXFile *pptx_file = new CPPTXFile(); - if (pptx_file) - { - pptx_file->SetFontDir (params.getFontPath()); - nRes = (S_OK == pptx_file->OpenFileToPPTY (sTempUnpackedPPTX, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; + if (pptx_file) + { + pptx_file->SetFontDir(params.getFontPath()); + nRes = (S_OK == pptx_file->OpenFileToPPTY(sTempUnpackedPPTX, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; - delete pptx_file; - } - return nRes; - - } - return nRes; - } + delete pptx_file; + } + return nRes; + } + return nRes; + } // pptx -> odp - _UINT32 pptx2odp (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params ) + _UINT32 pptx2odp(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sTempUnpackedPPTX = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedPPTX); + std::wstring sTempUnpackedPPTX = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); + NSDirectory::CreateDirectory(sTempUnpackedPPTX); - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedPPTX, NULL, 0)) - { - return pptx_dir2odp(sTempUnpackedPPTX, sTo, sTemp, params, false); //add template ??? - } - return AVS_FILEUTILS_ERROR_CONVERT; + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedPPTX, NULL, 0)) + { + return pptx_dir2odp(sTempUnpackedPPTX, sTo, sTemp, params, false); // add template ??? + } + return AVS_FILEUTILS_ERROR_CONVERT; } // pptx_dir -> odp - _UINT32 pptx_dir2odp (const std::wstring &sPptxDir, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params, bool bTemplate) + _UINT32 pptx_dir2odp(const std::wstring &sPptxDir, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms, bool bTemplate) { std::wstring sTempUnpackedODP = sTemp + FILE_SEPARATOR_STR + _T("odp_unpacked"); NSDirectory::CreateDirectory(sTempUnpackedODP); Oox2Odf::Converter converter(sPptxDir, _T("presentation"), params.getFontPath(), bTemplate, sTemp); - _UINT32 nRes = 0; + _UINT32 nRes = 0; try { - std::wstring password = params.getSavePassword(); + std::wstring password = params.getSavePassword(); std::wstring documentID = params.getDocumentID(); converter.convert(); @@ -2487,146 +2527,145 @@ namespace NExtractTools COfficeUtils oCOfficeUtils(NULL); nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedODP, sTo, false, password.empty() ? Z_DEFLATED : 0)) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; } - catch(...) + catch (...) { - nRes = AVS_FILEUTILS_ERROR_CONVERT; + nRes = AVS_FILEUTILS_ERROR_CONVERT; } return nRes; } // rtf -> docx - _UINT32 rtf2docx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 rtf2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sResultDocxDir = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); + std::wstring sResultDocxDir = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); - NSDirectory::CreateDirectory(sResultDocxDir); - _UINT32 nRes = rtf2docx_dir(sFrom, sResultDocxDir, sTemp, params); + NSDirectory::CreateDirectory(sResultDocxDir); + _UINT32 nRes = rtf2docx_dir(sFrom, sResultDocxDir, sTemp, params); - if (SUCCEEDED_X2T(nRes)) - { - nRes = dir2zipMscrypt(sResultDocxDir, sTo, sTemp, params); - } + if (SUCCEEDED_X2T(nRes)) + { + nRes = dir2zipMscrypt(sResultDocxDir, sTo, sTemp, params); + } - return nRes; - } - _UINT32 rtf2docx_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) - { - RtfConvertationManager rtfConvert; + return nRes; + } + _UINT32 rtf2docx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) + { + RtfConvertationManager rtfConvert; rtfConvert.m_sTempFolder = sTemp; rtfConvert.m_nUserLCID = (NULL != params.m_nLcid) ? *params.m_nLcid : -1; return 0 == rtfConvert.ConvertRtfToOOX(sFrom, sTo) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; - } + } // rtf -> doct - _UINT32 rtf2doct (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 rtf2doct(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - // Extract docx to temp directory - std::wstring sResultDoctDir = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); - std::wstring sResultDoctFileEditor = sResultDoctDir + FILE_SEPARATOR_STR + _T("Editor.bin"); + // Extract docx to temp directory + std::wstring sResultDoctDir = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); + std::wstring sResultDoctFileEditor = sResultDoctDir + FILE_SEPARATOR_STR + _T("Editor.bin"); - NSDirectory::CreateDirectory(sResultDoctDir); + NSDirectory::CreateDirectory(sResultDoctDir); - _UINT32 nRes = rtf2doct_bin(sFrom, sResultDoctFileEditor, sTemp, params); + _UINT32 nRes = rtf2doct_bin(sFrom, sResultDoctFileEditor, sTemp, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultDoctDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; - } + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultDoctDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; + } - return nRes; - } + return nRes; + } // rtf -> doct_bin - _UINT32 rtf2doct_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) - { - std::wstring sResultDocxDir = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); + _UINT32 rtf2doct_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) + { + std::wstring sResultDocxDir = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); - NSDirectory::CreateDirectory(sResultDocxDir); - RtfConvertationManager rtfConvert; + NSDirectory::CreateDirectory(sResultDocxDir); + RtfConvertationManager rtfConvert; - rtfConvert.m_sTempFolder = sTemp; + rtfConvert.m_sTempFolder = sTemp; rtfConvert.m_nUserLCID = (NULL != params.m_nLcid) ? *params.m_nLcid : -1; - if ( rtfConvert.ConvertRtfToOOX(sFrom, sResultDocxDir) == 0) - { - BinDocxRW::CDocxSerializer m_oCDocxSerializer; + if (rtfConvert.ConvertRtfToOOX(sFrom, sResultDocxDir) == 0) + { + BinDocxRW::CDocxSerializer m_oCDocxSerializer; - m_oCDocxSerializer.setFontDir(params.getFontPath()); + m_oCDocxSerializer.setFontDir(params.getFontPath()); - std::wstring sXmlOptions; - _UINT32 res = m_oCDocxSerializer.saveToFile (sTo, sResultDocxDir, sXmlOptions, sTemp) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; + std::wstring sXmlOptions; + _UINT32 res = m_oCDocxSerializer.saveToFile(sTo, sResultDocxDir, sXmlOptions, sTemp) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; - return res; - - } - return AVS_FILEUTILS_ERROR_CONVERT; - } + return res; + } + return AVS_FILEUTILS_ERROR_CONVERT; + } // docx -> rtf - _UINT32 docx2rtf (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) - { + _UINT32 docx2rtf(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) + { std::wstring sTempUnpackedDOCX = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedDOCX); + NSDirectory::CreateDirectory(sTempUnpackedDOCX); COfficeUtils oCOfficeUtils(NULL); if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedDOCX, NULL, 0)) { - return docx_dir2rtf(sTempUnpackedDOCX, sTo, sTemp, params); + return docx_dir2rtf(sTempUnpackedDOCX, sTo, sTemp, params); } return AVS_FILEUTILS_ERROR_CONVERT; } - _UINT32 docx_dir2rtf(const std::wstring &sDocxDir, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 docx_dir2rtf(const std::wstring &sDocxDir, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - //docx folder to rtf - RtfConvertationManager rtfConvert; + // docx folder to rtf + RtfConvertationManager rtfConvert; - rtfConvert.m_sTempFolder = sTemp; - rtfConvert.m_nUserLCID = (NULL != params.m_nLcid) ? *params.m_nLcid : -1; + rtfConvert.m_sTempFolder = sTemp; + rtfConvert.m_nUserLCID = (NULL != params.m_nLcid) ? *params.m_nLcid : -1; - if (rtfConvert.ConvertOOXToRtf(sTo, sDocxDir) == 0) - return 0; - return AVS_FILEUTILS_ERROR_CONVERT; - } + if (rtfConvert.ConvertOOXToRtf(sTo, sDocxDir) == 0) + return 0; + return AVS_FILEUTILS_ERROR_CONVERT; + } // doc -> docx - _UINT32 doc2docx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 doc2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sResultDocxDir = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); + std::wstring sResultDocxDir = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); - NSDirectory::CreateDirectory(sResultDocxDir); + NSDirectory::CreateDirectory(sResultDocxDir); - _UINT32 hRes = doc2docx_dir(sFrom, sResultDocxDir, sTemp, params); + _UINT32 hRes = doc2docx_dir(sFrom, sResultDocxDir, sTemp, params); - if (SUCCEEDED_X2T(hRes)) - { - hRes = dir2zipMscrypt(sResultDocxDir, sTo, sTemp, params); - } - else if (AVS_ERROR_DRM == hRes) - { - if (!params.getDontSaveAdditional()) - { - copyOrigin(sFrom, *params.m_sFileTo); - } - hRes = AVS_FILEUTILS_ERROR_CONVERT_DRM; - } - else if (AVS_ERROR_PASSWORD == hRes) - { - hRes = AVS_FILEUTILS_ERROR_CONVERT_PASSWORD; - } - return hRes; + if (SUCCEEDED_X2T(hRes)) + { + hRes = dir2zipMscrypt(sResultDocxDir, sTo, sTemp, params); + } + else if (AVS_ERROR_DRM == hRes) + { + if (!params.getDontSaveAdditional()) + { + copyOrigin(sFrom, *params.m_sFileTo); + } + hRes = AVS_FILEUTILS_ERROR_CONVERT_DRM; + } + else if (AVS_ERROR_PASSWORD == hRes) + { + hRes = AVS_FILEUTILS_ERROR_CONVERT_PASSWORD; + } + return hRes; } - _UINT32 doc2docx_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 doc2docx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - COfficeDocFile docFile; + COfficeDocFile docFile; docFile.m_sTempFolder = sTemp; docFile.m_nUserLCID = (NULL != params.m_nLcid) ? *params.m_nLcid : -1; params.m_bMacro = false; - _UINT32 hRes = docFile.LoadFromFile( sFrom, sTo, params.getPassword(), params.m_bMacro); + _UINT32 hRes = docFile.LoadFromFile(sFrom, sTo, params.getPassword(), params.m_bMacro); if (AVS_ERROR_DRM == hRes) { if (!params.getDontSaveAdditional()) @@ -2640,45 +2679,45 @@ namespace NExtractTools return AVS_FILEUTILS_ERROR_CONVERT_PASSWORD; } return 0 == hRes ? 0 : AVS_FILEUTILS_ERROR_CONVERT; - } + } // doc -> docm - _UINT32 doc2docm (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 doc2docm(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sResultDocxDir = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); + std::wstring sResultDocxDir = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); - NSDirectory::CreateDirectory(sResultDocxDir); + NSDirectory::CreateDirectory(sResultDocxDir); - _UINT32 hRes = doc2docm_dir(sFrom, sResultDocxDir, sTemp, params); - if (SUCCEEDED_X2T(hRes)) - { - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultDocxDir, sTo, true)) - return 0; - } - else if (AVS_ERROR_DRM == hRes) - { - if (!params.getDontSaveAdditional()) - { - copyOrigin(sFrom, *params.m_sFileTo); - } - return AVS_FILEUTILS_ERROR_CONVERT_DRM; - } - else if (AVS_ERROR_PASSWORD == hRes) - { - return AVS_FILEUTILS_ERROR_CONVERT_PASSWORD; - } - return AVS_FILEUTILS_ERROR_CONVERT; + _UINT32 hRes = doc2docm_dir(sFrom, sResultDocxDir, sTemp, params); + if (SUCCEEDED_X2T(hRes)) + { + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultDocxDir, sTo, true)) + return 0; + } + else if (AVS_ERROR_DRM == hRes) + { + if (!params.getDontSaveAdditional()) + { + copyOrigin(sFrom, *params.m_sFileTo); + } + return AVS_FILEUTILS_ERROR_CONVERT_DRM; + } + else if (AVS_ERROR_PASSWORD == hRes) + { + return AVS_FILEUTILS_ERROR_CONVERT_PASSWORD; + } + return AVS_FILEUTILS_ERROR_CONVERT; } - _UINT32 doc2docm_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 doc2docm_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - COfficeDocFile docFile; + COfficeDocFile docFile; docFile.m_sTempFolder = sTemp; docFile.m_nUserLCID = (NULL != params.m_nLcid) ? *params.m_nLcid : -1; params.m_bMacro = true; - _UINT32 hRes = docFile.LoadFromFile( sFrom, sTo, params.getPassword(), params.m_bMacro); + _UINT32 hRes = docFile.LoadFromFile(sFrom, sTo, params.getPassword(), params.m_bMacro); if (AVS_ERROR_DRM == hRes) { if (!params.getDontSaveAdditional()) @@ -2692,192 +2731,192 @@ namespace NExtractTools return AVS_FILEUTILS_ERROR_CONVERT_PASSWORD; } return 0 == hRes ? 0 : AVS_FILEUTILS_ERROR_CONVERT; - } + } // doc -> doct - _UINT32 doc2doct (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 doc2doct(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - // Extract docx to temp directory - std::wstring sResultDoctDir = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); - std::wstring sResultDoctFileEditor = sResultDoctDir + FILE_SEPARATOR_STR + _T("Editor.bin"); + // Extract docx to temp directory + std::wstring sResultDoctDir = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); + std::wstring sResultDoctFileEditor = sResultDoctDir + FILE_SEPARATOR_STR + _T("Editor.bin"); - NSDirectory::CreateDirectory(sResultDoctDir); + NSDirectory::CreateDirectory(sResultDoctDir); - _UINT32 nRes = doc2doct_bin(sFrom, sResultDoctFileEditor, sTemp, params); + _UINT32 nRes = doc2doct_bin(sFrom, sResultDoctFileEditor, sTemp, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultDoctDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; - } + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultDoctDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; + } - return nRes; + return nRes; } // doc -> doct_bin - _UINT32 doc2doct_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 doc2doct_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sResultDocxDir = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); + std::wstring sResultDocxDir = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); - NSDirectory::CreateDirectory(sResultDocxDir); + NSDirectory::CreateDirectory(sResultDocxDir); - COfficeDocFile docFile; + COfficeDocFile docFile; docFile.m_sTempFolder = sTemp; - docFile.m_nUserLCID = (NULL != params.m_nLcid) ? *params.m_nLcid : -1;; + docFile.m_nUserLCID = (NULL != params.m_nLcid) ? *params.m_nLcid : -1; + ; params.m_bMacro = true; - _UINT32 nRes = docFile.LoadFromFile( sFrom, sResultDocxDir, params.getPassword(), params.m_bMacro); + _UINT32 nRes = docFile.LoadFromFile(sFrom, sResultDocxDir, params.getPassword(), params.m_bMacro); nRes = processEncryptionError(nRes, sFrom, params); - if (SUCCEEDED_X2T(nRes)) - { - BinDocxRW::CDocxSerializer m_oCDocxSerializer; + if (SUCCEEDED_X2T(nRes)) + { + BinDocxRW::CDocxSerializer m_oCDocxSerializer; - m_oCDocxSerializer.setFontDir(params.getFontPath()); + m_oCDocxSerializer.setFontDir(params.getFontPath()); std::wstring xml_options = params.getXmlOptions(); - _UINT32 res = m_oCDocxSerializer.saveToFile (sTo, sResultDocxDir, xml_options, sTemp) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; + _UINT32 res = m_oCDocxSerializer.saveToFile(sTo, sResultDocxDir, xml_options, sTemp) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; - return res; - } - return nRes; + return res; + } + return nRes; } - _UINT32 docx_dir2doc (const std::wstring &sDocxDir, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 docx_dir2doc(const std::wstring &sDocxDir, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - return AVS_FILEUTILS_ERROR_CONVERT; + return AVS_FILEUTILS_ERROR_CONVERT; } // doct -> rtf - _UINT32 doct2rtf (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params) + _UINT32 doct2rtf(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams ¶ms) { - // Extract docx to temp directory - std::wstring sTempUnpackedDOCT = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); - std::wstring sTempDoctFileEditor = sTempUnpackedDOCT + FILE_SEPARATOR_STR + _T("Editor.bin"); + // Extract docx to temp directory + std::wstring sTempUnpackedDOCT = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); + std::wstring sTempDoctFileEditor = sTempUnpackedDOCT + FILE_SEPARATOR_STR + _T("Editor.bin"); - NSDirectory::CreateDirectory(sTempUnpackedDOCT); + NSDirectory::CreateDirectory(sTempUnpackedDOCT); - // unzip doct to folder - COfficeUtils oCOfficeUtils(NULL); - if (S_OK != oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedDOCT, NULL, 0)) - return AVS_FILEUTILS_ERROR_CONVERT; + // unzip doct to folder + COfficeUtils oCOfficeUtils(NULL); + if (S_OK != oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedDOCT, NULL, 0)) + return AVS_FILEUTILS_ERROR_CONVERT; - return doct_bin2rtf(sTempDoctFileEditor, sTo, sTemp, sThemeDir, params); - } + return doct_bin2rtf(sTempDoctFileEditor, sTo, sTemp, sThemeDir, params); + } // bin -> rtf - _UINT32 doct_bin2rtf (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params) - { - _UINT32 nRes = 0; - std::wstring sResultDocxDir = sTemp + FILE_SEPARATOR_STR + L"docx_unpacked"; + _UINT32 doct_bin2rtf(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams ¶ms) + { + _UINT32 nRes = 0; + std::wstring sResultDocxDir = sTemp + FILE_SEPARATOR_STR + L"docx_unpacked"; - NSDirectory::CreateDirectory(sResultDocxDir); + NSDirectory::CreateDirectory(sResultDocxDir); - std::wstring sTargetBin; - if (params.getFromChanges()) - { - params.setFromChanges(false); - nRes = apply_changes(sFrom, _T(""), NSDoctRenderer::DoctRendererFormat::FormatFile::DOCT, sThemeDir, sTargetBin, params); - } - else - sTargetBin = sFrom; + std::wstring sTargetBin; + if (params.getFromChanges()) + { + params.setFromChanges(false); + nRes = apply_changes(sFrom, _T(""), NSDoctRenderer::DoctRendererFormat::FormatFile::DOCT, sThemeDir, sTargetBin, params); + } + else + sTargetBin = sFrom; - BinDocxRW::CDocxSerializer m_oCDocxSerializer; + BinDocxRW::CDocxSerializer m_oCDocxSerializer; - m_oCDocxSerializer.setFontDir(params.getFontPath()); + m_oCDocxSerializer.setFontDir(params.getFontPath()); - std::wstring sXmlOptions = _T(""); - std::wstring sThemePath; // will be filled by 'CreateDocxFolders' method - std::wstring sMediaPath; // will be filled by 'CreateDocxFolders' method - std::wstring sEmbedPath; // will be filled by 'CreateDocxFolders' method + std::wstring sXmlOptions = _T(""); + std::wstring sThemePath; // will be filled by 'CreateDocxFolders' method + std::wstring sMediaPath; // will be filled by 'CreateDocxFolders' method + std::wstring sEmbedPath; // will be filled by 'CreateDocxFolders' method - m_oCDocxSerializer.CreateDocxFolders (sResultDocxDir, sThemePath, sMediaPath, sEmbedPath); + m_oCDocxSerializer.CreateDocxFolders(sResultDocxDir, sThemePath, sMediaPath, sEmbedPath); - if (SUCCEEDED_X2T(nRes)) - { - nRes = m_oCDocxSerializer.loadFromFile (sTargetBin, sResultDocxDir, sXmlOptions, sThemePath, sMediaPath, sEmbedPath) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; - if (SUCCEEDED_X2T(nRes)) - { - //docx folder to rtf - RtfConvertationManager rtfConvert; + if (SUCCEEDED_X2T(nRes)) + { + nRes = m_oCDocxSerializer.loadFromFile(sTargetBin, sResultDocxDir, sXmlOptions, sThemePath, sMediaPath, sEmbedPath) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; + if (SUCCEEDED_X2T(nRes)) + { + // docx folder to rtf + RtfConvertationManager rtfConvert; - rtfConvert.m_sTempFolder = sTemp; - rtfConvert.m_nUserLCID = (NULL != params.m_nLcid) ? *params.m_nLcid : -1; + rtfConvert.m_sTempFolder = sTemp; + rtfConvert.m_nUserLCID = (NULL != params.m_nLcid) ? *params.m_nLcid : -1; - nRes = rtfConvert.ConvertOOXToRtf(sTo, sResultDocxDir); - } - } - //удаляем EditorWithChanges, потому что он не в Temp - if (sFrom != sTargetBin) - NSFile::CFileBinary::Remove(sTargetBin); - return nRes; - } - // txt -> docx - _UINT32 txt2docx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) - { - std::wstring sResultDocxDir = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); - - NSDirectory::CreateDirectory(sResultDocxDir); - _UINT32 nRes = txt2docx_dir(sFrom, sResultDocxDir, sTemp, params); - if (SUCCEEDED_X2T(nRes)) - { - nRes = dir2zipMscrypt(sResultDocxDir, sTo, sTemp, params); - } - return AVS_FILEUTILS_ERROR_CONVERT; + nRes = rtfConvert.ConvertOOXToRtf(sTo, sResultDocxDir); + } + } + // удаляем EditorWithChanges, потому что он не в Temp + if (sFrom != sTargetBin) + NSFile::CFileBinary::Remove(sTargetBin); + return nRes; } - _UINT32 txt2docx_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + // txt -> docx + _UINT32 txt2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - CTxtXmlFile txtFile; + std::wstring sResultDocxDir = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); - std::wstring xml_options = params.getXmlOptions(); + NSDirectory::CreateDirectory(sResultDocxDir); + _UINT32 nRes = txt2docx_dir(sFrom, sResultDocxDir, sTemp, params); + if (SUCCEEDED_X2T(nRes)) + { + nRes = dir2zipMscrypt(sResultDocxDir, sTo, sTemp, params); + } + return AVS_FILEUTILS_ERROR_CONVERT; + } + _UINT32 txt2docx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) + { + CTxtXmlFile txtFile; - return txtFile.txt_LoadFromFile(sFrom, sTo, xml_options); - } + std::wstring xml_options = params.getXmlOptions(); + + return txtFile.txt_LoadFromFile(sFrom, sTo, xml_options); + } // txt -> doct - _UINT32 txt2doct (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 txt2doct(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sResultDoctDir = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); - std::wstring sResultDoctFileEditor = sResultDoctDir + FILE_SEPARATOR_STR + _T("Editor.bin"); + std::wstring sResultDoctDir = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); + std::wstring sResultDoctFileEditor = sResultDoctDir + FILE_SEPARATOR_STR + _T("Editor.bin"); - NSDirectory::CreateDirectory(sResultDoctDir); + NSDirectory::CreateDirectory(sResultDoctDir); - _UINT32 nRes = txt2doct_bin(sFrom, sResultDoctFileEditor, sTemp, params); + _UINT32 nRes = txt2doct_bin(sFrom, sResultDoctFileEditor, sTemp, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultDoctDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; - } + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultDoctDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; + } - return nRes; - } + return nRes; + } // txt -> doct_bin - _UINT32 txt2doct_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 txt2doct_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sResultDocxDir = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); + std::wstring sResultDocxDir = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); - NSDirectory::CreateDirectory(sResultDocxDir); + NSDirectory::CreateDirectory(sResultDocxDir); - CTxtXmlFile txtFile; + CTxtXmlFile txtFile; - // txtFile.m_sTempFolder = sTemp); + // txtFile.m_sTempFolder = sTemp); - if ( txtFile.txt_LoadFromFile(sFrom, sResultDocxDir, params.getXmlOptions()) == 0) - { - BinDocxRW::CDocxSerializer m_oCDocxSerializer; + if (txtFile.txt_LoadFromFile(sFrom, sResultDocxDir, params.getXmlOptions()) == 0) + { + BinDocxRW::CDocxSerializer m_oCDocxSerializer; - m_oCDocxSerializer.setFontDir(params.getFontPath()); + m_oCDocxSerializer.setFontDir(params.getFontPath()); - _UINT32 res = m_oCDocxSerializer.saveToFile (sTo, sResultDocxDir, params.getXmlOptions(), sTemp) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; + _UINT32 res = m_oCDocxSerializer.saveToFile(sTo, sResultDocxDir, params.getXmlOptions(), sTemp) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; - return res; - - } - return AVS_FILEUTILS_ERROR_CONVERT; + return res; + } + return AVS_FILEUTILS_ERROR_CONVERT; } - _UINT32 docx2txt(const std::wstring &sDocxDir, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 docx2txt(const std::wstring &sDocxDir, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { std::wstring sTempUnpackedDOCX = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); NSDirectory::CreateDirectory(sTempUnpackedDOCX); @@ -2889,46 +2928,46 @@ namespace NExtractTools } return AVS_FILEUTILS_ERROR_CONVERT; } - _UINT32 docx_dir2txt (const std::wstring &sDocxDir, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 docx_dir2txt(const std::wstring &sDocxDir, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { CTxtXmlFile txtFile; return txtFile.txt_SaveToFile(sTo, sDocxDir, params.getXmlOptions()); } - //odf - _UINT32 odf2oot(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + // odf + _UINT32 odf2oot(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sResultDoctDir = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); - std::wstring sResultDoctFileEditor = sResultDoctDir + FILE_SEPARATOR_STR + _T("Editor.bin"); + std::wstring sResultDoctDir = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); + std::wstring sResultDoctFileEditor = sResultDoctDir + FILE_SEPARATOR_STR + _T("Editor.bin"); - NSDirectory::CreateDirectory(sResultDoctDir); + NSDirectory::CreateDirectory(sResultDoctDir); - _UINT32 nRes = odf2oot_bin(sFrom, sResultDoctFileEditor, sTemp, params); + _UINT32 nRes = odf2oot_bin(sFrom, sResultDoctFileEditor, sTemp, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultDoctDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; - } + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultDoctDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; + } - return nRes; - } + return nRes; + } - _UINT32 odf2oot_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) - { - std::wstring sTempUnpackedOdf = sTemp + FILE_SEPARATOR_STR + _T("odf_unpacked"); - std::wstring sTempUnpackedOox = sTemp + FILE_SEPARATOR_STR + _T("oox_unpacked"); + _UINT32 odf2oot_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) + { + std::wstring sTempUnpackedOdf = sTemp + FILE_SEPARATOR_STR + _T("odf_unpacked"); + std::wstring sTempUnpackedOox = sTemp + FILE_SEPARATOR_STR + _T("oox_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedOdf); + NSDirectory::CreateDirectory(sTempUnpackedOdf); - _UINT32 nRes = 0; + _UINT32 nRes = 0; COfficeUtils oCOfficeUtils(NULL); if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedOdf, NULL, 0)) { NSDirectory::CreateDirectory(sTempUnpackedOox); - nRes = ConvertODF2OOXml(sTempUnpackedOdf, sTempUnpackedOox, params.getFontPath(), sTemp, params.getPassword()); + nRes = ConvertODF2OOXml(sTempUnpackedOdf, sTempUnpackedOox, params.getFontPath(), sTemp, params.getPassword()); nRes = processEncryptionError(nRes, sFrom, params); if (SUCCEEDED_X2T(nRes)) { @@ -2938,37 +2977,41 @@ namespace NExtractTools { switch (OfficeFileFormatChecker.nFileType) { - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX: - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM: - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX: - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM: - case AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM: - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF: - { - return docx_dir2doct_bin(sTempUnpackedOox, sTo, sTemp, params, L""); - }break; - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX: - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM: - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX: - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM: - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB: - { - const std::wstring & sXmlOptions = params.getXmlOptions(); - return xlsx_dir2xlst_bin(sTempUnpackedOox, sTo, params, false, L""); - }break; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX: - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM: - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX: - case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX: - case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM: - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM: - { - return pptx_dir2pptt_bin(sTempUnpackedOox, sTo, sTemp, params, L""); - }break; - default: - { - nRes = AVS_FILEUTILS_ERROR_CONVERT; - }break; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX: + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM: + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX: + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM: + case AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM: + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF: + { + return docx_dir2doct_bin(sTempUnpackedOox, sTo, sTemp, params, L""); + } + break; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX: + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM: + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX: + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM: + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB: + { + const std::wstring &sXmlOptions = params.getXmlOptions(); + return xlsx_dir2xlst_bin(sTempUnpackedOox, sTo, params, false, L""); + } + break; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX: + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM: + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX: + case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX: + case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM: + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM: + { + return pptx_dir2pptt_bin(sTempUnpackedOox, sTo, sTemp, params, L""); + } + break; + default: + { + nRes = AVS_FILEUTILS_ERROR_CONVERT; + } + break; } } } @@ -2981,27 +3024,27 @@ namespace NExtractTools } return nRes; } - _UINT32 otf2odf(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + _UINT32 otf2odf(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sTempUnpackedOdf = sTemp + FILE_SEPARATOR_STR + _T("odf_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedOdf); + std::wstring sTempUnpackedOdf = sTemp + FILE_SEPARATOR_STR + _T("odf_unpacked"); + NSDirectory::CreateDirectory(sTempUnpackedOdf); - COfficeUtils oCOfficeUtils(NULL); - if (S_OK != oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedOdf, NULL, 0)) - return AVS_FILEUTILS_ERROR_CONVERT; + COfficeUtils oCOfficeUtils(NULL); + if (S_OK != oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedOdf, NULL, 0)) + return AVS_FILEUTILS_ERROR_CONVERT; _UINT32 nRes = ConvertOTF2ODF(sTempUnpackedOdf); if (SUCCEEDED_X2T(nRes)) { - COfficeUtils oCOfficeUtils(NULL); - nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedOdf, sTo, true)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; + COfficeUtils oCOfficeUtils(NULL); + nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedOdf, sTo, true)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; } return nRes; } - _UINT32 odf2oox(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + _UINT32 odf2oox(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sTempUnpackedOox = sTemp + FILE_SEPARATOR_STR + _T("oox_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedOox); + std::wstring sTempUnpackedOox = sTemp + FILE_SEPARATOR_STR + _T("oox_unpacked"); + NSDirectory::CreateDirectory(sTempUnpackedOox); _UINT32 nRes = odf2oox_dir(sFrom, sTempUnpackedOox, sTemp, params); @@ -3017,98 +3060,98 @@ namespace NExtractTools } return nRes; } - _UINT32 odf2oox_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + _UINT32 odf2oox_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { _UINT32 nRes = 0; - std::wstring sTempUnpackedOdf = sTemp + FILE_SEPARATOR_STR + _T("odf_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedOdf); + std::wstring sTempUnpackedOdf = sTemp + FILE_SEPARATOR_STR + _T("odf_unpacked"); + NSDirectory::CreateDirectory(sTempUnpackedOdf); - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedOdf, NULL, 0)) - { - nRes = ConvertODF2OOXml(sTempUnpackedOdf, sTo, params.getFontPath(), sTemp, params.getPassword()); - nRes = processEncryptionError(nRes, sFrom, params); - } - else - { - nRes = AVS_FILEUTILS_ERROR_CONVERT; - } + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedOdf, NULL, 0)) + { + nRes = ConvertODF2OOXml(sTempUnpackedOdf, sTo, params.getFontPath(), sTemp, params.getPassword()); + nRes = processEncryptionError(nRes, sFrom, params); + } + else + { + nRes = AVS_FILEUTILS_ERROR_CONVERT; + } return nRes; } - //odf flat - _UINT32 odf_flat2oot(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + // odf flat + _UINT32 odf_flat2oot(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sResultDoctDir = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); - std::wstring sResultDoctFileEditor = sResultDoctDir + FILE_SEPARATOR_STR + _T("Editor.bin"); + std::wstring sResultDoctDir = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); + std::wstring sResultDoctFileEditor = sResultDoctDir + FILE_SEPARATOR_STR + _T("Editor.bin"); - NSDirectory::CreateDirectory(sResultDoctDir); + NSDirectory::CreateDirectory(sResultDoctDir); - _UINT32 nRes = odf_flat2oot_bin(sFrom, sResultDoctFileEditor, sTemp, params); + _UINT32 nRes = odf_flat2oot_bin(sFrom, sResultDoctFileEditor, sTemp, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultDoctDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; - } + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultDoctDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; + } - return nRes; + return nRes; } - _UINT32 odf_flat2oot_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + _UINT32 odf_flat2oot_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sTempUnpackedOox = sTemp + FILE_SEPARATOR_STR + _T("oox_unpacked"); + std::wstring sTempUnpackedOox = sTemp + FILE_SEPARATOR_STR + _T("oox_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedOox); + NSDirectory::CreateDirectory(sTempUnpackedOox); - _UINT32 nRes = ConvertODF2OOXml(sFrom, sTempUnpackedOox, params.getFontPath(), sTemp, params.getPassword()); + _UINT32 nRes = ConvertODF2OOXml(sFrom, sTempUnpackedOox, params.getFontPath(), sTemp, params.getPassword()); nRes = processEncryptionError(nRes, sFrom, params); if (SUCCEEDED_X2T(nRes)) { - BinDocxRW::CDocxSerializer m_oCDocxSerializer; + BinDocxRW::CDocxSerializer m_oCDocxSerializer; - m_oCDocxSerializer.setFontDir(params.getFontPath()); + m_oCDocxSerializer.setFontDir(params.getFontPath()); - nRes = m_oCDocxSerializer.saveToFile (sTo, sTempUnpackedOox, params.getXmlOptions(), sTemp) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; + nRes = m_oCDocxSerializer.saveToFile(sTo, sTempUnpackedOox, params.getXmlOptions(), sTemp) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; } - return nRes; + return nRes; } - _UINT32 odf_flat2oox(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + _UINT32 odf_flat2oox(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sTempUnpackedOox = sTemp + FILE_SEPARATOR_STR + _T("oox_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedOox); + std::wstring sTempUnpackedOox = sTemp + FILE_SEPARATOR_STR + _T("oox_unpacked"); + NSDirectory::CreateDirectory(sTempUnpackedOox); - _UINT32 nRes = odf_flat2oox_dir(sFrom, sTempUnpackedOox, sTemp, params); - - if (SUCCEEDED_X2T(nRes)) - { - nRes = dir2zipMscrypt(sTempUnpackedOox, sTo, sTemp, params); - } + _UINT32 nRes = odf_flat2oox_dir(sFrom, sTempUnpackedOox, sTemp, params); - return nRes; + if (SUCCEEDED_X2T(nRes)) + { + nRes = dir2zipMscrypt(sTempUnpackedOox, sTo, sTemp, params); + } + + return nRes; } - _UINT32 odf_flat2oox_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + _UINT32 odf_flat2oox_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - _UINT32 nRes = ConvertODF2OOXml(sFrom, sTo, params.getFontPath(), sTemp, params.getPassword()); + _UINT32 nRes = ConvertODF2OOXml(sFrom, sTo, params.getFontPath(), sTemp, params.getPassword()); nRes = processEncryptionError(nRes, sFrom, params); return nRes; } // docx -> odt - _UINT32 docx2odt (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params ) - { - std::wstring sTempUnpackedDOCX = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); - NSDirectory::CreateDirectory(sTempUnpackedDOCX); + _UINT32 docx2odt(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) + { + std::wstring sTempUnpackedDOCX = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); + NSDirectory::CreateDirectory(sTempUnpackedDOCX); - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedDOCX, NULL, 0)) - { - return docx_dir2odt(sTempUnpackedDOCX, sTo, sTemp, params, false); //add Template ???? - } - return AVS_FILEUTILS_ERROR_CONVERT; - } + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedDOCX, NULL, 0)) + { + return docx_dir2odt(sTempUnpackedDOCX, sTo, sTemp, params, false); // add Template ???? + } + return AVS_FILEUTILS_ERROR_CONVERT; + } // docxflat -> docx - _UINT32 docxflat2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 docxflat2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { std::wstring sTempUnpackedDOCX = sTemp + FILE_SEPARATOR_STR + L"docx_unpacked"; NSDirectory::CreateDirectory(sTempUnpackedDOCX); @@ -3124,7 +3167,7 @@ namespace NExtractTools return AVS_FILEUTILS_ERROR_CONVERT; } // docxflat -> odt - _UINT32 docxflat2odt(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 docxflat2odt(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { std::wstring sTempUnpackedODT = sTemp + FILE_SEPARATOR_STR + L"odt_unpacked"; NSDirectory::CreateDirectory(sTempUnpackedODT); @@ -3150,17 +3193,17 @@ namespace NExtractTools return nRes; } // docx dir -> odt - _UINT32 docx_dir2odt (const std::wstring &sDocxDir, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params, bool bTemplate) - { - std::wstring sTempUnpackedODT = sTemp + FILE_SEPARATOR_STR + L"odt_unpacked"; - NSDirectory::CreateDirectory(sTempUnpackedODT); + _UINT32 docx_dir2odt(const std::wstring &sDocxDir, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms, bool bTemplate) + { + std::wstring sTempUnpackedODT = sTemp + FILE_SEPARATOR_STR + L"odt_unpacked"; + NSDirectory::CreateDirectory(sTempUnpackedODT); - Oox2Odf::Converter converter(sDocxDir, L"text", params.getFontPath(), bTemplate, sTemp); + Oox2Odf::Converter converter(sDocxDir, L"text", params.getFontPath(), bTemplate, sTemp); - _UINT32 nRes = 0; - try - { - std::wstring password = params.getSavePassword(); + _UINT32 nRes = 0; + try + { + std::wstring password = params.getSavePassword(); std::wstring documentID = params.getDocumentID(); converter.convert(); @@ -3168,38 +3211,38 @@ namespace NExtractTools COfficeUtils oCOfficeUtils(NULL); nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedODT, sTo, false, password.empty() ? Z_DEFLATED : 0)) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; - } - catch(...) - { - nRes = AVS_FILEUTILS_ERROR_CONVERT; - } - return nRes; - } + } + catch (...) + { + nRes = AVS_FILEUTILS_ERROR_CONVERT; + } + return nRes; + } // xlsx -> ods - _UINT32 xlsx2ods (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params ) - { - std::wstring sTempUnpackedXLSX = sTemp + FILE_SEPARATOR_STR + L"xlsx_unpacked"; + _UINT32 xlsx2ods(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) + { + std::wstring sTempUnpackedXLSX = sTemp + FILE_SEPARATOR_STR + L"xlsx_unpacked"; - NSDirectory::CreateDirectory(sTempUnpackedXLSX); + NSDirectory::CreateDirectory(sTempUnpackedXLSX); - COfficeUtils oCOfficeUtils(NULL); - if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedXLSX, NULL, 0)) - { - return xlsx_dir2ods(sTempUnpackedXLSX, sTo, sTemp, params, false); //add Template ??? - } - return AVS_FILEUTILS_ERROR_CONVERT; - } + COfficeUtils oCOfficeUtils(NULL); + if (S_OK == oCOfficeUtils.ExtractToDirectory(sFrom, sTempUnpackedXLSX, NULL, 0)) + { + return xlsx_dir2ods(sTempUnpackedXLSX, sTo, sTemp, params, false); // add Template ??? + } + return AVS_FILEUTILS_ERROR_CONVERT; + } - _UINT32 xlsx_dir2ods (const std::wstring &sXlsxDir, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params, bool bTemplate) - { - std::wstring sTempUnpackedODS = sTemp + FILE_SEPARATOR_STR + L"ods_unpacked"; - NSDirectory::CreateDirectory(sTempUnpackedODS); - - Oox2Odf::Converter converter(sXlsxDir, L"spreadsheet", params.getFontPath(), bTemplate, sTemp); - - _UINT32 nRes = 0; + _UINT32 xlsx_dir2ods(const std::wstring &sXlsxDir, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms, bool bTemplate) + { + std::wstring sTempUnpackedODS = sTemp + FILE_SEPARATOR_STR + L"ods_unpacked"; + NSDirectory::CreateDirectory(sTempUnpackedODS); - std::wstring password = params.getSavePassword(); + Oox2Odf::Converter converter(sXlsxDir, L"spreadsheet", params.getFontPath(), bTemplate, sTemp); + + _UINT32 nRes = 0; + + std::wstring password = params.getSavePassword(); std::wstring documentID = params.getDocumentID(); converter.convert(); @@ -3211,125 +3254,135 @@ namespace NExtractTools return nRes; } - _UINT32 mscrypt2oot (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + _UINT32 mscrypt2oot(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sResultOotDir = sTemp + FILE_SEPARATOR_STR + _T("oot_unpacked"); - std::wstring sResultOotFileEditor = sResultOotDir + FILE_SEPARATOR_STR + _T("Editor.bin"); + std::wstring sResultOotDir = sTemp + FILE_SEPARATOR_STR + _T("oot_unpacked"); + std::wstring sResultOotFileEditor = sResultOotDir + FILE_SEPARATOR_STR + _T("Editor.bin"); - NSDirectory::CreateDirectory(sResultOotDir); + NSDirectory::CreateDirectory(sResultOotDir); - _UINT32 nRes = mscrypt2oot_bin(sFrom, sResultOotFileEditor, sTemp, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeUtils oCOfficeUtils(NULL); - nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultOotDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; - } + _UINT32 nRes = mscrypt2oot_bin(sFrom, sResultOotFileEditor, sTemp, params); + if (SUCCEEDED_X2T(nRes)) + { + COfficeUtils oCOfficeUtils(NULL); + nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultOotDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; + } return nRes; } - _UINT32 mscrypt2oox (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + _UINT32 mscrypt2oox(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring password = params.getPassword(); + std::wstring password = params.getPassword(); ECMACryptFile cryptReader; bool bDataIntegrity = false; - if (cryptReader.DecryptOfficeFile(sFrom, sTo, password, bDataIntegrity) == false) + if (cryptReader.DecryptOfficeFile(sFrom, sTo, password, bDataIntegrity) == false) { - if (password.empty()) return AVS_FILEUTILS_ERROR_CONVERT_DRM; - else return AVS_FILEUTILS_ERROR_CONVERT_PASSWORD; + if (password.empty()) + return AVS_FILEUTILS_ERROR_CONVERT_DRM; + else + return AVS_FILEUTILS_ERROR_CONVERT_PASSWORD; } if (bDataIntegrity == false) { - //было несанкционированое вешательство в файл + // было несанкционированое вешательство в файл } return 0; } - _UINT32 mitcrypt2oox (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + _UINT32 mitcrypt2oox(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - //todo + // todo return AVS_FILEUTILS_ERROR_CONVERT_DRM_UNSUPPORTED; } - _UINT32 mscrypt2oot_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + _UINT32 mscrypt2oot_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - //decrypt to temp file - std::wstring password = params.getPassword(); - std::wstring sResultDecryptFile = sTemp + FILE_SEPARATOR_STR + L"uncrypt_file.oox"; + // decrypt to temp file + std::wstring password = params.getPassword(); + std::wstring sResultDecryptFile = sTemp + FILE_SEPARATOR_STR + L"uncrypt_file.oox"; ECMACryptFile cryptReader; bool bDataIntegrity = false; if (cryptReader.DecryptOfficeFile(sFrom, sResultDecryptFile, password, bDataIntegrity) == false) { - if (password.empty()) return AVS_FILEUTILS_ERROR_CONVERT_DRM; - else return AVS_FILEUTILS_ERROR_CONVERT_PASSWORD; + if (password.empty()) + return AVS_FILEUTILS_ERROR_CONVERT_DRM; + else + return AVS_FILEUTILS_ERROR_CONVERT_PASSWORD; } if (bDataIntegrity == false) { - //было несанкционированое вешательство в файл + // было несанкционированое вешательство в файл } COfficeFileFormatChecker OfficeFileFormatChecker; if (OfficeFileFormatChecker.isOfficeFile(sResultDecryptFile)) - { - switch (OfficeFileFormatChecker.nFileType) + { + switch (OfficeFileFormatChecker.nFileType) { - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX: - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM: - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX: - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM: - case AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM: - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF: - { - return docx2doct_bin(sResultDecryptFile, sTo, sTemp, params); - }break; - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX: - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM: - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX: - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM: - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB: - { - const std::wstring & sXmlOptions = params.getXmlOptions(); - return xlsx2xlst_bin(sResultDecryptFile, sTo, sTemp, params); - }break; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX: - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM: - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX: - case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX: - case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM: - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM: - { - return pptx2pptt_bin(sResultDecryptFile, sTo, sTemp,params); - }break; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX_FLAT: - { - return docxflat2doct_bin(sResultDecryptFile, sTo, sTemp, params); - }break; - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX_FLAT: - { - const std::wstring & sXmlOptions = params.getXmlOptions(); - return xlsxflat2xlst_bin(sResultDecryptFile, sTo, sTemp, params); - }break; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX_PACKAGE: - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX_PACKAGE: - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX_PACKAGE: - { - return package2bin(sResultDecryptFile, sTo, sTemp, params); - }break; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX: + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM: + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX: + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM: + case AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM: + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF: + { + return docx2doct_bin(sResultDecryptFile, sTo, sTemp, params); + } + break; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX: + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM: + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX: + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM: + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB: + { + const std::wstring &sXmlOptions = params.getXmlOptions(); + return xlsx2xlst_bin(sResultDecryptFile, sTo, sTemp, params); + } + break; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX: + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM: + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX: + case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX: + case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM: + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM: + { + return pptx2pptt_bin(sResultDecryptFile, sTo, sTemp, params); + } + break; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX_FLAT: + { + return docxflat2doct_bin(sResultDecryptFile, sTo, sTemp, params); + } + break; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX_FLAT: + { + const std::wstring &sXmlOptions = params.getXmlOptions(); + return xlsxflat2xlst_bin(sResultDecryptFile, sTo, sTemp, params); + } + break; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX_PACKAGE: + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX_PACKAGE: + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX_PACKAGE: + { + return package2bin(sResultDecryptFile, sTo, sTemp, params); + } + break; } } return AVS_FILEUTILS_ERROR_CONVERT; } - _UINT32 mitcrypt2oot_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + _UINT32 mitcrypt2oot_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - //todo + // todo return AVS_FILEUTILS_ERROR_CONVERT_DRM_UNSUPPORTED; } - _UINT32 msVbaProject2Xml(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + _UINT32 msVbaProject2Xml(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { CVbaReader vbaReader(sFrom, sTo); @@ -3338,98 +3391,101 @@ namespace NExtractTools return 0; } - _UINT32 oox2mscrypt (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + _UINT32 oox2mscrypt(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring password = params.getSavePassword(); + std::wstring password = params.getSavePassword(); std::wstring documentID = params.getDocumentID(); ECMACryptFile cryptReader; - if (cryptReader.EncryptOfficeFile(sFrom, sTo, password, documentID) == false) + if (cryptReader.EncryptOfficeFile(sFrom, sTo, password, documentID) == false) { return AVS_FILEUTILS_ERROR_CONVERT; } return 0; } - _UINT32 fromMscrypt (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + _UINT32 fromMscrypt(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring password = params.getPassword(); + std::wstring password = params.getPassword(); - std::wstring sResultDecryptFile = sTemp + FILE_SEPARATOR_STR + L"uncrypt_file.oox"; + std::wstring sResultDecryptFile = sTemp + FILE_SEPARATOR_STR + L"uncrypt_file.oox"; - _UINT32 nRes = mscrypt2oox(sFrom, sResultDecryptFile, sTemp, params); + _UINT32 nRes = mscrypt2oox(sFrom, sResultDecryptFile, sTemp, params); if (!SUCCEEDED_X2T(nRes) && password.empty()) // qiaoshemei1 (1).xlsx - запрокченный xlsx - { - if (!params.getDontSaveAdditional()) - { - copyOrigin(sFrom, sTo); - } - return AVS_FILEUTILS_ERROR_CONVERT_DRM; - } + { + if (!params.getDontSaveAdditional()) + { + copyOrigin(sFrom, sTo); + } + return AVS_FILEUTILS_ERROR_CONVERT_DRM; + } nRes = processEncryptionError(nRes, sFrom, params); - if (SUCCEEDED_X2T(nRes)) - { - COfficeFileFormatChecker OfficeFileFormatChecker; + if (SUCCEEDED_X2T(nRes)) + { + COfficeFileFormatChecker OfficeFileFormatChecker; - if (OfficeFileFormatChecker.isOfficeFile(sResultDecryptFile)) - { - params.changeFormatFrom(OfficeFileFormatChecker.nFileType, OfficeFileFormatChecker.bMacroEnabled); - switch (OfficeFileFormatChecker.nFileType) - { - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX: - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM: + if (OfficeFileFormatChecker.isOfficeFile(sResultDecryptFile)) + { + params.changeFormatFrom(OfficeFileFormatChecker.nFileType, OfficeFileFormatChecker.bMacroEnabled); + switch (OfficeFileFormatChecker.nFileType) + { + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX: + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM: case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX: - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM: + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM: case AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM: case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF: { - return fromDocument(sResultDecryptFile, AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX, sTemp, params); - }break; - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX: - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM: - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX: - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM: + return fromDocument(sResultDecryptFile, AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX, sTemp, params); + } + break; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX: + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM: + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX: + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM: case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB: - { - return fromSpreadsheet(sResultDecryptFile, AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX, sTemp, params); - }break; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX: - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM: - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX: + { + return fromSpreadsheet(sResultDecryptFile, AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX, sTemp, params); + } + break; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX: + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM: + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX: case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX: - case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM: + case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM: case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM: { - return fromPresentation(sResultDecryptFile, AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX, sTemp, params); - }break; - } - } - } - return nRes; + return fromPresentation(sResultDecryptFile, AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX, sTemp, params); + } + break; + } + } + } + return nRes; } - _UINT32 fromMitcrypt (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + _UINT32 fromMitcrypt(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - //todo + // todo return AVS_FILEUTILS_ERROR_CONVERT_DRM_UNSUPPORTED; } - //html - _UINT32 html_array2docx_dir (const std::vector &arFiles, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + // html + _UINT32 html_array2docx_dir(const std::vector &arFiles, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - CHtmlFile2 oFile; - oFile.SetTmpDirectory(sTemp); - return (S_OK == oFile.OpenBatchHtml(arFiles, sTo)) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; + CHtmlFile2 oFile; + oFile.SetTmpDirectory(sTemp); + return (S_OK == oFile.OpenBatchHtml(arFiles, sTo)) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; } - _UINT32 html2docx_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 html2docx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { std::vector arFiles; arFiles.push_back(sFrom); return html_array2docx_dir(arFiles, sTo, sTemp, params); } - //html in container - _UINT32 html_zip2docx_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + // html in container + _UINT32 html_zip2docx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { std::vector arFiles; @@ -3447,42 +3503,42 @@ namespace NExtractTools NSFile::CFileBinary file; - if (file.CreateFileW(sTempHtml)) + if (file.CreateFileW(sTempHtml)) { file.WriteFile(buffer, size_stream); file.CloseFile(); arFiles.push_back(sTempHtml); } - delete []buffer; + delete[] buffer; } } - else //in zip + else // in zip { } return 0 == html_array2docx_dir(arFiles, sTo, sTemp, params) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; } - //mht - _UINT32 mht2docx_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + // mht + _UINT32 mht2docx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - CHtmlFile2 oFile; - oFile.SetTmpDirectory(sTemp); - return (S_OK == oFile.OpenMht(sFrom, sTo)) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; + CHtmlFile2 oFile; + oFile.SetTmpDirectory(sTemp); + return (S_OK == oFile.OpenMht(sFrom, sTo)) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; } - //epub - _UINT32 epub2docx_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + // epub + _UINT32 epub2docx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { - CEpubFile oFile; - oFile.SetTempDirectory(sTemp); - return (S_OK == oFile.Convert(sFrom, sTo, false)) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; + CEpubFile oFile; + oFile.SetTempDirectory(sTemp); + return (S_OK == oFile.Convert(sFrom, sTo, false)) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; } - _UINT32 fb2docx_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 fb2docx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { CFb2File fb2File; fb2File.SetTmpDirectory(sTemp); - return S_OK == fb2File.Open(sFrom, sTo) ? S_OK : AVS_FILEUTILS_ERROR_CONVERT; + return S_OK == fb2File.Open(sFrom, sTo) ? S_OK : AVS_FILEUTILS_ERROR_CONVERT; } - _UINT32 fb2docx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 fb2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { std::wstring sTempUnpackedDOCX = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); NSDirectory::CreateDirectory(sTempUnpackedDOCX); @@ -3495,103 +3551,108 @@ namespace NExtractTools return AVS_FILEUTILS_ERROR_CONVERT; } // mailmerge - _UINT32 convertmailmerge (const InputParamsMailMerge& oMailMergeSend,const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, bool bPaid, const std::wstring &sThemeDir, InputParams& params) - { - if (NULL == oMailMergeSend.mailFormat || NULL == oMailMergeSend.recordFrom || NULL == oMailMergeSend.recordTo) - return AVS_FILEUTILS_ERROR_CONVERT; + _UINT32 convertmailmerge( + const InputParamsMailMerge &oMailMergeSend, const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, bool bPaid, const std::wstring &sThemeDir, InputParams ¶ms) + { + if (NULL == oMailMergeSend.mailFormat || NULL == oMailMergeSend.recordFrom || NULL == oMailMergeSend.recordTo) + return AVS_FILEUTILS_ERROR_CONVERT; - _UINT32 nRes = 0; + _UINT32 nRes = 0; - std::wstring sFileFromDir = NSSystemPath::GetDirectoryName(sFrom); - std::wstring sFileToDir = NSSystemPath::GetDirectoryName(sTo); - std::wstring sImagesDirectory = sFileFromDir + FILE_SEPARATOR_STR +_T("media"); - NSDoctRenderer::DoctRendererFormat::FormatFile eTypeTo; - switch(*oMailMergeSend.mailFormat) - { - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX: - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM: - case AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM: - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF: - eTypeTo = NSDoctRenderer::DoctRendererFormat::FormatFile::DOCT; break; - case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF: - eTypeTo = NSDoctRenderer::DoctRendererFormat::FormatFile::PDF; break; - case AVS_OFFICESTUDIO_FILE_OTHER_HTMLZIP: - eTypeTo = NSDoctRenderer::DoctRendererFormat::FormatFile::HTML; break; - default: - eTypeTo = NSDoctRenderer::DoctRendererFormat::FormatFile::HTML; break; - } - std::wstring sJsonPath = sFileFromDir + FILE_SEPARATOR_STR +_T("Editor.json"); - int recordTo = *oMailMergeSend.recordFrom + 4; - if (recordTo > *oMailMergeSend.recordTo) - recordTo = *oMailMergeSend.recordTo; - NSDoctRenderer::CDoctrenderer oDoctRenderer(NULL != params.m_sAllFontsPath ? *params.m_sAllFontsPath : _T("")); - std::wstring sMailMergeXml = getMailMergeXml(sJsonPath, *oMailMergeSend.recordFrom, recordTo, *oMailMergeSend.to); - //посылаем выходную папку sFileFromDir, чтобы файлы лежали на одном уровне с папкой media, важно для дальнейшей конвертации в docx, pdf - std::wstring sXml = getDoctXml(NSDoctRenderer::DoctRendererFormat::FormatFile::DOCT, eTypeTo, sFrom, sFileFromDir, sImagesDirectory, sThemeDir, -1, sMailMergeXml, params); - std::wstring sResult; - oDoctRenderer.Execute(sXml, sResult); - if (-1 != sResult.find(_T("error"))) - { - std::wcerr << _T("DoctRenderer:") << sResult << std::endl; - nRes = AVS_FILEUTILS_ERROR_CONVERT; - } - else - { - nRes = AVS_FILEUTILS_ERROR_CONVERT; - XmlUtils::CXmlNode oRoot; - if (TRUE == oRoot.FromXmlString(sResult)) - { - XmlUtils::CXmlNode oMailMergeFields = oRoot.ReadNode(_T("MailMergeFields")); - std::vector oXmlNodes; - if (TRUE == oMailMergeFields.GetChilds(oXmlNodes)) - { - for(size_t i = 0; i < oXmlNodes.size(); ++i) - { - XmlUtils::CXmlNode & oXmlNode = oXmlNodes[i]; - if (oXmlNode.IsValid()) - { - std::wstring sFilePathIn = oXmlNode.GetAttribute(L"path"); - std::wstring wsFilePathInFilename = NSSystemPath::GetFileName(sFilePathIn); - std::wstring sFilePathOut = sFileToDir + FILE_SEPARATOR_STR + wsFilePathInFilename; - if (NSDoctRenderer::DoctRendererFormat::FormatFile::DOCT == eTypeTo) - { - sFilePathOut += L".docx"; + std::wstring sFileFromDir = NSSystemPath::GetDirectoryName(sFrom); + std::wstring sFileToDir = NSSystemPath::GetDirectoryName(sTo); + std::wstring sImagesDirectory = sFileFromDir + FILE_SEPARATOR_STR + _T("media"); + NSDoctRenderer::DoctRendererFormat::FormatFile eTypeTo; + switch (*oMailMergeSend.mailFormat) + { + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX: + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM: + case AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM: + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF: + eTypeTo = NSDoctRenderer::DoctRendererFormat::FormatFile::DOCT; + break; + case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF: + eTypeTo = NSDoctRenderer::DoctRendererFormat::FormatFile::PDF; + break; + case AVS_OFFICESTUDIO_FILE_OTHER_HTMLZIP: + eTypeTo = NSDoctRenderer::DoctRendererFormat::FormatFile::HTML; + break; + default: + eTypeTo = NSDoctRenderer::DoctRendererFormat::FormatFile::HTML; + break; + } + std::wstring sJsonPath = sFileFromDir + FILE_SEPARATOR_STR + _T("Editor.json"); + int recordTo = *oMailMergeSend.recordFrom + 4; + if (recordTo > *oMailMergeSend.recordTo) + recordTo = *oMailMergeSend.recordTo; + NSDoctRenderer::CDoctrenderer oDoctRenderer(NULL != params.m_sAllFontsPath ? *params.m_sAllFontsPath : _T("")); + std::wstring sMailMergeXml = getMailMergeXml(sJsonPath, *oMailMergeSend.recordFrom, recordTo, *oMailMergeSend.to); + // посылаем выходную папку sFileFromDir, чтобы файлы лежали на одном уровне с папкой media, важно для дальнейшей конвертации в docx, pdf + std::wstring sXml = getDoctXml(NSDoctRenderer::DoctRendererFormat::FormatFile::DOCT, eTypeTo, sFrom, sFileFromDir, sImagesDirectory, sThemeDir, -1, sMailMergeXml, params); + std::wstring sResult; + oDoctRenderer.Execute(sXml, sResult); + if (-1 != sResult.find(_T("error"))) + { + std::wcerr << _T("DoctRenderer:") << sResult << std::endl; + nRes = AVS_FILEUTILS_ERROR_CONVERT; + } + else + { + nRes = AVS_FILEUTILS_ERROR_CONVERT; + XmlUtils::CXmlNode oRoot; + if (TRUE == oRoot.FromXmlString(sResult)) + { + XmlUtils::CXmlNode oMailMergeFields = oRoot.ReadNode(_T("MailMergeFields")); + std::vector oXmlNodes; + if (TRUE == oMailMergeFields.GetChilds(oXmlNodes)) + { + for (size_t i = 0; i < oXmlNodes.size(); ++i) + { + XmlUtils::CXmlNode &oXmlNode = oXmlNodes[i]; + if (oXmlNode.IsValid()) + { + std::wstring sFilePathIn = oXmlNode.GetAttribute(L"path"); + std::wstring wsFilePathInFilename = NSSystemPath::GetFileName(sFilePathIn); + std::wstring sFilePathOut = sFileToDir + FILE_SEPARATOR_STR + wsFilePathInFilename; + if (NSDoctRenderer::DoctRendererFormat::FormatFile::DOCT == eTypeTo) + { + sFilePathOut += L".docx"; - std::wstring sTempDocx = sTemp + FILE_SEPARATOR_STR + wsFilePathInFilename + L"_DOCX"; - NSDirectory::CreateDirectory(sTempDocx); + std::wstring sTempDocx = sTemp + FILE_SEPARATOR_STR + wsFilePathInFilename + L"_DOCX"; + NSDirectory::CreateDirectory(sTempDocx); - BinDocxRW::CDocxSerializer m_oCDocxSerializer; - m_oCDocxSerializer.setIsNoBase64(params.getIsNoBase64()); - m_oCDocxSerializer.setFontDir(params.getFontPath()); + BinDocxRW::CDocxSerializer m_oCDocxSerializer; + m_oCDocxSerializer.setIsNoBase64(params.getIsNoBase64()); + m_oCDocxSerializer.setFontDir(params.getFontPath()); - std::wstring sXmlOptions; - std::wstring sThemePath; // will be filled by 'CreateDocxFolders' method - std::wstring sMediaPath; // will be filled by 'CreateDocxFolders' method - std::wstring sEmbedPath; // will be filled by 'CreateDocxFolders' method + std::wstring sXmlOptions; + std::wstring sThemePath; // will be filled by 'CreateDocxFolders' method + std::wstring sMediaPath; // will be filled by 'CreateDocxFolders' method + std::wstring sEmbedPath; // will be filled by 'CreateDocxFolders' method - m_oCDocxSerializer.CreateDocxFolders (sTempDocx, sThemePath, sMediaPath, sEmbedPath); - nRes = m_oCDocxSerializer.loadFromFile (sFilePathIn, sTempDocx, sXmlOptions, sThemePath, sMediaPath, sEmbedPath) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; - if (SUCCEEDED_X2T(nRes)) - { + m_oCDocxSerializer.CreateDocxFolders(sTempDocx, sThemePath, sMediaPath, sEmbedPath); + nRes = m_oCDocxSerializer.loadFromFile(sFilePathIn, sTempDocx, sXmlOptions, sThemePath, sMediaPath, sEmbedPath) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; + if (SUCCEEDED_X2T(nRes)) + { std::wstring sTempUnencrypted = sTemp + FILE_SEPARATOR_STR + wsFilePathInFilename + L"_unencrypted"; NSDirectory::CreateDirectory(sTempUnencrypted); nRes = dir2zipMscrypt(sTempDocx, sFilePathOut, sTempUnencrypted, params); - } - } - else if (NSDoctRenderer::DoctRendererFormat::FormatFile::PDF == eTypeTo) - { - sFilePathOut += _T(".pdf"); + } + } + else if (NSDoctRenderer::DoctRendererFormat::FormatFile::PDF == eTypeTo) + { + sFilePathOut += _T(".pdf"); - NSFonts::IApplicationFonts* pApplicationFonts = NSFonts::NSApplication::Create(); - initApplicationFonts(pApplicationFonts, params); - CPdfFile pdfWriter(pApplicationFonts); - pdfWriter.CreatePdf(params.getIsPDFA()); - pdfWriter.SetTempDirectory(sTemp); - pdfWriter.DocInfo(params.getTitle(), L"", L"", L""); + NSFonts::IApplicationFonts *pApplicationFonts = NSFonts::NSApplication::Create(); + initApplicationFonts(pApplicationFonts, params); + CPdfFile pdfWriter(pApplicationFonts); + pdfWriter.CreatePdf(params.getIsPDFA()); + pdfWriter.SetTempDirectory(sTemp); + pdfWriter.DocInfo(params.getTitle(), L"", L"", L""); - CConvertFromBinParams oBufferParams; - oBufferParams.m_sThemesDirectory = sThemeDir; + CConvertFromBinParams oBufferParams; + oBufferParams.m_sThemesDirectory = sThemeDir; std::wstring documentID = params.getDocumentID(); if (false == documentID.empty()) @@ -3601,29 +3662,29 @@ namespace NExtractTools if (false == password.empty()) pdfWriter.SetPassword(password); - int nReg = (bPaid == false) ? 0 : 1; - nRes = (S_OK == pdfWriter.OnlineWordToPdfFromBinary(sFilePathIn, sFilePathOut, &oBufferParams)) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; - RELEASEOBJECT(pApplicationFonts); - } - else if (NSDoctRenderer::DoctRendererFormat::FormatFile::HTML == eTypeTo) - { - sFilePathOut += _T(".html"); - nRes = NSFile::CFileBinary::Copy(sFilePathIn,sFilePathOut) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; - } - if (0 != nRes) - break; - sResult = string_replaceAll(sResult, L"\"" + sFilePathIn + L"\"", L"\"" + NSSystemPath::GetFileName(sFilePathOut) + L"\""); - } - } - } - } - if (SUCCEEDED_X2T(nRes)) - NSFile::CFileBinary::SaveToFile(sTo, sResult); - } - return nRes; - } + int nReg = (bPaid == false) ? 0 : 1; + nRes = (S_OK == pdfWriter.OnlineWordToPdfFromBinary(sFilePathIn, sFilePathOut, &oBufferParams)) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; + RELEASEOBJECT(pApplicationFonts); + } + else if (NSDoctRenderer::DoctRendererFormat::FormatFile::HTML == eTypeTo) + { + sFilePathOut += _T(".html"); + nRes = NSFile::CFileBinary::Copy(sFilePathIn, sFilePathOut) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; + } + if (0 != nRes) + break; + sResult = string_replaceAll(sResult, L"\"" + sFilePathIn + L"\"", L"\"" + NSSystemPath::GetFileName(sFilePathOut) + L"\""); + } + } + } + } + if (SUCCEEDED_X2T(nRes)) + NSFile::CFileBinary::SaveToFile(sTo, sResult); + } + return nRes; + } - std::string checkPrintPages(InputParams& params) + std::string checkPrintPages(InputParams ¶ms) { if (NULL == params.m_sJsonParams) return ""; @@ -3673,9 +3734,9 @@ namespace NExtractTools return U_TO_UTF8(sPages); } - std::vector getPrintPages(const std::string& sPages, int nPagesCount) + std::vector getPrintPages(const std::string &sPages, int nPagesCount) { - const char* buffer = sPages.c_str(); + const char *buffer = sPages.c_str(); size_t nCur = 0; size_t nLen = sPages.length(); @@ -3736,96 +3797,12 @@ namespace NExtractTools return arPages; } - _UINT32 PdfDjvuXpsToRenderer(IOfficeDrawingFile** ppReader, IRenderer* pRenderer, const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params, NSFonts::IApplicationFonts* pApplicationFonts, const std::string& sPages = "") - { - _UINT32 nRes = 0; - IOfficeDrawingFile* pReader = NULL; - if (AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatFrom) - { - pReader = new CPdfFile(pApplicationFonts); - } - else if (AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_DJVU == nFormatFrom) - { - pReader = new CDjVuFile(pApplicationFonts); - } - else if (AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_XPS == nFormatFrom) - { - pReader = new CXpsFile(pApplicationFonts); - } - else - nRes = AVS_FILEUTILS_ERROR_CONVERT; - if (SUCCEEDED_X2T(nRes)) - { - *ppReader = pReader; - pReader->SetTempDirectory(sTemp); - - std::wstring sPassword = params.getPassword(); - - bool bResult = pReader->LoadFromFile(sFrom.c_str(), L"", sPassword, sPassword); - if (bResult) - { - int nPagesCount = pReader->GetPagesCount(); - - bool bIsUsePages = sPages.empty() ? false : true; - std::vector arPages; - if (bIsUsePages) - arPages = getPrintPages(sPages, nPagesCount); - - for (int i = 0; i < nPagesCount; ++i) - { - if (bIsUsePages && !arPages[i]) - continue; - - pRenderer->NewPage(); - pRenderer->BeginCommand(c_nPageType); - - double dPageDpiX, dPageDpiY; - double dWidth, dHeight; - pReader->GetPageInfo(i, &dWidth, &dHeight, &dPageDpiX, &dPageDpiY); - - dWidth *= 25.4 / dPageDpiX; - dHeight *= 25.4 / dPageDpiY; - - pRenderer->put_Width(dWidth); - pRenderer->put_Height(dHeight); - - pReader->DrawPageOnRenderer(pRenderer, i, NULL); - - pRenderer->EndCommand(c_nPageType); - } - - } - else - { - nRes = AVS_FILEUTILS_ERROR_CONVERT; - if (AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatFrom) - { - CPdfFile* pPdfReader = static_cast(pReader); - if (PdfFile::errorEncrypted == pPdfReader->GetError()) - { - if (sPassword.empty()) - { - if (!params.getDontSaveAdditional()) - { - copyOrigin(sFrom, *params.m_sFileTo); - } - nRes = AVS_FILEUTILS_ERROR_CONVERT_DRM; - } - else - { - nRes = AVS_FILEUTILS_ERROR_CONVERT_PASSWORD; - } - } - } - } - } - return nRes; - } - - _UINT32 PdfDjvuXpsToImage(IOfficeDrawingFile** ppReader, const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params, NSFonts::IApplicationFonts* pApplicationFonts) + _UINT32 PdfDjvuXpsToRenderer( + IOfficeDrawingFile **ppReader, IRenderer *pRenderer, const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms, + NSFonts::IApplicationFonts *pApplicationFonts, const std::string &sPages = "") { _UINT32 nRes = 0; - IOfficeDrawingFile* pReader = NULL; + IOfficeDrawingFile *pReader = NULL; if (AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatFrom) { pReader = new CPdfFile(pApplicationFonts); @@ -3850,7 +3827,94 @@ namespace NExtractTools bool bResult = pReader->LoadFromFile(sFrom.c_str(), L"", sPassword, sPassword); if (bResult) { - //default as in CMetafileToRenderterRaster + int nPagesCount = pReader->GetPagesCount(); + + bool bIsUsePages = sPages.empty() ? false : true; + std::vector arPages; + if (bIsUsePages) + arPages = getPrintPages(sPages, nPagesCount); + + for (int i = 0; i < nPagesCount; ++i) + { + if (bIsUsePages && !arPages[i]) + continue; + + pRenderer->NewPage(); + pRenderer->BeginCommand(c_nPageType); + + double dPageDpiX, dPageDpiY; + double dWidth, dHeight; + pReader->GetPageInfo(i, &dWidth, &dHeight, &dPageDpiX, &dPageDpiY); + + dWidth *= 25.4 / dPageDpiX; + dHeight *= 25.4 / dPageDpiY; + + pRenderer->put_Width(dWidth); + pRenderer->put_Height(dHeight); + + pReader->DrawPageOnRenderer(pRenderer, i, NULL); + + pRenderer->EndCommand(c_nPageType); + } + } + else + { + nRes = AVS_FILEUTILS_ERROR_CONVERT; + if (AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatFrom) + { + CPdfFile *pPdfReader = static_cast(pReader); + if (PdfFile::errorEncrypted == pPdfReader->GetError()) + { + if (sPassword.empty()) + { + if (!params.getDontSaveAdditional()) + { + copyOrigin(sFrom, *params.m_sFileTo); + } + nRes = AVS_FILEUTILS_ERROR_CONVERT_DRM; + } + else + { + nRes = AVS_FILEUTILS_ERROR_CONVERT_PASSWORD; + } + } + } + } + } + return nRes; + } + + _UINT32 PdfDjvuXpsToImage( + IOfficeDrawingFile **ppReader, const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms, + NSFonts::IApplicationFonts *pApplicationFonts) + { + _UINT32 nRes = 0; + IOfficeDrawingFile *pReader = NULL; + if (AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatFrom) + { + pReader = new CPdfFile(pApplicationFonts); + } + else if (AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_DJVU == nFormatFrom) + { + pReader = new CDjVuFile(pApplicationFonts); + } + else if (AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_XPS == nFormatFrom) + { + pReader = new CXpsFile(pApplicationFonts); + } + else + nRes = AVS_FILEUTILS_ERROR_CONVERT; + if (SUCCEEDED_X2T(nRes)) + { + *ppReader = pReader; + pReader->SetTempDirectory(sTemp); + + std::wstring sPassword = params.getPassword(); + + bool bResult = pReader->LoadFromFile(sFrom.c_str(), L"", sPassword, sPassword); + if (bResult) + { + // default as in CMetafileToRenderterRaster int nRasterFormat = 4; int nSaveType = 2; bool bIsOnlyFirst = true; @@ -3859,7 +3923,7 @@ namespace NExtractTools int nRasterH = 100; if (NULL != params.m_oThumbnail) { - InputParamsThumbnail* oThumbnail = params.m_oThumbnail; + InputParamsThumbnail *oThumbnail = params.m_oThumbnail; if (NULL != oThumbnail->format) { nRasterFormat = *oThumbnail->format; @@ -3936,7 +4000,7 @@ namespace NExtractTools } else { - sFileTo = sThumbnailDir + FILE_SEPARATOR_STR + L"image" + std::to_wstring(i+1) + sFileToExt; + sFileTo = sThumbnailDir + FILE_SEPARATOR_STR + L"image" + std::to_wstring(i + 1) + sFileToExt; } pReader->ConvertToRaster(i, sFileTo, nRasterFormat, nRasterWCur, nRasterHCur); } @@ -3952,7 +4016,7 @@ namespace NExtractTools nRes = AVS_FILEUTILS_ERROR_CONVERT; if (AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatFrom) { - CPdfFile* pPdfReader = static_cast(pReader); + CPdfFile *pPdfReader = static_cast(pReader); if (PdfFile::errorEncrypted == pPdfReader->GetError()) { if (sPassword.empty()) @@ -3974,56 +4038,66 @@ namespace NExtractTools return nRes; } - _UINT32 fromDocxDir(const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams& params, const std::wstring &sDocxFile) + _UINT32 fromDocxDir( + const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams ¶ms, const std::wstring &sDocxFile) { _UINT32 nRes = 0; std::wstring sFromWithChanges = sFrom; bool bIsNeedDoct = false; switch (nFormatTo) { - // перечислить все "документные" форматы, которым нужна конвертация через doct - case AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML: - case AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML_IN_CONTAINER: - case AVS_OFFICESTUDIO_FILE_DOCUMENT_FB2: - case AVS_OFFICESTUDIO_FILE_DOCUMENT_EPUB: - case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF: + // перечислить все "документные" форматы, которым нужна конвертация через doct + case AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML: + case AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML_IN_CONTAINER: + case AVS_OFFICESTUDIO_FILE_DOCUMENT_FB2: + case AVS_OFFICESTUDIO_FILE_DOCUMENT_EPUB: + case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF: + bIsNeedDoct = true; + break; + default: + if (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo) bIsNeedDoct = true; - break; - default: - if (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo) - bIsNeedDoct = true; - break; + break; } if (0 != (AVS_OFFICESTUDIO_FILE_DOCUMENT & nFormatTo) && !bIsNeedDoct) { - if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX == nFormatTo || AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM == nFormatTo || - AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX == nFormatTo || AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM == nFormatTo || - AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM == nFormatTo || AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF == nFormatTo) + if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX == nFormatTo || AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM == nFormatTo || AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX == nFormatTo || + AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM == nFormatTo || AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM == nFormatTo || AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF == nFormatTo) { - if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM == nFormatTo || - AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX == nFormatTo || - AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM == nFormatTo) + if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM == nFormatTo || AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX == nFormatTo || AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM == nFormatTo) { std::wstring sCTFrom = L"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"; - switch(*params.m_nFormatFrom) + switch (*params.m_nFormatFrom) { - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM: sCTFrom = L"application/vnd.ms-word.document.macroEnabled.main+xml"; break; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX: sCTFrom = L"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml"; break; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM: sCTFrom = L"application/vnd.ms-word.template.macroEnabledTemplate.main+xml"; break; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM: + sCTFrom = L"application/vnd.ms-word.document.macroEnabled.main+xml"; + break; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX: + sCTFrom = L"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml"; + break; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM: + sCTFrom = L"application/vnd.ms-word.template.macroEnabledTemplate.main+xml"; + break; } std::wstring sCTTo; - switch(nFormatTo) + switch (nFormatTo) { - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM: sCTTo = L"application/vnd.ms-word.document.macroEnabled.main+xml"; break; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX: sCTTo = L"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml"; break; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM: sCTTo = L"application/vnd.ms-word.template.macroEnabledTemplate.main+xml"; break; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM: + sCTTo = L"application/vnd.ms-word.document.macroEnabled.main+xml"; + break; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX: + sCTTo = L"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml"; + break; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM: + sCTTo = L"application/vnd.ms-word.template.macroEnabledTemplate.main+xml"; + break; } nRes = replaceContentType(sFromWithChanges, sCTFrom, sCTTo); } else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM == nFormatTo) { - std::wstring sCT= L""; + std::wstring sCT = L""; nRes = addContentType(sFromWithChanges, sCT); } else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF == nFormatTo) @@ -4123,7 +4197,7 @@ namespace NExtractTools nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; return nRes; } - _UINT32 fromDoctBin(const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams& params) + _UINT32 fromDoctBin(const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams ¶ms) { _UINT32 nRes = 0; if (AVS_OFFICESTUDIO_FILE_TEAMLAB_DOCY == nFormatTo) @@ -4184,9 +4258,9 @@ namespace NExtractTools nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; return nRes; } - _UINT32 fromDocument(const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTemp, InputParams& params) + _UINT32 fromDocument(const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTemp, InputParams ¶ms) { - std::wstring sTo = *params.m_sFileTo; + std::wstring sTo = *params.m_sFileTo; int nFormatTo = AVS_OFFICESTUDIO_FILE_UNKNOWN; if (NULL != params.m_nFormatTo) nFormatTo = *params.m_nFormatTo; @@ -4200,140 +4274,138 @@ namespace NExtractTools if (NULL != params.m_bPaid) bPaid = *params.m_bPaid; - _UINT32 nRes = 0; - if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX_FLAT == nFormatFrom) - { - if (AVS_OFFICESTUDIO_FILE_CANVAS_WORD == nFormatTo) - { + _UINT32 nRes = 0; + if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX_FLAT == nFormatFrom) + { + if (AVS_OFFICESTUDIO_FILE_CANVAS_WORD == nFormatTo) + { nRes = docxflat2doct_bin(sFrom, sTo, sTemp, params); - } - else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT == nFormatTo) - { + } + else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT == nFormatTo) + { nRes = docxflat2odt(sFrom, sTo, sTemp, params); - } - else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX == nFormatTo) - { - nRes = docxflat2docx(sFrom, sTo, sTemp, params); - } - else - { - std::wstring sDoctDir = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); - NSDirectory::CreateDirectory(sDoctDir); - std::wstring sTFile = sDoctDir + FILE_SEPARATOR_STR + _T("Editor.bin"); + } + else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX == nFormatTo) + { + nRes = docxflat2docx(sFrom, sTo, sTemp, params); + } + else + { + std::wstring sDoctDir = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); + NSDirectory::CreateDirectory(sDoctDir); + std::wstring sTFile = sDoctDir + FILE_SEPARATOR_STR + _T("Editor.bin"); - if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX_FLAT == nFormatFrom) - nRes = docxflat2doct_bin(sFrom, sTFile, sTemp, params); - else - nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; + if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX_FLAT == nFormatFrom) + nRes = docxflat2doct_bin(sFrom, sTFile, sTemp, params); + else + nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; - if (SUCCEEDED_X2T(nRes)) - { - nRes = fromDoctBin(sTFile, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params); - } - } - } - else - { - std::wstring sDocxFile; - std::wstring sDocxDir = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); - NSDirectory::CreateDirectory(sDocxDir); + if (SUCCEEDED_X2T(nRes)) + { + nRes = fromDoctBin(sTFile, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params); + } + } + } + else + { + std::wstring sDocxFile; + std::wstring sDocxDir = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); + NSDirectory::CreateDirectory(sDocxDir); - if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX == nFormatFrom || - AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM == nFormatFrom || - AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF == nFormatFrom) - { - sDocxFile = sFrom; - if (params.getFromChanges()) - { - params.setFromChanges(false); - nRes = apply_changes(sFrom, sTo, NSDoctRenderer::DoctRendererFormat::FormatFile::DOCT, sThemeDir, sDocxFile, params); - } - nRes = zip2dir(sDocxFile, sDocxDir); - } - else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM == nFormatFrom) - { - if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX == nFormatTo || AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX == nFormatTo - || AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF == nFormatTo || AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM == nFormatTo) - { - nRes = docm2docx_dir(sFrom, sDocxDir, params); - } - else - { - nRes = zip2dir(sFrom, sDocxDir); - } - } - else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX == nFormatFrom) - { - nRes = dotx2docx_dir(sFrom, sDocxDir, params); - } - else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM == nFormatFrom) - { - if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX == nFormatTo || AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX == nFormatTo - || AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF == nFormatTo || AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM == nFormatTo) - { - nRes = dotm2docx_dir(sFrom, sDocxDir, params); - } - else - { - nRes = dotm2docm_dir(sFrom, sDocxDir, params); - } - } - else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC == nFormatFrom) - { - nRes = doc2docx_dir(sFrom, sDocxDir, sTemp, params); - } - else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT == nFormatFrom || AVS_OFFICESTUDIO_FILE_DOCUMENT_OTT == nFormatFrom) - { - nRes = odf2oox_dir(sFrom, sDocxDir, sTemp, params); - } - else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT_FLAT == nFormatFrom) - { - nRes = odf_flat2oox_dir(sFrom, sDocxDir, sTemp, params); - } - else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_RTF == nFormatFrom) - { - nRes = rtf2docx_dir(sFrom, sDocxDir, sTemp, params); - } - else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT == nFormatFrom || - AVS_OFFICESTUDIO_FILE_DOCUMENT_XML == nFormatFrom) - { - nRes = txt2docx_dir(sFrom, sDocxDir, sTemp, params); - } - else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_FB2 == nFormatFrom) - { - nRes = fb2docx_dir(sFrom, sDocxDir, sTemp, params); - } - else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_EPUB == nFormatFrom) - { - nRes = epub2docx_dir(sFrom, sDocxDir, sTemp, params); - } - else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML == nFormatFrom) - { - nRes = html2docx_dir(sFrom, sDocxDir, sTemp, params); - } - else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML_IN_CONTAINER == nFormatFrom) - { - nRes = html_zip2docx_dir(sFrom, sDocxDir, sTemp, params); - } - else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX_PACKAGE == nFormatFrom) - { - nRes = package2ooxml_dir(sFrom, sDocxDir, sTemp, params); - } - else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_MHT == nFormatFrom) - { - nRes = mht2docx_dir(sFrom, sDocxDir, sTemp, params); - } - else - nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; - if (SUCCEEDED_X2T(nRes)) - { - nRes = fromDocxDir(sDocxDir, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params, sDocxFile); - } - } - return nRes; - } + if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX == nFormatFrom || AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM == nFormatFrom || AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF == nFormatFrom) + { + sDocxFile = sFrom; + if (params.getFromChanges()) + { + params.setFromChanges(false); + nRes = apply_changes(sFrom, sTo, NSDoctRenderer::DoctRendererFormat::FormatFile::DOCT, sThemeDir, sDocxFile, params); + } + nRes = zip2dir(sDocxFile, sDocxDir); + } + else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM == nFormatFrom) + { + if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX == nFormatTo || AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX == nFormatTo || AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF == nFormatTo || + AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM == nFormatTo) + { + nRes = docm2docx_dir(sFrom, sDocxDir, params); + } + else + { + nRes = zip2dir(sFrom, sDocxDir); + } + } + else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX == nFormatFrom) + { + nRes = dotx2docx_dir(sFrom, sDocxDir, params); + } + else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM == nFormatFrom) + { + if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX == nFormatTo || AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX == nFormatTo || AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF == nFormatTo || + AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM == nFormatTo) + { + nRes = dotm2docx_dir(sFrom, sDocxDir, params); + } + else + { + nRes = dotm2docm_dir(sFrom, sDocxDir, params); + } + } + else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC == nFormatFrom) + { + nRes = doc2docx_dir(sFrom, sDocxDir, sTemp, params); + } + else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT == nFormatFrom || AVS_OFFICESTUDIO_FILE_DOCUMENT_OTT == nFormatFrom) + { + nRes = odf2oox_dir(sFrom, sDocxDir, sTemp, params); + } + else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT_FLAT == nFormatFrom) + { + nRes = odf_flat2oox_dir(sFrom, sDocxDir, sTemp, params); + } + else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_RTF == nFormatFrom) + { + nRes = rtf2docx_dir(sFrom, sDocxDir, sTemp, params); + } + else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT == nFormatFrom || AVS_OFFICESTUDIO_FILE_DOCUMENT_XML == nFormatFrom) + { + nRes = txt2docx_dir(sFrom, sDocxDir, sTemp, params); + } + else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_FB2 == nFormatFrom) + { + nRes = fb2docx_dir(sFrom, sDocxDir, sTemp, params); + } + else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_EPUB == nFormatFrom) + { + nRes = epub2docx_dir(sFrom, sDocxDir, sTemp, params); + } + else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML == nFormatFrom) + { + nRes = html2docx_dir(sFrom, sDocxDir, sTemp, params); + } + else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML_IN_CONTAINER == nFormatFrom) + { + nRes = html_zip2docx_dir(sFrom, sDocxDir, sTemp, params); + } + else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX_PACKAGE == nFormatFrom) + { + nRes = package2ooxml_dir(sFrom, sDocxDir, sTemp, params); + } + else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_MHT == nFormatFrom) + { + nRes = mht2docx_dir(sFrom, sDocxDir, sTemp, params); + } + else + nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; + if (SUCCEEDED_X2T(nRes)) + { + nRes = fromDocxDir(sDocxDir, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params, sDocxFile); + } + } + return nRes; + } - _UINT32 fromXlsbXlsxDir(const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams& params, const std::wstring &sXlsxFile) + _UINT32 fromXlsbXlsxDir( + const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams ¶ms, const std::wstring &sXlsxFile) { _UINT32 nRes = S_OK; if (AVS_OFFICESTUDIO_FILE_OTHER_JSON == nFormatTo) @@ -4348,12 +4420,9 @@ namespace NExtractTools { nRes = xlsx_dir2xlst(sFrom, sTo, sTemp, params, true, sXlsxFile); } - else if ((0 != (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo)) || - AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatTo || - AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV == nFormatTo) + else if ((0 != (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo)) || AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatTo || AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV == nFormatTo) { - if (params.needConvertToOrigin(AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX) && - ((0 != (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo)) || AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatTo)) + if (params.needConvertToOrigin(AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX) && ((0 != (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo)) || AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatTo)) { std::wstring sToRender = sXlsxFile; if (sToRender.empty()) @@ -4392,29 +4461,42 @@ namespace NExtractTools nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; return nRes; } - _UINT32 fromXlsxDir(const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams& params, const std::wstring &sXlsxFile) - { - _UINT32 nRes = 0; - if (0 != (AVS_OFFICESTUDIO_FILE_SPREADSHEET & nFormatTo) && AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV != nFormatTo) - { - if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX == nFormatTo || AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM == nFormatTo || - AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX == nFormatTo || AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM == nFormatTo) + _UINT32 fromXlsxDir( + const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams ¶ms, const std::wstring &sXlsxFile) + { + _UINT32 nRes = 0; + if (0 != (AVS_OFFICESTUDIO_FILE_SPREADSHEET & nFormatTo) && AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV != nFormatTo) + { + if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX == nFormatTo || AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM == nFormatTo || AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX == nFormatTo || + AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM == nFormatTo) { if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM == nFormatTo || AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX == nFormatTo || AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM == nFormatTo) { std::wstring sCTFrom = _T("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"); - switch(*params.m_nFormatFrom) + switch (*params.m_nFormatFrom) { - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM: sCTFrom = _T("application/vnd.ms-excel.sheet.macroEnabled.main+xml");break; - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX: sCTFrom = _T("application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml");break; - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM: sCTFrom = _T("application/vnd.ms-excel.template.macroEnabled.main+xml");break; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM: + sCTFrom = _T("application/vnd.ms-excel.sheet.macroEnabled.main+xml"); + break; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX: + sCTFrom = _T("application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml"); + break; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM: + sCTFrom = _T("application/vnd.ms-excel.template.macroEnabled.main+xml"); + break; } std::wstring sCTTo; - switch(nFormatTo) + switch (nFormatTo) { - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM: sCTTo = _T("application/vnd.ms-excel.sheet.macroEnabled.main+xml");break; - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX: sCTTo = _T("application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml");break; - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM: sCTTo = _T("application/vnd.ms-excel.template.macroEnabled.main+xml");break; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM: + sCTTo = _T("application/vnd.ms-excel.sheet.macroEnabled.main+xml"); + break; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX: + sCTTo = _T("application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml"); + break; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM: + sCTTo = _T("application/vnd.ms-excel.template.macroEnabled.main+xml"); + break; } nRes = replaceContentType(sFrom, sCTFrom, sCTTo); } @@ -4422,74 +4504,74 @@ namespace NExtractTools { nRes = dir2zipMscrypt(sFrom, sTo, sTemp, params); } - } + } else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS == nFormatTo) { nRes = xlsx_dir2ods(sFrom, sTo, sTemp, params, false); } - //else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV == nFormatTo) + // else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV == nFormatTo) //{ // nRes = xlsx_dir2csv(sFrom, sTo, sTemp, params); - //} + // } else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_OTS == nFormatTo) { nRes = xlsx_dir2ods(sFrom, sTo, sTemp, params, true); } else nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; - } - else - { - nRes = fromXlsbXlsxDir(sFrom, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params, sXlsxFile); - } - return nRes; - } - _UINT32 fromXlstBin(const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams& params) - { - _UINT32 nRes = 0; - if (AVS_OFFICESTUDIO_FILE_TEAMLAB_XLSY == nFormatTo) - { - std::wstring sFromDir = NSDirectory::GetFolderPath(sFrom); - nRes = dir2zip(sFromDir, sTo); - } - else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV == nFormatTo) - { - nRes = xlst_bin2csv(sFrom, sTo, sTemp, sThemeDir, params); - } - else if (AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatTo) - { - NSDoctRenderer::DoctRendererFormat::FormatFile eFromType = NSDoctRenderer::DoctRendererFormat::FormatFile::XLST; - nRes = doct_bin2pdf(eFromType, sFrom, sTo, sTemp, bPaid, sThemeDir, params); - } - else if (0 != (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo)) - { - NSDoctRenderer::DoctRendererFormat::FormatFile eFromType = NSDoctRenderer::DoctRendererFormat::FormatFile::XLST; - nRes = doct_bin2image(eFromType, sFrom, sTo, sTemp, bPaid, sThemeDir, params); - } - else if (0 != (AVS_OFFICESTUDIO_FILE_SPREADSHEET & nFormatTo)) - { - std::wstring sXlsxDir = sTemp + FILE_SEPARATOR_STR + _T("xlsx_unpacked"); - if (true == NSDirectory::CreateDirectory(sXlsxDir)) - { - params.m_bMacro = AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM == nFormatTo || AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM == nFormatTo; - nRes = xlst_bin2xlsx_dir(sFrom, sTo, sXlsxDir, sThemeDir, params); - if (SUCCEEDED_X2T(nRes)) - { - std::wstring sXlsxFile; - nRes = fromXlsxDir(sXlsxDir, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params, sXlsxFile); - } - } - else - { - nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; - } - } - else - nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; - return nRes; - } - _UINT32 fromSpreadsheet(const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTemp, InputParams& params) - { + } + else + { + nRes = fromXlsbXlsxDir(sFrom, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params, sXlsxFile); + } + return nRes; + } + _UINT32 fromXlstBin(const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams ¶ms) + { + _UINT32 nRes = 0; + if (AVS_OFFICESTUDIO_FILE_TEAMLAB_XLSY == nFormatTo) + { + std::wstring sFromDir = NSDirectory::GetFolderPath(sFrom); + nRes = dir2zip(sFromDir, sTo); + } + else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV == nFormatTo) + { + nRes = xlst_bin2csv(sFrom, sTo, sTemp, sThemeDir, params); + } + else if (AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatTo) + { + NSDoctRenderer::DoctRendererFormat::FormatFile eFromType = NSDoctRenderer::DoctRendererFormat::FormatFile::XLST; + nRes = doct_bin2pdf(eFromType, sFrom, sTo, sTemp, bPaid, sThemeDir, params); + } + else if (0 != (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo)) + { + NSDoctRenderer::DoctRendererFormat::FormatFile eFromType = NSDoctRenderer::DoctRendererFormat::FormatFile::XLST; + nRes = doct_bin2image(eFromType, sFrom, sTo, sTemp, bPaid, sThemeDir, params); + } + else if (0 != (AVS_OFFICESTUDIO_FILE_SPREADSHEET & nFormatTo)) + { + std::wstring sXlsxDir = sTemp + FILE_SEPARATOR_STR + _T("xlsx_unpacked"); + if (true == NSDirectory::CreateDirectory(sXlsxDir)) + { + params.m_bMacro = AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM == nFormatTo || AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM == nFormatTo; + nRes = xlst_bin2xlsx_dir(sFrom, sTo, sXlsxDir, sThemeDir, params); + if (SUCCEEDED_X2T(nRes)) + { + std::wstring sXlsxFile; + nRes = fromXlsxDir(sXlsxDir, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params, sXlsxFile); + } + } + else + { + nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; + } + } + else + nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; + return nRes; + } + _UINT32 fromSpreadsheet(const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTemp, InputParams ¶ms) + { std::wstring sTo = *params.m_sFileTo; int nFormatTo = AVS_OFFICESTUDIO_FILE_UNKNOWN; if (NULL != params.m_nFormatTo) @@ -4510,28 +4592,24 @@ namespace NExtractTools if (NULL != params.m_bPaid) bPaid = *params.m_bPaid; - _UINT32 nRes = 0; + _UINT32 nRes = 0; std::wstring sXlsxFile; - if ( (AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV == nFormatFrom) && - (AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET == nFormatTo || - AVS_OFFICESTUDIO_FILE_OTHER_JSON == nFormatTo)) - { - nRes = csv2xlst_bin(sFrom, sTo, params); - } - else - { - std::wstring sXlsxDir = sTemp + FILE_SEPARATOR_STR + _T("xlsx_unpacked"); - NSDirectory::CreateDirectory(sXlsxDir); + if ((AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV == nFormatFrom) && (AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET == nFormatTo || AVS_OFFICESTUDIO_FILE_OTHER_JSON == nFormatTo)) + { + nRes = csv2xlst_bin(sFrom, sTo, params); + } + else + { + std::wstring sXlsxDir = sTemp + FILE_SEPARATOR_STR + _T("xlsx_unpacked"); + NSDirectory::CreateDirectory(sXlsxDir); - if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB == nFormatFrom && - !((AVS_OFFICESTUDIO_FILE_CANVAS & nFormatTo) || (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo) || - (AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatTo))) - { - nRes = xlsb2xlsx_dir(sFrom, sXlsxDir, sTemp, params); - } - else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX == nFormatFrom || - AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB == nFormatFrom) - { + if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB == nFormatFrom && + !((AVS_OFFICESTUDIO_FILE_CANVAS & nFormatTo) || (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo) || (AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatTo))) + { + nRes = xlsb2xlsx_dir(sFrom, sXlsxDir, sTemp, params); + } + else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX == nFormatFrom || AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB == nFormatFrom) + { sXlsxFile = sFrom; if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX == nFormatFrom && params.getFromChanges()) { @@ -4541,18 +4619,19 @@ namespace NExtractTools nRes = zip2dir(sXlsxFile, sXlsxDir); if (!SUCCEEDED_X2T(nRes)) { - //check crypt + // check crypt COfficeFileFormatChecker OfficeFileFormatChecker; if (OfficeFileFormatChecker.isOfficeFile(sFrom)) { if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_OTHER_MS_OFFCRYPTO) { - std::wstring sResultDecryptFile = sTemp + FILE_SEPARATOR_STR + L"uncrypt_file.oox"; + std::wstring sResultDecryptFile = sTemp + FILE_SEPARATOR_STR + L"uncrypt_file.oox"; // test protect bool isOldPassword = params.hasPassword(); const std::wstring sOldPassword = params.getPassword(); - if (isOldPassword) delete params.m_sPassword; + if (isOldPassword) + delete params.m_sPassword; params.m_sPassword = new std::wstring(L"VelvetSweatshop"); nRes = mscrypt2oox(sFrom, sResultDecryptFile, sTemp, params); @@ -4575,100 +4654,121 @@ namespace NExtractTools nRes = mitcrypt2oox(sFrom, sTo, sTemp, params); } } - } - else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM == nFormatFrom) - { - if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX == nFormatTo || AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX == nFormatTo) - { - nRes = xlsm2xlsx_dir(sFrom, sXlsxDir, params); - } - else - { - nRes = zip2dir(sFrom, sXlsxDir); - } - } - else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX == nFormatFrom) - { - nRes = xltx2xlsx_dir(sFrom, sXlsxDir, params); - } - else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM == nFormatFrom) - { - if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX == nFormatTo || AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX == nFormatTo) - { - nRes = xltm2xlsx_dir(sFrom, sXlsxDir, params); - } - else - { - nRes = xltm2xlsm_dir(sFrom, sXlsxDir, params); - } - } - else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS == nFormatFrom) - { - nRes = xls2xlsx_dir(sFrom, sXlsxDir, sTemp, params); - } - else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX_FLAT == nFormatFrom) - { - nRes = xlsxflat2xlsx_dir(sFrom, sXlsxDir, sTemp, params); - } - else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS == nFormatFrom || AVS_OFFICESTUDIO_FILE_SPREADSHEET_OTS == nFormatFrom) - { - nRes = odf2oox_dir(sFrom, sXlsxDir, sTemp, params); - } - else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS_FLAT == nFormatFrom) - { - nRes = odf_flat2oox_dir(sFrom, sXlsxDir, sTemp, params); - } - else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX_PACKAGE == nFormatFrom) - { - nRes = package2ooxml_dir(sFrom, sXlsxDir, sTemp, params); - } - else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV == nFormatFrom) - { - nRes = csv2xlsx_dir(sFrom, sXlsxDir, sTemp, params); - *params.m_nFormatFrom = AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX; - } - else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_XML == nFormatFrom) - { - nRes = xml2xlsx_dir(sFrom, sXlsxDir, sTemp, params); - } - else - nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; - if (SUCCEEDED_X2T(nRes)) - { - nRes = fromXlsxDir(sXlsxDir, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params, sXlsxFile); - } - } - return nRes; - } + } + else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM == nFormatFrom) + { + if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX == nFormatTo || AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX == nFormatTo) + { + nRes = xlsm2xlsx_dir(sFrom, sXlsxDir, params); + } + else + { + nRes = zip2dir(sFrom, sXlsxDir); + } + } + else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX == nFormatFrom) + { + nRes = xltx2xlsx_dir(sFrom, sXlsxDir, params); + } + else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM == nFormatFrom) + { + if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX == nFormatTo || AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX == nFormatTo) + { + nRes = xltm2xlsx_dir(sFrom, sXlsxDir, params); + } + else + { + nRes = xltm2xlsm_dir(sFrom, sXlsxDir, params); + } + } + else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS == nFormatFrom) + { + nRes = xls2xlsx_dir(sFrom, sXlsxDir, sTemp, params); + } + else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX_FLAT == nFormatFrom) + { + nRes = xlsxflat2xlsx_dir(sFrom, sXlsxDir, sTemp, params); + } + else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS == nFormatFrom || AVS_OFFICESTUDIO_FILE_SPREADSHEET_OTS == nFormatFrom) + { + nRes = odf2oox_dir(sFrom, sXlsxDir, sTemp, params); + } + else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS_FLAT == nFormatFrom) + { + nRes = odf_flat2oox_dir(sFrom, sXlsxDir, sTemp, params); + } + else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX_PACKAGE == nFormatFrom) + { + nRes = package2ooxml_dir(sFrom, sXlsxDir, sTemp, params); + } + else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV == nFormatFrom) + { + nRes = csv2xlsx_dir(sFrom, sXlsxDir, sTemp, params); + *params.m_nFormatFrom = AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX; + } + else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_XML == nFormatFrom) + { + nRes = xml2xlsx_dir(sFrom, sXlsxDir, sTemp, params); + } + else + nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; + if (SUCCEEDED_X2T(nRes)) + { + nRes = fromXlsxDir(sXlsxDir, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params, sXlsxFile); + } + } + return nRes; + } - _UINT32 fromPptxDir(const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams& params, const std::wstring &sPptxFile) + _UINT32 fromPptxDir( + const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams ¶ms, const std::wstring &sPptxFile) { _UINT32 nRes = 0; if (0 != (AVS_OFFICESTUDIO_FILE_PRESENTATION & nFormatTo)) { if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX == nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM == nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX == nFormatTo || - AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX == nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM == nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM == nFormatTo) + AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX == nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM == nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM == nFormatTo) { if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM == nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX == nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX == nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM == nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM == nFormatTo) { std::wstring sCTFrom = _T("application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml"); - switch(*params.m_nFormatFrom) + switch (*params.m_nFormatFrom) { - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM: sCTFrom = _T("application/vnd.ms-powerpoint.presentation.macroEnabled.main+xml");break; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX: sCTFrom = _T("application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml");break; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX: sCTFrom = _T("application/vnd.openxmlformats-officedocument.presentationml.template.main+xml");break; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM: sCTFrom = _T("application/vnd.ms-powerpoint.template.macroEnabled.main+xml");break; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM: sCTFrom = _T("application/vnd.ms-powerpoint.slideshow.macroEnabled.main+xml");break; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM: + sCTFrom = _T("application/vnd.ms-powerpoint.presentation.macroEnabled.main+xml"); + break; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX: + sCTFrom = _T("application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml"); + break; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX: + sCTFrom = _T("application/vnd.openxmlformats-officedocument.presentationml.template.main+xml"); + break; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM: + sCTFrom = _T("application/vnd.ms-powerpoint.template.macroEnabled.main+xml"); + break; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM: + sCTFrom = _T("application/vnd.ms-powerpoint.slideshow.macroEnabled.main+xml"); + break; } std::wstring sCTTo; - switch(nFormatTo) + switch (nFormatTo) { - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM: sCTTo = _T("application/vnd.ms-powerpoint.presentation.macroEnabled.main+xml");break; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX: sCTTo = _T("application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml");break; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX: sCTTo = _T("application/vnd.openxmlformats-officedocument.presentationml.template.main+xml");break; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM: sCTTo = _T("application/vnd.ms-powerpoint.template.macroEnabled.main+xml");break; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM: sCTTo = _T("application/vnd.ms-powerpoint.slideshow.macroEnabled.main+xml");break; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM: + sCTTo = _T("application/vnd.ms-powerpoint.presentation.macroEnabled.main+xml"); + break; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX: + sCTTo = _T("application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml"); + break; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX: + sCTTo = _T("application/vnd.openxmlformats-officedocument.presentationml.template.main+xml"); + break; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM: + sCTTo = _T("application/vnd.ms-powerpoint.template.macroEnabled.main+xml"); + break; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM: + sCTTo = _T("application/vnd.ms-powerpoint.slideshow.macroEnabled.main+xml"); + break; } nRes = replaceContentType(sFrom, sCTFrom, sCTTo); } @@ -4677,17 +4777,17 @@ namespace NExtractTools nRes = dir2zipMscrypt(sFrom, sTo, sTemp, params); } } - //else if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPT == nFormatTo) + // else if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPT == nFormatTo) else if (AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP == nFormatTo) { - nRes = pptx_dir2odp(sFrom, sTo, sTemp, params, false); + nRes = pptx_dir2odp(sFrom, sTo, sTemp, params, false); } else if (AVS_OFFICESTUDIO_FILE_PRESENTATION_OTP == nFormatTo) { - nRes = pptx_dir2odp(sFrom, sTo, sTemp, params, true); + nRes = pptx_dir2odp(sFrom, sTo, sTemp, params, true); } else - nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; + nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; } else if (AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION == nFormatTo) { @@ -4697,8 +4797,7 @@ namespace NExtractTools { nRes = pptx_dir2pptt(sFrom, sTo, sTemp, params, sPptxFile); } - else if ( (0 != (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo)) || - AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatTo) + else if ((0 != (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo)) || AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatTo) { if (params.needConvertToOrigin(AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX)) { @@ -4729,7 +4828,7 @@ namespace NExtractTools nRes = pptx_dir2pptt_bin(sFrom, sTFile, sTemp, params, sPptxFile); if (SUCCEEDED_X2T(nRes)) { - nRes = fromPpttBin(sTFile, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params); + nRes = fromPpttBin(sTFile, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params); } } } @@ -4737,49 +4836,49 @@ namespace NExtractTools nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; return nRes; } - _UINT32 fromPpttBin(const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams& params) + _UINT32 fromPpttBin(const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams ¶ms) { - _UINT32 nRes = 0; - if (AVS_OFFICESTUDIO_FILE_TEAMLAB_PPTY == nFormatTo) - { - std::wstring sFromDir = NSDirectory::GetFolderPath(sFrom); - nRes = dir2zip(sFromDir, sTo); - } - else if (AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatTo) - { - NSDoctRenderer::DoctRendererFormat::FormatFile eFromType = NSDoctRenderer::DoctRendererFormat::FormatFile::PPTT; - nRes = doct_bin2pdf(eFromType, sFrom, sTo, sTemp, bPaid, sThemeDir, params); - } - else if (0 != (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo)) - { - NSDoctRenderer::DoctRendererFormat::FormatFile eFromType = NSDoctRenderer::DoctRendererFormat::FormatFile::PPTT; - nRes = doct_bin2image(eFromType, sFrom, sTo, sTemp, bPaid, sThemeDir, params); - } - else if (0 != (AVS_OFFICESTUDIO_FILE_PRESENTATION & nFormatTo)) - { - std::wstring sPptxDir = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); + _UINT32 nRes = 0; + if (AVS_OFFICESTUDIO_FILE_TEAMLAB_PPTY == nFormatTo) + { + std::wstring sFromDir = NSDirectory::GetFolderPath(sFrom); + nRes = dir2zip(sFromDir, sTo); + } + else if (AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatTo) + { + NSDoctRenderer::DoctRendererFormat::FormatFile eFromType = NSDoctRenderer::DoctRendererFormat::FormatFile::PPTT; + nRes = doct_bin2pdf(eFromType, sFrom, sTo, sTemp, bPaid, sThemeDir, params); + } + else if (0 != (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo)) + { + NSDoctRenderer::DoctRendererFormat::FormatFile eFromType = NSDoctRenderer::DoctRendererFormat::FormatFile::PPTT; + nRes = doct_bin2image(eFromType, sFrom, sTo, sTemp, bPaid, sThemeDir, params); + } + else if (0 != (AVS_OFFICESTUDIO_FILE_PRESENTATION & nFormatTo)) + { + std::wstring sPptxDir = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); - if (true == NSDirectory::CreateDirectory(sPptxDir)) - { - params.m_bMacro = AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM == nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM == nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM == nFormatTo; - nRes = pptt_bin2pptx_dir(sFrom, sTo, sPptxDir, sThemeDir, params); - if (SUCCEEDED_X2T(nRes)) - { - nRes = fromPptxDir(sPptxDir, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params, L""); - } - } - else - { - nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; - } - } - else - nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; - return nRes; - } - _UINT32 fromPresentation(const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTemp, InputParams& params) - { - std::wstring sTo = *params.m_sFileTo; + if (true == NSDirectory::CreateDirectory(sPptxDir)) + { + params.m_bMacro = AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM == nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM == nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM == nFormatTo; + nRes = pptt_bin2pptx_dir(sFrom, sTo, sPptxDir, sThemeDir, params); + if (SUCCEEDED_X2T(nRes)) + { + nRes = fromPptxDir(sPptxDir, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params, L""); + } + } + else + { + nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; + } + } + else + nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; + return nRes; + } + _UINT32 fromPresentation(const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTemp, InputParams ¶ms) + { + std::wstring sTo = *params.m_sFileTo; int nFormatTo = AVS_OFFICESTUDIO_FILE_UNKNOWN; if (NULL != params.m_nFormatTo) nFormatTo = *params.m_nFormatTo; @@ -4793,132 +4892,133 @@ namespace NExtractTools if (NULL != params.m_bPaid) bPaid = *params.m_bPaid; - _UINT32 nRes = 0; - std::wstring sPptxFile; - std::wstring sPptxDir = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); - NSDirectory::CreateDirectory(sPptxDir); + _UINT32 nRes = 0; + std::wstring sPptxFile; + std::wstring sPptxDir = sTemp + FILE_SEPARATOR_STR + _T("pptx_unpacked"); + NSDirectory::CreateDirectory(sPptxDir); - if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX == nFormatFrom) - { - sPptxFile = sFrom; - if (params.getFromChanges()) - { - params.setFromChanges(false); - nRes = apply_changes(sFrom, sTo, NSDoctRenderer::DoctRendererFormat::FormatFile::PPTT, sThemeDir, sPptxFile, params); - } - nRes = zip2dir(sPptxFile, sPptxDir); - } - else if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM == nFormatFrom) - { - if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX == nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX == nFormatTo) - { - nRes = pptm2pptx_dir(sFrom, sPptxDir, params); - } - else - { - nRes = zip2dir(sFrom, sPptxDir); - } - } - else if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM == nFormatFrom) - { - if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX == nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX == nFormatTo) - { - nRes = ppsm2pptx_dir(sFrom, sPptxDir, params); - } - else - { - nRes = ppsm2pptm_dir(sFrom, sPptxDir, params); - } - } - else if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPT == nFormatFrom) - { - nRes = ppt2pptx_dir(sFrom, sPptxDir, sTemp, params); - } - else if (AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP == nFormatFrom || AVS_OFFICESTUDIO_FILE_PRESENTATION_OTP == nFormatFrom) - { - nRes = odf2oox_dir(sFrom, sPptxDir, sTemp, params); - } - else if (AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP_FLAT == nFormatFrom) - { - nRes = odf_flat2oox_dir(sFrom, sPptxDir, sTemp, params); - } - else if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX == nFormatFrom) - { - nRes = ppsx2pptx_dir(sFrom, sPptxDir, params); - } - else if (AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX == nFormatFrom) - { - nRes = potx2pptx_dir(sFrom, sPptxDir, params); - } - else if (AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM == nFormatFrom) - { - if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX == nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX == nFormatTo) - { - nRes = potm2pptx_dir(sFrom, sPptxDir, params); - } - else - { - nRes = potm2pptm_dir(sFrom, sPptxDir, params); - } - } - else if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX_PACKAGE == nFormatFrom) - { - nRes = package2ooxml_dir(sFrom, sPptxDir, sTemp, params); - } - else - nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; - if (SUCCEEDED_X2T(nRes)) - { - nRes = fromPptxDir(sPptxDir, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params, sPptxFile); - } - return nRes; - } + if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX == nFormatFrom) + { + sPptxFile = sFrom; + if (params.getFromChanges()) + { + params.setFromChanges(false); + nRes = apply_changes(sFrom, sTo, NSDoctRenderer::DoctRendererFormat::FormatFile::PPTT, sThemeDir, sPptxFile, params); + } + nRes = zip2dir(sPptxFile, sPptxDir); + } + else if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM == nFormatFrom) + { + if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX == nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX == nFormatTo) + { + nRes = pptm2pptx_dir(sFrom, sPptxDir, params); + } + else + { + nRes = zip2dir(sFrom, sPptxDir); + } + } + else if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM == nFormatFrom) + { + if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX == nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX == nFormatTo) + { + nRes = ppsm2pptx_dir(sFrom, sPptxDir, params); + } + else + { + nRes = ppsm2pptm_dir(sFrom, sPptxDir, params); + } + } + else if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPT == nFormatFrom) + { + nRes = ppt2pptx_dir(sFrom, sPptxDir, sTemp, params); + } + else if (AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP == nFormatFrom || AVS_OFFICESTUDIO_FILE_PRESENTATION_OTP == nFormatFrom) + { + nRes = odf2oox_dir(sFrom, sPptxDir, sTemp, params); + } + else if (AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP_FLAT == nFormatFrom) + { + nRes = odf_flat2oox_dir(sFrom, sPptxDir, sTemp, params); + } + else if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX == nFormatFrom) + { + nRes = ppsx2pptx_dir(sFrom, sPptxDir, params); + } + else if (AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX == nFormatFrom) + { + nRes = potx2pptx_dir(sFrom, sPptxDir, params); + } + else if (AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM == nFormatFrom) + { + if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX == nFormatTo || AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX == nFormatTo) + { + nRes = potm2pptx_dir(sFrom, sPptxDir, params); + } + else + { + nRes = potm2pptm_dir(sFrom, sPptxDir, params); + } + } + else if (AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX_PACKAGE == nFormatFrom) + { + nRes = package2ooxml_dir(sFrom, sPptxDir, sTemp, params); + } + else + nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; + if (SUCCEEDED_X2T(nRes)) + { + nRes = fromPptxDir(sPptxDir, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params, sPptxFile); + } + return nRes; + } - _UINT32 fromT(const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams& params) - { - _UINT32 nRes = 0; - if (0 != (AVS_OFFICESTUDIO_FILE_CANVAS & nFormatTo)) - { - std::wstring sTDir = NSDirectory::GetFolderPath(sTo); - nRes = zip2dir(sFrom, sTDir); - } - else - { - std::wstring sTDir = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); - NSDirectory::CreateDirectory(sTDir); - std::wstring sTFile = sTDir + FILE_SEPARATOR_STR + _T("Editor.bin"); - nRes = zip2dir(sFrom, sTDir); - if (SUCCEEDED_X2T(nRes)) - { - if (AVS_OFFICESTUDIO_FILE_TEAMLAB_DOCY == nFormatFrom) - nRes = fromDoctBin(sTFile, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params); - else if (AVS_OFFICESTUDIO_FILE_TEAMLAB_XLSY == nFormatFrom) - nRes = fromXlstBin(sTFile, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params); - else if (AVS_OFFICESTUDIO_FILE_TEAMLAB_PPTY == nFormatFrom) - nRes = fromPpttBin(sTFile, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params); - else - nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; - } - } - return nRes; - } + _UINT32 fromT(const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams ¶ms) + { + _UINT32 nRes = 0; + if (0 != (AVS_OFFICESTUDIO_FILE_CANVAS & nFormatTo)) + { + std::wstring sTDir = NSDirectory::GetFolderPath(sTo); + nRes = zip2dir(sFrom, sTDir); + } + else + { + std::wstring sTDir = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); + NSDirectory::CreateDirectory(sTDir); + std::wstring sTFile = sTDir + FILE_SEPARATOR_STR + _T("Editor.bin"); + nRes = zip2dir(sFrom, sTDir); + if (SUCCEEDED_X2T(nRes)) + { + if (AVS_OFFICESTUDIO_FILE_TEAMLAB_DOCY == nFormatFrom) + nRes = fromDoctBin(sTFile, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params); + else if (AVS_OFFICESTUDIO_FILE_TEAMLAB_XLSY == nFormatFrom) + nRes = fromXlstBin(sTFile, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params); + else if (AVS_OFFICESTUDIO_FILE_TEAMLAB_PPTY == nFormatFrom) + nRes = fromPpttBin(sTFile, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params); + else + nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; + } + } + return nRes; + } - _UINT32 fromCrossPlatform(const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams& params) - { - _UINT32 nRes = 0; - NSFonts::IApplicationFonts* pApplicationFonts = NSFonts::NSApplication::Create(); - initApplicationFonts(pApplicationFonts, params); - - if (AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatTo) - { - std::string sPages = checkPrintPages(params); + _UINT32 + fromCrossPlatform(const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams ¶ms) + { + _UINT32 nRes = 0; + NSFonts::IApplicationFonts *pApplicationFonts = NSFonts::NSApplication::Create(); + initApplicationFonts(pApplicationFonts, params); - if (nFormatFrom == nFormatTo && !params.getIsPDFA() && params.getPassword() == params.getSavePassword() && sPages.empty()) - { + if (AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatTo) + { + std::string sPages = checkPrintPages(params); + + if (nFormatFrom == nFormatTo && !params.getIsPDFA() && params.getPassword() == params.getSavePassword() && sPages.empty()) + { nRes = NSFile::CFileBinary::Copy(sFrom, sTo) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; - } - else - { + } + else + { CPdfFile pdfWriter(pApplicationFonts); pdfWriter.CreatePdf(params.getIsPDFA()); pdfWriter.SetTempDirectory(sTemp); @@ -4932,166 +5032,170 @@ namespace NExtractTools if (false == password.empty()) pdfWriter.SetPassword(password); - IOfficeDrawingFile* pReader = NULL; + IOfficeDrawingFile *pReader = NULL; nRes = PdfDjvuXpsToRenderer(&pReader, &pdfWriter, sFrom, nFormatFrom, sTo, sTemp, params, pApplicationFonts, sPages); if (SUCCEEDED_X2T(nRes)) nRes = S_OK == pdfWriter.SaveToFile(sTo) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; RELEASEOBJECT(pReader); - } - } - else if (0 != (AVS_OFFICESTUDIO_FILE_CANVAS & nFormatTo)) - { - if (params.needConvertToOrigin(nFormatFrom)) - { - copyOrigin(sFrom, *params.m_sFileTo); - } - else - { - std::wstring sToDir = NSSystemPath::GetDirectoryName(sTo); - if (!params.getDontSaveAdditional()) - { - //save origin to print - copyOrigin(sFrom, *params.m_sFileTo); - } - NSHtmlRenderer::CASCHTMLRenderer3 oHtmlRenderer; - oHtmlRenderer.CreateOfficeFile(sToDir); - IOfficeDrawingFile* pReader = NULL; - nRes = PdfDjvuXpsToRenderer(&pReader, &oHtmlRenderer, sFrom, nFormatFrom, sTo, sTemp, params, pApplicationFonts); - oHtmlRenderer.CloseFile(params.getIsNoBase64()); - RELEASEOBJECT(pReader); - } - } - else if (0 != (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo)) - { - IOfficeDrawingFile* pReader = NULL; - nRes = PdfDjvuXpsToImage(&pReader, sFrom, nFormatFrom, sTo, sTemp, params, pApplicationFonts); - RELEASEOBJECT(pReader); - } - else - { - switch (nFormatTo) - { - case AVS_OFFICESTUDIO_FILE_OTHER_TEAMLAB_INNER: nFormatTo = AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX; break; - case AVS_OFFICESTUDIO_FILE_OTHER_ODF: nFormatTo = AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT; break; - } + } + } + else if (0 != (AVS_OFFICESTUDIO_FILE_CANVAS & nFormatTo)) + { + if (params.needConvertToOrigin(nFormatFrom)) + { + copyOrigin(sFrom, *params.m_sFileTo); + } + else + { + std::wstring sToDir = NSSystemPath::GetDirectoryName(sTo); + if (!params.getDontSaveAdditional()) + { + // save origin to print + copyOrigin(sFrom, *params.m_sFileTo); + } + NSHtmlRenderer::CASCHTMLRenderer3 oHtmlRenderer; + oHtmlRenderer.CreateOfficeFile(sToDir); + IOfficeDrawingFile *pReader = NULL; + nRes = PdfDjvuXpsToRenderer(&pReader, &oHtmlRenderer, sFrom, nFormatFrom, sTo, sTemp, params, pApplicationFonts); + oHtmlRenderer.CloseFile(params.getIsNoBase64()); + RELEASEOBJECT(pReader); + } + } + else if (0 != (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo)) + { + IOfficeDrawingFile *pReader = NULL; + nRes = PdfDjvuXpsToImage(&pReader, sFrom, nFormatFrom, sTo, sTemp, params, pApplicationFonts); + RELEASEOBJECT(pReader); + } + else + { + switch (nFormatTo) + { + case AVS_OFFICESTUDIO_FILE_OTHER_TEAMLAB_INNER: + nFormatTo = AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX; + break; + case AVS_OFFICESTUDIO_FILE_OTHER_ODF: + nFormatTo = AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT; + break; + } - IOfficeDrawingFile* pReader = NULL; - switch (nFormatFrom) - { - case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF: - pReader = new CPdfFile(pApplicationFonts); - break; - case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_XPS: - pReader = new CXpsFile(pApplicationFonts); - break; - case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_DJVU: - pReader = new CDjVuFile(pApplicationFonts); - break; - default: - break; - } + IOfficeDrawingFile *pReader = NULL; + switch (nFormatFrom) + { + case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF: + pReader = new CPdfFile(pApplicationFonts); + break; + case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_XPS: + pReader = new CXpsFile(pApplicationFonts); + break; + case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_DJVU: + pReader = new CDjVuFile(pApplicationFonts); + break; + default: + break; + } - if (pReader) - { - pReader->SetTempDirectory(sTemp); + if (pReader) + { + pReader->SetTempDirectory(sTemp); - std::wstring sPassword = params.getPassword(); - pReader->LoadFromFile(sFrom, L"", sPassword, sPassword); + std::wstring sPassword = params.getPassword(); + pReader->LoadFromFile(sFrom, L"", sPassword, sPassword); - CDocxRenderer oDocxRenderer(pApplicationFonts); + CDocxRenderer oDocxRenderer(pApplicationFonts); - NSDocxRenderer::TextAssociationType taType = NSDocxRenderer::tatPlainLine; - if (params.m_oTextParams) - { - InputParamsText* oTextParams = params.m_oTextParams; - if (oTextParams->m_nTextAssociationType) - //taType = static_cast(*oTextParams->m_nTextAssociationType); - { - switch (*oTextParams->m_nTextAssociationType) - { - case 0: - taType = NSDocxRenderer::tatBlockChar; - break; - case 1: - taType = NSDocxRenderer::tatBlockLine; - break; - case 2: - taType = NSDocxRenderer::tatPlainLine; - break; - case 3: - taType = NSDocxRenderer::tatPlainParagraph; - break; - default: - break; - } - } - } - oDocxRenderer.SetTextAssociationType(taType); + NSDocxRenderer::TextAssociationType taType = NSDocxRenderer::tatPlainLine; + if (params.m_oTextParams) + { + InputParamsText *oTextParams = params.m_oTextParams; + if (oTextParams->m_nTextAssociationType) + // taType = static_cast(*oTextParams->m_nTextAssociationType); + { + switch (*oTextParams->m_nTextAssociationType) + { + case 0: + taType = NSDocxRenderer::tatBlockChar; + break; + case 1: + taType = NSDocxRenderer::tatBlockLine; + break; + case 2: + taType = NSDocxRenderer::tatPlainLine; + break; + case 3: + taType = NSDocxRenderer::tatPlainParagraph; + break; + default: + break; + } + } + } + oDocxRenderer.SetTextAssociationType(taType); - std::wstring sTempDirOut = sTemp + L"/output"; - if (!NSDirectory::Exists(sTempDirOut)) - NSDirectory::CreateDirectory(sTempDirOut); + std::wstring sTempDirOut = sTemp + L"/output"; + if (!NSDirectory::Exists(sTempDirOut)) + NSDirectory::CreateDirectory(sTempDirOut); - oDocxRenderer.SetTempFolder(sTempDirOut); - bool bIsOutCompress = AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX == nFormatTo && !params.hasSavePassword(); - nRes = oDocxRenderer.Convert(pReader, sTo, bIsOutCompress); + oDocxRenderer.SetTempFolder(sTempDirOut); + bool bIsOutCompress = AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX == nFormatTo && !params.hasSavePassword(); + nRes = oDocxRenderer.Convert(pReader, sTo, bIsOutCompress); - if (nRes == S_OK && !bIsOutCompress) - nRes = fromDocxDir(sTempDirOut, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params, L""); - } - else - nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; - RELEASEOBJECT(pReader); - } - RELEASEOBJECT(pApplicationFonts); - return nRes; - } - _UINT32 fromCanvasPdf(const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams& params) - { - _UINT32 nRes = 0; - if (AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatTo) - { - nRes = bin2pdf(sFrom, sTo, sTemp, bPaid, sThemeDir, params); - } - else if (0 != (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo)) - { - nRes = bin2imageBase64(sFrom, sTo, sTemp, sThemeDir, params); - } - else - { - nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; - } - return nRes; - } + if (nRes == S_OK && !bIsOutCompress) + nRes = fromDocxDir(sTempDirOut, sTo, nFormatTo, sTemp, sThemeDir, bPaid, params, L""); + } + else + nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; + RELEASEOBJECT(pReader); + } + RELEASEOBJECT(pApplicationFonts); + return nRes; + } + _UINT32 fromCanvasPdf(const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams ¶ms) + { + _UINT32 nRes = 0; + if (AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatTo) + { + nRes = bin2pdf(sFrom, sTo, sTemp, bPaid, sThemeDir, params); + } + else if (0 != (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo)) + { + nRes = bin2imageBase64(sFrom, sTo, sTemp, sThemeDir, params); + } + else + { + nRes = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; + } + return nRes; + } // xls -> xlsx - _UINT32 xls2xlsx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) - { - std::wstring sResultDocxDir = sTemp + FILE_SEPARATOR_STR + _T("xlsx_unpacked"); + _UINT32 xls2xlsx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) + { + std::wstring sResultDocxDir = sTemp + FILE_SEPARATOR_STR + _T("xlsx_unpacked"); - NSDirectory::CreateDirectory(sResultDocxDir); + NSDirectory::CreateDirectory(sResultDocxDir); - _UINT32 hRes = xls2xlsx_dir(sFrom, sResultDocxDir, sTemp, params); + _UINT32 hRes = xls2xlsx_dir(sFrom, sResultDocxDir, sTemp, params); - if (SUCCEEDED_X2T(hRes)) - { - hRes = dir2zipMscrypt(sResultDocxDir, sTo, sTemp, params); - } - return hRes; - } - _UINT32 xls2xlsx_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + if (SUCCEEDED_X2T(hRes)) + { + hRes = dir2zipMscrypt(sResultDocxDir, sTo, sTemp, params); + } + return hRes; + } + _UINT32 xls2xlsx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { params.m_bMacro = false; int lcid = (NULL != params.m_nLcid) ? *params.m_nLcid : -1; - _UINT32 nRes = ConvertXls2Xlsx( sFrom, sTo, params.getPassword(), params.getFontPath(), sTemp, lcid, params.m_bMacro); + _UINT32 nRes = ConvertXls2Xlsx(sFrom, sTo, params.getPassword(), params.getFontPath(), sTemp, lcid, params.m_bMacro); nRes = processEncryptionError(nRes, sFrom, params); return nRes; } // xls -> xlsm - _UINT32 xls2xlsm (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 xls2xlsm(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { std::wstring sResultXlsmDir = sTemp + FILE_SEPARATOR_STR + _T("xlsm_unpacked"); @@ -5107,19 +5211,19 @@ namespace NExtractTools } return nRes; } - _UINT32 xls2xlsm_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 xls2xlsm_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { params.m_bMacro = true; int lcid = (NULL != params.m_nLcid) ? *params.m_nLcid : -1; - _UINT32 nRes = ConvertXls2Xlsx( sFrom, sTo, params.getPassword(), params.getFontPath(), sTemp, lcid, params.m_bMacro); + _UINT32 nRes = ConvertXls2Xlsx(sFrom, sTo, params.getPassword(), params.getFontPath(), sTemp, lcid, params.m_bMacro); nRes = processEncryptionError(nRes, sFrom, params); return nRes; } // xls -> xlst - _UINT32 xls2xlst (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 xls2xlst(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { // Extract xlsx to temp directory std::wstring sResultDoctDir = sTemp + FILE_SEPARATOR_STR + _T("xlst_unpacked"); @@ -5139,7 +5243,7 @@ namespace NExtractTools } // xls -> xlst_bin - _UINT32 xls2xlst_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) + _UINT32 xls2xlst_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { std::wstring sResultXlsxDir = sTemp + FILE_SEPARATOR_STR + _T("xlsx_unpacked"); @@ -5149,7 +5253,7 @@ namespace NExtractTools int lcid = (NULL != params.m_nLcid) ? *params.m_nLcid : -1; - _UINT32 nRes = ConvertXls2Xlsx( sFrom, sResultXlsxDir, params.getPassword(), params.getFontPath(), sTemp, lcid, params.m_bMacro); + _UINT32 nRes = ConvertXls2Xlsx(sFrom, sResultXlsxDir, params.getPassword(), params.getFontPath(), sTemp, lcid, params.m_bMacro); nRes = processEncryptionError(nRes, sFrom, params); if (SUCCEEDED_X2T(nRes)) @@ -5158,11 +5262,11 @@ namespace NExtractTools oCXlsxSerializer.setFontDir(params.getFontPath()); - return oCXlsxSerializer.saveToFile (sTo, sResultXlsxDir, params.getXmlOptions()); + return oCXlsxSerializer.saveToFile(sTo, sResultXlsxDir, params.getXmlOptions()); } return nRes; } - _UINT32 html2doct_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + _UINT32 html2doct_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { std::wstring sDocxDir = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); NSDirectory::CreateDirectory(sDocxDir); @@ -5173,7 +5277,7 @@ namespace NExtractTools } return nRes; } - _UINT32 html_zip2doct_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + _UINT32 html_zip2doct_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { std::wstring sDocxDir = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); NSDirectory::CreateDirectory(sDocxDir); @@ -5184,7 +5288,7 @@ namespace NExtractTools } return nRes; } - _UINT32 html2doct(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + _UINT32 html2doct(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { std::wstring sResultDoctDir = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); std::wstring sResultDoctFileEditor = sResultDoctDir + FILE_SEPARATOR_STR + _T("Editor.bin"); @@ -5200,7 +5304,7 @@ namespace NExtractTools } return nRes; } - _UINT32 html_zip2doct(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + _UINT32 html_zip2doct(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { std::wstring sResultDoctDir = sTemp + FILE_SEPARATOR_STR + _T("doct_unpacked"); std::wstring sResultDoctFileEditor = sResultDoctDir + FILE_SEPARATOR_STR + _T("Editor.bin"); @@ -5216,7 +5320,7 @@ namespace NExtractTools } return nRes; } - _UINT32 html2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + _UINT32 html2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { std::wstring sDocxDir = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); NSDirectory::CreateDirectory(sDocxDir); @@ -5229,7 +5333,7 @@ namespace NExtractTools return nRes; } - _UINT32 html_zip2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params) + _UINT32 html_zip2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms) { std::wstring sDocxDir = sTemp + FILE_SEPARATOR_STR + _T("docx_unpacked"); NSDirectory::CreateDirectory(sDocxDir); @@ -5243,11 +5347,11 @@ namespace NExtractTools return nRes; } -//------------------------------------------------------------------------------------------------------------------ - _UINT32 detectMacroInFile(InputParams& oInputParams) + //------------------------------------------------------------------------------------------------------------------ + _UINT32 detectMacroInFile(InputParams &oInputParams) { - _UINT32 nRes = 0;// no macro - std::wstring sFileFrom = *oInputParams.m_sFileFrom; + _UINT32 nRes = 0; // no macro + std::wstring sFileFrom = *oInputParams.m_sFileFrom; COfficeFileFormatChecker OfficeFileFormatChecker; @@ -5261,11 +5365,11 @@ namespace NExtractTools return nRes; } - _UINT32 fromInputParams(InputParams& oInputParams) + _UINT32 fromInputParams(InputParams &oInputParams) { - TConversionDirection conversion = oInputParams.getConversionDirection(); - std::wstring sFileFrom = *oInputParams.m_sFileFrom; - std::wstring sFileTo = *oInputParams.m_sFileTo; + TConversionDirection conversion = oInputParams.getConversionDirection(); + std::wstring sFileFrom = *oInputParams.m_sFileFrom; + std::wstring sFileTo = *oInputParams.m_sFileTo; int nFormatFrom = AVS_OFFICESTUDIO_FILE_UNKNOWN; if (NULL != oInputParams.m_nFormatFrom) @@ -5278,7 +5382,8 @@ namespace NExtractTools { if (AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT == nFormatFrom || AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV == nFormatFrom) return AVS_FILEUTILS_ERROR_CONVERT_NEED_PARAMS; - else{ + else + { // print out conversion direction error std::cerr << "Couldn't recognize conversion direction from an argument" << std::endl; return AVS_FILEUTILS_ERROR_CONVERT_PARAMS; @@ -5297,7 +5402,7 @@ namespace NExtractTools std::wstring sThemeDir; if (NULL != oInputParams.m_sThemeDir) sThemeDir = *oInputParams.m_sThemeDir; - InputParamsMailMerge* oMailMerge = NULL; + InputParamsMailMerge *oMailMerge = NULL; if (NULL != oInputParams.m_oMailMergeSend) oMailMerge = oInputParams.m_oMailMergeSend; @@ -5328,480 +5433,590 @@ namespace NExtractTools #endif _UINT32 result = 0; - switch(conversion) + switch (conversion) { - case TCD_NON_AUTO: - { - result = AVS_FILEUTILS_ERROR_CONVERT_DETECT; - }break; - case TCD_DOCX2DOCT: - { - result = docx2doct (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_DOCXFLAT2DOCT: - { - result = docxflat2doct (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_DOCXFLAT2DOCT_BIN: - { - result = docxflat2doct_bin (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_PKG2BIN_T: - { - result = package2bin_t(sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_PKG2BIN: - { - result = package2bin(sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_PKG2OOXML: - { - oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX); - result = package2ooxml(sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_DOCT2DOCX: - { - oInputParams.m_bMacro = false; - oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX); - result = doct2docx (sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); - }break; - case TCD_DOCT2DOTX: - { - oInputParams.m_bMacro = false; - oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX); - result = doct2docx (sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); - }break; - case TCD_DOCT2OFORM: - { - oInputParams.m_bMacro = false; - oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM); - result = doct2docx(sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); - }break; - case TCD_DOCT2DOCXF: - { - oInputParams.m_bMacro = false; - oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF); - result = doct2docx(sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); - }break; - case TCD_DOCT2DOCM: - { - oInputParams.m_bMacro = true; - oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM); - result = doct2docx (sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); - }break; - case TCD_XLSX2XLST: - { - result = xlsx2xlst (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_XLSB2XLST: - { - oInputParams.m_nFormatFrom = new int(AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB); - result = xlsx2xlst (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_XLSXFLAT2XLST: - { - result = xlsxflat2xlst (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_XLSXFLAT2XLST_BIN: - { - result = xlsxflat2xlst_bin (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_XLSXFLAT2XLSX: - { - result = xlsxflat2xlsx (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_XLST2XLSX: - { - oInputParams.m_bMacro = false; - oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX); - result = xlst2xlsx (sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); - }break; - case TCD_XLST2XLSM: - { - oInputParams.m_bMacro = true; - oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM); - result = xlst2xlsx (sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); - }break; - case TCD_XLST2XLTX: - { - oInputParams.m_bMacro = false; - oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX); - result = xlst2xlsx (sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); - }break; - case TCD_PPTX2PPTT: - { - result = pptx2pptt (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_PPTT2PPTX: - { - oInputParams.m_bMacro = false; - oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX); - result = pptt2pptx (sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); - }break; - case TCD_PPTT2PPTM: - { - oInputParams.m_bMacro = true; - oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM); - result = pptt2pptx (sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); - }break; - case TCD_PPTT2POTX: - { - oInputParams.m_bMacro = false; - oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX); - result = pptt2pptx (sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); - }break; - case TCD_DOTX2DOCX: - { - result = dotx2docx (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_DOCM2DOCX: - { - result = docm2docx (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_DOTM2DOCX: - { - result = dotm2docx (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_DOTM2DOCM: - { - result = dotm2docm (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_XLTX2XLSX: - { - result = xltx2xlsx (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_XLSM2XLSX: - { - result = xltx2xlsx (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_XLTM2XLSX: - { - result = xltm2xlsx (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_XLTM2XLSM: - { - result = xltm2xlsm (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_PPSX2PPTX: - { - result = ppsx2pptx (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_POTX2PPTX: - { - result = potx2pptx (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_POTM2PPTX: - { - result = potm2pptx (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_PPSM2PPTX: - { - result = ppsm2pptx (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_POTM2PPTM: - { - result = potm2pptm (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_PPSM2PPTM: - { - result = ppsm2pptm (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_PPTM2PPTX: - { - result = pptm2pptx (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_ZIPDIR: - { - result = dir2zip (sFileFrom, sFileTo, false, 8, -1, true); - }break; - case TCD_UNZIPDIR: - { - result = zip2dir (sFileFrom, sFileTo); - }break; - case TCD_XML2XLSX: - { - result = xml2xlsx(sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_CSV2XLSX: - { - result = csv2xlsx (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_CSV2XLST: - { - result = csv2xlst (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_XLSX2CSV: - { - result = xlsx2csv (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_XLST2CSV: - { - result = xlst2csv (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_DOCX2DOCT_BIN: - { - result = docx2doct_bin (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_DOCT_BIN2DOCX: - { - result = doct_bin2docx (sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); - }break; - case TCD_XLSX2XLST_BIN: - { - result = xlsx2xlst_bin (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_XLST_BIN2XLSX: - { - result = xlst_bin2xlsx (sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); - }break; - case TCD_PPTX2PPTT_BIN: - { - result = pptx2pptt_bin (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_PPTT_BIN2PPTX: - { - result = pptt_bin2pptx (sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); - }break; - case TCD_BIN2PDF: - { - result = bin2pdf (sFileFrom, sFileTo, sTempDir, bPaid, sThemeDir, oInputParams); - }break; - case TCD_BIN2T: - { - result = dir2zip (NSDirectory::GetFolderPath(sFileFrom), sFileTo); - }break; - case TCD_T2BIN: - { - result = zip2dir (sFileFrom, NSDirectory::GetFolderPath(sFileTo)); - }break; - case TCD_PPT2PPTX: - { - result = ppt2pptx (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_PPT2PPTM: - { - result = ppt2pptm (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_PPT2PPTT: - { - result = ppt2pptt (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_PPT2PPTT_BIN: - { - result = ppt2pptt_bin (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_RTF2DOCX: - { - result = rtf2docx (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_RTF2DOCT: - { - result = rtf2doct (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_RTF2DOCT_BIN: - { - result = rtf2doct_bin (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_DOCX2RTF: - { - result = docx2rtf (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_DOCX2TXT: - { - result = docx2txt(sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_DOC2DOCX: - { - result = doc2docx (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_DOC2DOCM: - { - result = doc2docm (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_DOCT2RTF: - { - result = doct2rtf (sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); - }break; - case TCD_DOCT_BIN2RTF: - { - result = doct_bin2rtf (sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); - }break; - case TCD_TXT2DOCX: - { - result = txt2docx (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_TXT2DOCT: - { - result = txt2doct (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_TXT2DOCT_BIN: - { - result = txt2doct_bin (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_XLS2XLSX: - { - result = xls2xlsx (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_XLS2XLSM: - { - result = xls2xlsm (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_XLS2XLST: - { - result = xls2xlst (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_XLS2XLST_BIN: - { - result = xls2xlst_bin (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_OTF2ODF: - { - result = otf2odf (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_ODF2OOX: - { - result = odf2oox (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_ODF2OOT: - { - result = odf2oot (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_ODF2OOT_BIN: - { - result = odf2oot_bin (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_ODF_FLAT2OOX: - { - result = odf_flat2oox (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_ODF_FLAT2OOT: - { - result = odf_flat2oot (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_ODF_FLAT2OOT_BIN: - { - result = odf_flat2oot_bin (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_DOCX2ODT: - { - result = docx2odt (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_XLSX2ODS: - { - result = xlsx2ods (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_PPTX2ODP: - { - result = pptx2odp (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_MAILMERGE: - { - result = convertmailmerge(*oMailMerge, sFileFrom, sFileTo, sTempDir, bPaid, sThemeDir, oInputParams); - }break; - case TCD_DOCUMENT2: - { - result = fromDocument(sFileFrom, nFormatFrom, sTempDir, oInputParams); - }break; - case TCD_SPREADSHEET2: - { - result = fromSpreadsheet(sFileFrom, nFormatFrom, sTempDir, oInputParams); - }break; - case TCD_PRESENTATION2: - { - result = fromPresentation(sFileFrom, nFormatFrom, sTempDir, oInputParams); - }break; - case TCD_T2: - { - result = fromT(sFileFrom, nFormatFrom, sFileTo, nFormatTo, sTempDir, sThemeDir, bPaid, oInputParams); - }break; - case TCD_DOCT_BIN2: - { - result = fromDoctBin(sFileFrom, sFileTo, nFormatTo, sTempDir, sThemeDir, bPaid, oInputParams); - }break; - case TCD_XLST_BIN2: - { - result = fromXlstBin(sFileFrom, sFileTo, nFormatTo, sTempDir, sThemeDir, bPaid, oInputParams); - }break; - case TCD_PPTT_BIN2: - { - result = fromPpttBin(sFileFrom, sFileTo, nFormatTo, sTempDir, sThemeDir, bPaid, oInputParams); - }break; - case TCD_CROSSPLATFORM2: - { - result = fromCrossPlatform(sFileFrom, nFormatFrom, sFileTo, nFormatTo, sTempDir, sThemeDir, bPaid, oInputParams); - }break; - case TCD_CANVAS_PDF2: - { - result = fromCanvasPdf(sFileFrom, nFormatFrom, sFileTo, nFormatTo, sTempDir, sThemeDir, bPaid, oInputParams); - }break; - case TCD_MSCRYPT2: - { - result = fromMscrypt (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_MSCRYPT2_RAW: - { - result = mscrypt2oox(sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_2MSCRYPT_RAW: - { - result = oox2mscrypt(sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_MSCRYPT2DOCT: - case TCD_MSCRYPT2XLST: - case TCD_MSCRYPT2PPTT: - { - result = mscrypt2oot (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_MSCRYPT2BIN: - { - result = mscrypt2oot_bin (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_MITCRYPT2: - { - result = fromMitcrypt (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_HTML2DOCX: - { - result = html2docx (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_HTMLZIP2DOCX: - { - result = html_zip2docx (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_HTML2DOCT: - { - result = html2doct (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_HTMLZIP2DOCT: - { - result = html_zip2doct (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_HTML2DOCT_BIN: - { - result = html2doct_bin (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_HTMLZIP2DOCT_BIN: - { - result = html_zip2doct_bin (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_FB22DOCX: - { - result = fb2docx (sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - case TCD_VBAPROJECT2XML: - { - result = msVbaProject2Xml(sFileFrom, sFileTo, sTempDir, oInputParams); - }break; - //TCD_FB22DOCT, - //TCD_FB22DOCT_BIN, + case TCD_NON_AUTO: + { + result = AVS_FILEUTILS_ERROR_CONVERT_DETECT; + } + break; + case TCD_DOCX2DOCT: + { + result = docx2doct(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_DOCXFLAT2DOCT: + { + result = docxflat2doct(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_DOCXFLAT2DOCT_BIN: + { + result = docxflat2doct_bin(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_PKG2BIN_T: + { + result = package2bin_t(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_PKG2BIN: + { + result = package2bin(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_PKG2OOXML: + { + oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX); + result = package2ooxml(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_DOCT2DOCX: + { + oInputParams.m_bMacro = false; + oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX); + result = doct2docx(sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); + } + break; + case TCD_DOCT2DOTX: + { + oInputParams.m_bMacro = false; + oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX); + result = doct2docx(sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); + } + break; + case TCD_DOCT2OFORM: + { + oInputParams.m_bMacro = false; + oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM); + result = doct2docx(sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); + } + break; + case TCD_DOCT2DOCXF: + { + oInputParams.m_bMacro = false; + oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF); + result = doct2docx(sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); + } + break; + case TCD_DOCT2DOCM: + { + oInputParams.m_bMacro = true; + oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM); + result = doct2docx(sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); + } + break; + case TCD_XLSX2XLST: + { + result = xlsx2xlst(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_XLSB2XLST: + { + oInputParams.m_nFormatFrom = new int(AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB); + result = xlsx2xlst(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_XLSXFLAT2XLST: + { + result = xlsxflat2xlst(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_XLSXFLAT2XLST_BIN: + { + result = xlsxflat2xlst_bin(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_XLSXFLAT2XLSX: + { + result = xlsxflat2xlsx(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_XLST2XLSX: + { + oInputParams.m_bMacro = false; + oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX); + result = xlst2xlsx(sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); + } + break; + case TCD_XLST2XLSM: + { + oInputParams.m_bMacro = true; + oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM); + result = xlst2xlsx(sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); + } + break; + case TCD_XLST2XLTX: + { + oInputParams.m_bMacro = false; + oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX); + result = xlst2xlsx(sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); + } + break; + case TCD_PPTX2PPTT: + { + result = pptx2pptt(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_PPTT2PPTX: + { + oInputParams.m_bMacro = false; + oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX); + result = pptt2pptx(sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); + } + break; + case TCD_PPTT2PPTM: + { + oInputParams.m_bMacro = true; + oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM); + result = pptt2pptx(sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); + } + break; + case TCD_PPTT2POTX: + { + oInputParams.m_bMacro = false; + oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX); + result = pptt2pptx(sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); + } + break; + case TCD_DOTX2DOCX: + { + result = dotx2docx(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_DOCM2DOCX: + { + result = docm2docx(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_DOTM2DOCX: + { + result = dotm2docx(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_DOTM2DOCM: + { + result = dotm2docm(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_XLTX2XLSX: + { + result = xltx2xlsx(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_XLSM2XLSX: + { + result = xltx2xlsx(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_XLTM2XLSX: + { + result = xltm2xlsx(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_XLTM2XLSM: + { + result = xltm2xlsm(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_PPSX2PPTX: + { + result = ppsx2pptx(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_POTX2PPTX: + { + result = potx2pptx(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_POTM2PPTX: + { + result = potm2pptx(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_PPSM2PPTX: + { + result = ppsm2pptx(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_POTM2PPTM: + { + result = potm2pptm(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_PPSM2PPTM: + { + result = ppsm2pptm(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_PPTM2PPTX: + { + result = pptm2pptx(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_ZIPDIR: + { + result = dir2zip(sFileFrom, sFileTo, false, 8, -1, true); + } + break; + case TCD_UNZIPDIR: + { + result = zip2dir(sFileFrom, sFileTo); + } + break; + case TCD_XML2XLSX: + { + result = xml2xlsx(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_CSV2XLSX: + { + result = csv2xlsx(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_CSV2XLST: + { + result = csv2xlst(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_XLSX2CSV: + { + result = xlsx2csv(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_XLST2CSV: + { + result = xlst2csv(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_DOCX2DOCT_BIN: + { + result = docx2doct_bin(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_DOCT_BIN2DOCX: + { + result = doct_bin2docx(sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); + } + break; + case TCD_XLSX2XLST_BIN: + { + result = xlsx2xlst_bin(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_XLST_BIN2XLSX: + { + result = xlst_bin2xlsx(sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); + } + break; + case TCD_PPTX2PPTT_BIN: + { + result = pptx2pptt_bin(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_PPTT_BIN2PPTX: + { + result = pptt_bin2pptx(sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); + } + break; + case TCD_BIN2PDF: + { + result = bin2pdf(sFileFrom, sFileTo, sTempDir, bPaid, sThemeDir, oInputParams); + } + break; + case TCD_BIN2T: + { + result = dir2zip(NSDirectory::GetFolderPath(sFileFrom), sFileTo); + } + break; + case TCD_T2BIN: + { + result = zip2dir(sFileFrom, NSDirectory::GetFolderPath(sFileTo)); + } + break; + case TCD_PPT2PPTX: + { + result = ppt2pptx(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_PPT2PPTM: + { + result = ppt2pptm(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_PPT2PPTT: + { + result = ppt2pptt(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_PPT2PPTT_BIN: + { + result = ppt2pptt_bin(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_RTF2DOCX: + { + result = rtf2docx(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_RTF2DOCT: + { + result = rtf2doct(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_RTF2DOCT_BIN: + { + result = rtf2doct_bin(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_DOCX2RTF: + { + result = docx2rtf(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_DOCX2TXT: + { + result = docx2txt(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_DOC2DOCX: + { + result = doc2docx(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_DOC2DOCM: + { + result = doc2docm(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_DOCT2RTF: + { + result = doct2rtf(sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); + } + break; + case TCD_DOCT_BIN2RTF: + { + result = doct_bin2rtf(sFileFrom, sFileTo, sTempDir, sThemeDir, oInputParams); + } + break; + case TCD_TXT2DOCX: + { + result = txt2docx(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_TXT2DOCT: + { + result = txt2doct(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_TXT2DOCT_BIN: + { + result = txt2doct_bin(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_XLS2XLSX: + { + result = xls2xlsx(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_XLS2XLSM: + { + result = xls2xlsm(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_XLS2XLST: + { + result = xls2xlst(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_XLS2XLST_BIN: + { + result = xls2xlst_bin(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_OTF2ODF: + { + result = otf2odf(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_ODF2OOX: + { + result = odf2oox(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_ODF2OOT: + { + result = odf2oot(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_ODF2OOT_BIN: + { + result = odf2oot_bin(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_ODF_FLAT2OOX: + { + result = odf_flat2oox(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_ODF_FLAT2OOT: + { + result = odf_flat2oot(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_ODF_FLAT2OOT_BIN: + { + result = odf_flat2oot_bin(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_DOCX2ODT: + { + result = docx2odt(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_XLSX2ODS: + { + result = xlsx2ods(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_PPTX2ODP: + { + result = pptx2odp(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_MAILMERGE: + { + result = convertmailmerge(*oMailMerge, sFileFrom, sFileTo, sTempDir, bPaid, sThemeDir, oInputParams); + } + break; + case TCD_DOCUMENT2: + { + result = fromDocument(sFileFrom, nFormatFrom, sTempDir, oInputParams); + } + break; + case TCD_SPREADSHEET2: + { + result = fromSpreadsheet(sFileFrom, nFormatFrom, sTempDir, oInputParams); + } + break; + case TCD_PRESENTATION2: + { + result = fromPresentation(sFileFrom, nFormatFrom, sTempDir, oInputParams); + } + break; + case TCD_T2: + { + result = fromT(sFileFrom, nFormatFrom, sFileTo, nFormatTo, sTempDir, sThemeDir, bPaid, oInputParams); + } + break; + case TCD_DOCT_BIN2: + { + result = fromDoctBin(sFileFrom, sFileTo, nFormatTo, sTempDir, sThemeDir, bPaid, oInputParams); + } + break; + case TCD_XLST_BIN2: + { + result = fromXlstBin(sFileFrom, sFileTo, nFormatTo, sTempDir, sThemeDir, bPaid, oInputParams); + } + break; + case TCD_PPTT_BIN2: + { + result = fromPpttBin(sFileFrom, sFileTo, nFormatTo, sTempDir, sThemeDir, bPaid, oInputParams); + } + break; + case TCD_CROSSPLATFORM2: + { + result = fromCrossPlatform(sFileFrom, nFormatFrom, sFileTo, nFormatTo, sTempDir, sThemeDir, bPaid, oInputParams); + } + break; + case TCD_CANVAS_PDF2: + { + result = fromCanvasPdf(sFileFrom, nFormatFrom, sFileTo, nFormatTo, sTempDir, sThemeDir, bPaid, oInputParams); + } + break; + case TCD_MSCRYPT2: + { + result = fromMscrypt(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_MSCRYPT2_RAW: + { + result = mscrypt2oox(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_2MSCRYPT_RAW: + { + result = oox2mscrypt(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_MSCRYPT2DOCT: + case TCD_MSCRYPT2XLST: + case TCD_MSCRYPT2PPTT: + { + result = mscrypt2oot(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_MSCRYPT2BIN: + { + result = mscrypt2oot_bin(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_MITCRYPT2: + { + result = fromMitcrypt(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_HTML2DOCX: + { + result = html2docx(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_HTMLZIP2DOCX: + { + result = html_zip2docx(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_HTML2DOCT: + { + result = html2doct(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_HTMLZIP2DOCT: + { + result = html_zip2doct(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_HTML2DOCT_BIN: + { + result = html2doct_bin(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_HTMLZIP2DOCT_BIN: + { + result = html_zip2doct_bin(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_FB22DOCX: + { + result = fb2docx(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + case TCD_VBAPROJECT2XML: + { + result = msVbaProject2Xml(sFileFrom, sFileTo, sTempDir, oInputParams); + } + break; + // TCD_FB22DOCT, + // TCD_FB22DOCT_BIN, - //TCD_EPUB2DOCX, - //TCD_EPUB2DOCT, - //TCD_EPUB2DOCT_BIN, - default: - { - result = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; - }break; + // TCD_EPUB2DOCX, + // TCD_EPUB2DOCT, + // TCD_EPUB2DOCT_BIN, + default: + { + result = AVS_FILEUTILS_ERROR_CONVERT_PARAMS; + } + break; } // delete temp dir @@ -5810,7 +6025,7 @@ namespace NExtractTools NSDirectory::DeleteDirectory(sTempDir); } - //clean up v8 + // clean up v8 #ifndef BUILD_X2T_AS_LIBRARY_DYLIB NSDoctRenderer::CDocBuilder::Dispose(); #endif @@ -5835,7 +6050,7 @@ namespace NExtractTools NSDoctRenderer::CDocBuilder::Dispose(); } - _UINT32 FromFile(const std::wstring& file) + _UINT32 FromFile(const std::wstring &file) { InputParams oInputParams; if (oInputParams.FromXmlFile(file)) @@ -5848,7 +6063,7 @@ namespace NExtractTools } } - _UINT32 FromXml(const std::wstring& xml) + _UINT32 FromXml(const std::wstring &xml) { InputParams oInputParams; if (oInputParams.FromXml(xml)) @@ -5860,5 +6075,4 @@ namespace NExtractTools return AVS_FILEUTILS_ERROR_CONVERT_PARAMS; } } -} - +} // namespace NExtractTools diff --git a/X2tConverter/src/ASCConverters.h b/X2tConverter/src/ASCConverters.h index 041b8da5af..f8734d68fa 100644 --- a/X2tConverter/src/ASCConverters.h +++ b/X2tConverter/src/ASCConverters.h @@ -39,204 +39,204 @@ #define X2T_DECL_EXPORT Q_DECL_EXPORT #endif -#include #include "../../OOXML/Base/Base.h" +#include namespace NExtractTools { -class InputParams; -class InputParamsMailMerge; -} + class InputParams; + class InputParamsMailMerge; +} // namespace NExtractTools namespace NExtractTools { - _UINT32 docx2doct_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 docx2doct (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 docx_dir2doct (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params, const std::wstring &sDocxFile); - _UINT32 docx_dir2doct_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params, const std::wstring &sDocxFile); - _UINT32 doct_bin2docx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params); - _UINT32 doct_bin2docx_dir (const std::wstring &sFrom, const std::wstring &sToResult, const std::wstring &sTo, const std::wstring &sThemeDir, InputParams& params); - _UINT32 doct2docx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params); + _UINT32 docx2doct_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 docx2doct(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 docx_dir2doct(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms, const std::wstring &sDocxFile); + _UINT32 docx_dir2doct_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms, const std::wstring &sDocxFile); + _UINT32 doct_bin2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams ¶ms); + _UINT32 doct_bin2docx_dir(const std::wstring &sFrom, const std::wstring &sToResult, const std::wstring &sTo, const std::wstring &sThemeDir, InputParams ¶ms); + _UINT32 doct2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams ¶ms); - _UINT32 docxflat2doct (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 docxflat2doct_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 docxflat2odt (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 docxflat2docx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); + _UINT32 docxflat2doct(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 docxflat2doct_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 docxflat2odt(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 docxflat2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); - _UINT32 package2ooxml (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 package2ooxml_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 package2bin_t (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 package2bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); + _UINT32 package2ooxml(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 package2ooxml_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 package2bin_t(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 package2bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); - _UINT32 dotm2docm (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 dotm2docm_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params); - _UINT32 dotx2docx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 dotx2docx_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params); - _UINT32 docm2docx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 docm2docx_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params); - _UINT32 dotm2docx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 dotm2docx_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params); + _UINT32 dotm2docm(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 dotm2docm_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms); + _UINT32 dotx2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 dotx2docx_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms); + _UINT32 docm2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 docm2docx_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms); + _UINT32 dotm2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 dotm2docx_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms); - _UINT32 xlsx2xlst (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 xlsx2xlst_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 xlsxflat2xlst (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 xlsxflat2xlst_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 xlsxflat2xlsx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 xlsxflat2xlsx_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 xlsx_dir2xlst (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params, bool bXmlOptions, const std::wstring &sXlsxFile); - _UINT32 xlsx_dir2xlst_bin (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params, bool bXmlOptions, const std::wstring &sXlsxFile); - _UINT32 xlst_bin2xlsx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params); - _UINT32 xlst_bin2xlsx_dir (const std::wstring &sFrom, const std::wstring &sToResult, const std::wstring &sTo, const std::wstring &sThemeDir, InputParams& params); - _UINT32 xlst2xlsx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params); - - _UINT32 xltx2xlsx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 xltx2xlsx_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params); - _UINT32 xltm2xlsm (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 xltm2xlsm_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params); - _UINT32 xlsm2xlsx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 xlsm2xlsx_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params); - _UINT32 xltm2xlsx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 xltm2xlsx_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params); - _UINT32 xlsb2xlsx_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 xlsx2xlsb (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 xlsx_dir2xlsb (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); + _UINT32 xlsx2xlst(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 xlsx2xlst_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 xlsxflat2xlst(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 xlsxflat2xlst_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 xlsxflat2xlsx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 xlsxflat2xlsx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 xlsx_dir2xlst(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms, bool bXmlOptions, const std::wstring &sXlsxFile); + _UINT32 xlsx_dir2xlst_bin(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms, bool bXmlOptions, const std::wstring &sXlsxFile); + _UINT32 xlst_bin2xlsx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams ¶ms); + _UINT32 xlst_bin2xlsx_dir(const std::wstring &sFrom, const std::wstring &sToResult, const std::wstring &sTo, const std::wstring &sThemeDir, InputParams ¶ms); + _UINT32 xlst2xlsx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams ¶ms); - _UINT32 pptx2pptt_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 pptx_dir2pptt (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params, const std::wstring &sPptxFile); - _UINT32 pptx_dir2pptt_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params, const std::wstring &sPptxFile); - _UINT32 pptx2pptt (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 pptt_bin2pptx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params); - _UINT32 pptt_bin2pptx_dir (const std::wstring &sFrom, const std::wstring &sToResult, const std::wstring &sTo, const std::wstring &sThemeDir, InputParams& params); - _UINT32 pptt2pptx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params); + _UINT32 xltx2xlsx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 xltx2xlsx_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms); + _UINT32 xltm2xlsm(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 xltm2xlsm_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms); + _UINT32 xlsm2xlsx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 xlsm2xlsx_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms); + _UINT32 xltm2xlsx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 xltm2xlsx_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms); + _UINT32 xlsb2xlsx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 xlsx2xlsb(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 xlsx_dir2xlsb(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); - _UINT32 xml2xlsx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 xml2xlsx_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); + _UINT32 pptx2pptt_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 pptx_dir2pptt(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms, const std::wstring &sPptxFile); + _UINT32 pptx_dir2pptt_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms, const std::wstring &sPptxFile); + _UINT32 pptx2pptt(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 pptt_bin2pptx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams ¶ms); + _UINT32 pptt_bin2pptx_dir(const std::wstring &sFrom, const std::wstring &sToResult, const std::wstring &sTo, const std::wstring &sThemeDir, InputParams ¶ms); + _UINT32 pptt2pptx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams ¶ms); - _UINT32 csv2xlst (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 csv2xlsx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 csv2xlsx_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 csv2xlst_bin (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params); - _UINT32 xlst2csv (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 xlsx_dir2csv (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 xlsx2csv (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 xlst_bin2csv (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); + _UINT32 xml2xlsx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 xml2xlsx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); - _UINT32 bin2pdf (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, bool bPaid, const std::wstring &sThemeDir, InputParams& params); + _UINT32 csv2xlst(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 csv2xlsx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 csv2xlsx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 csv2xlst_bin(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms); + _UINT32 xlst2csv(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 xlsx_dir2csv(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 xlsx2csv(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 xlst_bin2csv(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); - _UINT32 ppsx2pptx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 ppsx2pptx_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params); - _UINT32 potx2pptx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 potx2pptx_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params); - _UINT32 ppsm2pptx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 ppsm2pptx_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params); - _UINT32 potm2pptm (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 potm2pptm_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params); - _UINT32 ppsm2pptm (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 ppsm2pptm_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params); - _UINT32 pptm2pptx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 pptm2pptx_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params); - _UINT32 potm2pptx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 potm2pptx_dir (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params); + _UINT32 bin2pdf(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, bool bPaid, const std::wstring &sThemeDir, InputParams ¶ms); - _UINT32 ppt2pptx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 ppt2pptx_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 ppt2pptt_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 ppt2pptt (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 ppt2pptm (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 ppt2pptm_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); + _UINT32 ppsx2pptx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 ppsx2pptx_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms); + _UINT32 potx2pptx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 potx2pptx_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms); + _UINT32 ppsm2pptx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 ppsm2pptx_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms); + _UINT32 potm2pptm(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 potm2pptm_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms); + _UINT32 ppsm2pptm(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 ppsm2pptm_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms); + _UINT32 pptm2pptx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 pptm2pptx_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms); + _UINT32 potm2pptx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 potm2pptx_dir(const std::wstring &sFrom, const std::wstring &sTo, InputParams ¶ms); - _UINT32 rtf2docx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 rtf2docx_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 rtf2doct (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 rtf2doct_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 docx2rtf (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 docx_dir2rtf (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 doct2rtf (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params); - _UINT32 doct_bin2rtf (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params); + _UINT32 ppt2pptx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 ppt2pptx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 ppt2pptt_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 ppt2pptt(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 ppt2pptm(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 ppt2pptm_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); - _UINT32 doc2docx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 doc2docx_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 doc2doct (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 doc2doct_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 docx_dir2doc (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 doc2docm (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 doc2docm_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); + _UINT32 rtf2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 rtf2docx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 rtf2doct(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 rtf2doct_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 docx2rtf(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 docx_dir2rtf(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 doct2rtf(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams ¶ms); + _UINT32 doct_bin2rtf(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams ¶ms); - _UINT32 xls2xlsx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 xls2xlsx_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 xls2xlst (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 xls2xlst_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 xls2xlsm (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 xls2xlsm_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); + _UINT32 doc2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 doc2docx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 doc2doct(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 doc2doct_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 docx_dir2doc(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 doc2docm(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 doc2docm_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); - _UINT32 txt2docx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 txt2docx_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 txt2doct (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 txt2doct_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 docx_dir2txt (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); + _UINT32 xls2xlsx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 xls2xlsx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 xls2xlst(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 xls2xlst_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 xls2xlsm(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 xls2xlsm_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); - _UINT32 odf2oox (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); - _UINT32 odf2oox_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); - _UINT32 odf2oot (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); - _UINT32 odf2oot_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); + _UINT32 txt2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 txt2docx_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 txt2doct(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 txt2doct_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 docx_dir2txt(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); - _UINT32 odf_flat2oox (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); - _UINT32 odf_flat2oox_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); - _UINT32 odf_flat2oot (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); - _UINT32 odf_flat2oot_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); + _UINT32 odf2oox(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 odf2oox_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 odf2oot(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 odf2oot_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); - _UINT32 docx2odt (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); - _UINT32 docx_dir2odt (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params, bool bTemplate); - _UINT32 xlsx2ods (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); - _UINT32 xlsx_dir2ods (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params, bool bTemplate); - _UINT32 pptx2odp (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); - _UINT32 pptx_dir2odp (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params, bool bTemplate); + _UINT32 odf_flat2oox(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 odf_flat2oox_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 odf_flat2oot(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 odf_flat2oot_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); - _UINT32 fromMscrypt (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); - _UINT32 fromMitcrypt (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); - _UINT32 mscrypt2oox (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); - _UINT32 mitcrypt2oox (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); - _UINT32 mscrypt2oot (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); - _UINT32 mscrypt2oot_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); - _UINT32 mitcrypt2oot_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); - - _UINT32 oox2mscrypt (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); + _UINT32 docx2odt(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 docx_dir2odt(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms, bool bTemplate); + _UINT32 xlsx2ods(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 xlsx_dir2ods(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms, bool bTemplate); + _UINT32 pptx2odp(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 pptx_dir2odp(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms, bool bTemplate); - _UINT32 msVbaProject2dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); - - _UINT32 html2doct_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); - _UINT32 html2doct (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); - _UINT32 html2docx (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params); + _UINT32 fromMscrypt(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 fromMitcrypt(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 mscrypt2oox(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 mitcrypt2oox(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 mscrypt2oot(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 mscrypt2oot_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 mitcrypt2oot_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); -//------------------------------------------------------------------------------------------------------------------------------------------------- - _UINT32 dir2zip (const std::wstring &sFrom, const std::wstring &sTo, bool bSorted = false, int method = 8/*Z_DEFLATED*/, short level = -1, bool bDateTime = false); - _UINT32 dir2zipMscrypt (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params); - _UINT32 zip2dir (const std::wstring &sFrom, const std::wstring &sTo); + _UINT32 oox2mscrypt(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); - _UINT32 convertmailmerge (const InputParamsMailMerge& oMailMergeSend,const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, bool bPaid, const std::wstring &sThemeDir, InputParams& params); + _UINT32 msVbaProject2dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); - _UINT32 fromDocxDir (const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams& params, const std::wstring &sDocxFile); - _UINT32 fromDoctBin (const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams& params); - _UINT32 fromDocument (const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTemp, InputParams& params); + _UINT32 html2doct_bin(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 html2doct(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 html2docx(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); - _UINT32 fromXlsxDir (const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams& params, const std::wstring &sXlsxFile); - _UINT32 fromXlsbXlsxDir (const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams& params, const std::wstring &sXlsxFile); - _UINT32 fromXlstBin (const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams& params); - _UINT32 fromSpreadsheet (const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTemp, InputParams& params); + //------------------------------------------------------------------------------------------------------------------------------------------------- + _UINT32 dir2zip(const std::wstring &sFrom, const std::wstring &sTo, bool bSorted = false, int method = 8 /*Z_DEFLATED*/, short level = -1, bool bDateTime = false); + _UINT32 dir2zipMscrypt(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams ¶ms); + _UINT32 zip2dir(const std::wstring &sFrom, const std::wstring &sTo); - _UINT32 fromPptxDir (const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams& params, const std::wstring &sPptxFile); - _UINT32 fromPpttBin (const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams& params); - _UINT32 fromPresentation(const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTemp, InputParams& params); + _UINT32 convertmailmerge(const InputParamsMailMerge &oMailMergeSend, const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, bool bPaid, const std::wstring &sThemeDir, InputParams ¶ms); - _UINT32 fromT(const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams& params); - _UINT32 fromCrossPlatform(const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams& params); - _UINT32 fromCanvasPdf(const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams& params); + _UINT32 fromDocxDir(const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams ¶ms, const std::wstring &sDocxFile); + _UINT32 fromDoctBin(const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams ¶ms); + _UINT32 fromDocument(const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTemp, InputParams ¶ms); - _UINT32 fromInputParams(InputParams& oInputParams); - _UINT32 detectMacroInFile(InputParams& oInputParams); + _UINT32 fromXlsxDir(const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams ¶ms, const std::wstring &sXlsxFile); + _UINT32 fromXlsbXlsxDir(const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams ¶ms, const std::wstring &sXlsxFile); + _UINT32 fromXlstBin(const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams ¶ms); + _UINT32 fromSpreadsheet(const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTemp, InputParams ¶ms); + + _UINT32 fromPptxDir(const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams ¶ms, const std::wstring &sPptxFile); + _UINT32 fromPpttBin(const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams ¶ms); + _UINT32 fromPresentation(const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTemp, InputParams ¶ms); + + _UINT32 fromT(const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams ¶ms); + _UINT32 fromCrossPlatform(const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams ¶ms); + _UINT32 fromCanvasPdf(const std::wstring &sFrom, int nFormatFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bPaid, InputParams ¶ms); + + _UINT32 fromInputParams(InputParams &oInputParams); + _UINT32 detectMacroInFile(InputParams &oInputParams); void createJSCaches(); - - X2T_DECL_EXPORT _UINT32 FromFile(const std::wstring& file); - X2T_DECL_EXPORT _UINT32 FromXml(const std::wstring& xml); -} + + X2T_DECL_EXPORT _UINT32 FromFile(const std::wstring &file); + X2T_DECL_EXPORT _UINT32 FromXml(const std::wstring &xml); +} // namespace NExtractTools #endif // ASCCONVERTERS_H diff --git a/X2tConverter/src/cextracttools.cpp b/X2tConverter/src/cextracttools.cpp index c7570adaed..ca7b75be36 100644 --- a/X2tConverter/src/cextracttools.cpp +++ b/X2tConverter/src/cextracttools.cpp @@ -30,14 +30,14 @@ * */ #include "cextracttools.h" -#include "../../DesktopEditor/common/StringBuilder.h" #include "../../DesktopEditor/common/Directory.h" #include "../../DesktopEditor/common/Path.h" +#include "../../DesktopEditor/common/StringBuilder.h" #include "../../OfficeUtils/src/OfficeUtils.h" namespace NExtractTools { - const TConversionDirection getConversionDirectionFromExt (const std::wstring &sFile1, const std::wstring &sFile2) + const TConversionDirection getConversionDirectionFromExt(const std::wstring& sFile1, const std::wstring& sFile2) { TConversionDirection res = TCD_ERROR; @@ -59,7 +59,8 @@ namespace NExtractTools } // check for directory in name - bool bIsFile1Directory = (std::wstring::npos != nExt1Pos) ? ((std::wstring::npos != nSeparator1Pos) && (nExt1Pos < nSeparator1Pos)) : (std::wstring::npos != nSeparator1Pos); // i.e: /root1/child1.lalala/folder + bool bIsFile1Directory = + (std::wstring::npos != nExt1Pos) ? ((std::wstring::npos != nSeparator1Pos) && (nExt1Pos < nSeparator1Pos)) : (std::wstring::npos != nSeparator1Pos); // i.e: /root1/child1.lalala/folder bool bIsFile2Directory = (std::wstring::npos != nExt2Pos) ? ((std::wstring::npos != nSeparator2Pos) && (nExt2Pos < nSeparator2Pos)) : (std::wstring::npos != nSeparator2Pos); // automatic zip/unzip task detection @@ -72,10 +73,10 @@ namespace NExtractTools } else { - // dir ( ??? файл без расширения???) -> zip + // dir ( ??? файл без расширения???) -> zip - if (NSDirectory::Exists(sFile1)) - return TCD_ZIPDIR; + if (NSDirectory::Exists(sFile1)) + return TCD_ZIPDIR; } } else if (bIsFile2Directory) @@ -103,9 +104,9 @@ namespace NExtractTools COfficeFileFormatChecker OfficeFileFormatChecker; if (OfficeFileFormatChecker.isOfficeFile(sFile1)) - { - int &type = OfficeFileFormatChecker.nFileType; - + { + int& type = OfficeFileFormatChecker.nFileType; + switch (OfficeFileFormatChecker.nFileType) { case AVS_OFFICESTUDIO_FILE_DOCUMENT_XML: @@ -118,7 +119,8 @@ namespace NExtractTools { res = TCD_XML2XLSX; } - }break; + } + break; case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX: case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM: case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX: @@ -126,314 +128,437 @@ namespace NExtractTools case AVS_OFFICESTUDIO_FILE_DOCUMENT_OFORM: case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF: { - if (0 == sExt2.compare(L".doct")) res = TCD_DOCX2DOCT; - else if (0 == sExt2.compare(L".bin")) res = TCD_DOCX2DOCT_BIN; - else if (0 == sExt2.compare(L".rtf")) res = TCD_DOCX2RTF; - else if (0 == sExt2.compare(L".odt")) res = TCD_DOCX2ODT; - else if (0 == sExt2.compare(L".docx")) - { - if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX) - res = TCD_DOTX2DOCX; - if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM) - res = TCD_DOCM2DOCX; - if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM) - res = TCD_DOTM2DOCX; - //oform 2 docx ??? - //docxf 2 docx ??? - } - else if (0 == sExt2.compare(L".docm")) res = TCD_DOTM2DOCM; - else if (0 == sExt2.compare(L".txt")) res = TCD_DOCX2TXT; - }break; + if (0 == sExt2.compare(L".doct")) + res = TCD_DOCX2DOCT; + else if (0 == sExt2.compare(L".bin")) + res = TCD_DOCX2DOCT_BIN; + else if (0 == sExt2.compare(L".rtf")) + res = TCD_DOCX2RTF; + else if (0 == sExt2.compare(L".odt")) + res = TCD_DOCX2ODT; + else if (0 == sExt2.compare(L".docx")) + { + if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX) + res = TCD_DOTX2DOCX; + if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM) + res = TCD_DOCM2DOCX; + if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTM) + res = TCD_DOTM2DOCX; + // oform 2 docx ??? + // docxf 2 docx ??? + } + else if (0 == sExt2.compare(L".docm")) + res = TCD_DOTM2DOCM; + else if (0 == sExt2.compare(L".txt")) + res = TCD_DOCX2TXT; + } + break; case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX_PACKAGE: case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX_PACKAGE: case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX_PACKAGE: - { - if (0 == sExt2.compare(L".doct")) res = TCD_PKG2BIN_T; - else if (0 == sExt2.compare(L".pptt")) res = TCD_PKG2BIN_T; - else if (0 == sExt2.compare(L".xlst")) res = TCD_PKG2BIN_T; - else if (0 == sExt2.compare(L".docx")) res = TCD_PKG2OOXML; - else if (0 == sExt2.compare(L".xlsx")) res = TCD_PKG2OOXML; - else if (0 == sExt2.compare(L".pptx")) res = TCD_PKG2OOXML; - else if (0 == sExt2.compare(L".bin")) res = TCD_PKG2BIN; - }break; + { + if (0 == sExt2.compare(L".doct")) + res = TCD_PKG2BIN_T; + else if (0 == sExt2.compare(L".pptt")) + res = TCD_PKG2BIN_T; + else if (0 == sExt2.compare(L".xlst")) + res = TCD_PKG2BIN_T; + else if (0 == sExt2.compare(L".docx")) + res = TCD_PKG2OOXML; + else if (0 == sExt2.compare(L".xlsx")) + res = TCD_PKG2OOXML; + else if (0 == sExt2.compare(L".pptx")) + res = TCD_PKG2OOXML; + else if (0 == sExt2.compare(L".bin")) + res = TCD_PKG2BIN; + } + break; case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX_FLAT: { - if (0 == sExt2.compare(L".doct")) res = TCD_DOCXFLAT2DOCT; - else if (0 == sExt2.compare(L".bin")) res = TCD_DOCXFLAT2DOCT_BIN; - }break; + if (0 == sExt2.compare(L".doct")) + res = TCD_DOCXFLAT2DOCT; + else if (0 == sExt2.compare(L".bin")) + res = TCD_DOCXFLAT2DOCT_BIN; + } + break; case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX_FLAT: - { - if (0 == sExt2.compare(L".xlst")) res = TCD_XLSXFLAT2XLST; - else if (0 == sExt2.compare(L".bin")) res = TCD_XLSXFLAT2XLST_BIN; - else if (0 == sExt2.compare(L".xlsx")) res = TCD_XLSXFLAT2XLSX; - }break; + { + if (0 == sExt2.compare(L".xlst")) + res = TCD_XLSXFLAT2XLST; + else if (0 == sExt2.compare(L".bin")) + res = TCD_XLSXFLAT2XLST_BIN; + else if (0 == sExt2.compare(L".xlsx")) + res = TCD_XLSXFLAT2XLSX; + } + break; case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX: case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM: case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX: - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM: - { - if (0 == sExt2.compare(L".xlst")) res = TCD_XLSX2XLST; - else if (0 == sExt2.compare(L".bin")) res = TCD_XLSX2XLST_BIN; - else if (0 == sExt2.compare(L".csv")) res = TCD_XLSX2CSV; - else if (0 == sExt2.compare(L".ods")) res = TCD_XLSX2ODS; - else if (0 == sExt2.compare(L".xlsx")) - { - if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX) - res = TCD_XLTX2XLSX; - if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM) - res = TCD_XLSM2XLSX; - if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM) - res = TCD_XLTM2XLSX; - } - else if (0 == sExt2.compare(L".xlsm")) res = TCD_XLTM2XLSM; - else if (0 == sExt2.compare(L".xlsb")) res = TCD_XLSX2XLSB; - }break; - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB: - { - if (0 == sExt2.compare(L".xlst")) res = TCD_XLSB2XLST; - } - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX: - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM: + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM: + { + if (0 == sExt2.compare(L".xlst")) + res = TCD_XLSX2XLST; + else if (0 == sExt2.compare(L".bin")) + res = TCD_XLSX2XLST_BIN; + else if (0 == sExt2.compare(L".csv")) + res = TCD_XLSX2CSV; + else if (0 == sExt2.compare(L".ods")) + res = TCD_XLSX2ODS; + else if (0 == sExt2.compare(L".xlsx")) + { + if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX) + res = TCD_XLTX2XLSX; + if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM) + res = TCD_XLSM2XLSX; + if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM) + res = TCD_XLTM2XLSX; + } + else if (0 == sExt2.compare(L".xlsm")) + res = TCD_XLTM2XLSM; + else if (0 == sExt2.compare(L".xlsb")) + res = TCD_XLSX2XLSB; + } + break; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB: + { + if (0 == sExt2.compare(L".xlst")) + res = TCD_XLSB2XLST; + } + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX: + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM: case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX: - case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX: - case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM: + case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX: + case AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM: case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM: + { + if (0 == sExt2.compare(L".bin")) + res = TCD_PPTX2PPTT_BIN; + else if (0 == sExt2.compare(L".pptt")) + res = TCD_PPTX2PPTT; + else if (0 == sExt2.compare(L".pptx")) { - if (0 == sExt2.compare(L".bin")) res = TCD_PPTX2PPTT_BIN; - else if (0 == sExt2.compare(L".pptt")) res = TCD_PPTX2PPTT; - else if (0 == sExt2.compare(L".pptx")) - { - if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX) - res = TCD_PPSX2PPTX; - if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX) - res = TCD_POTX2PPTX; - if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM) - res = TCD_PPTM2PPTX; - if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM) - res = TCD_POTM2PPTX; - if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM) - res = TCD_PPSM2PPTX; - } - else if (0 == sExt2.compare(L".pptm")) - { - if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM) - res = TCD_PPSM2PPTM; - if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM) - res = TCD_POTM2PPTM; - } - else if (0 == sExt2.compare(L".odp")) res = TCD_PPTX2ODP; - }break; + if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX) + res = TCD_PPSX2PPTX; + if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX) + res = TCD_POTX2PPTX; + if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM) + res = TCD_PPTM2PPTX; + if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM) + res = TCD_POTM2PPTX; + if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM) + res = TCD_PPSM2PPTX; + } + else if (0 == sExt2.compare(L".pptm")) + { + if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSM) + res = TCD_PPSM2PPTM; + if (OfficeFileFormatChecker.nFileType == AVS_OFFICESTUDIO_FILE_PRESENTATION_POTM) + res = TCD_POTM2PPTM; + } + else if (0 == sExt2.compare(L".odp")) + res = TCD_PPTX2ODP; + } + break; case AVS_OFFICESTUDIO_FILE_TEAMLAB_DOCY: - { - if (0 == sExt2.compare(L".oform")) res = TCD_DOCT2OFORM; - else if (0 == sExt2.compare(L".docxf")) res = TCD_DOCT2DOCXF; - else if (0 == sExt2.compare(L".docx")) res = TCD_DOCT2DOCX; - else if (0 == sExt2.compare(L".docm")) res = TCD_DOCT2DOCM; - else if (0 == sExt2.compare(L".dotx")) res = TCD_DOCT2DOTX; - else if (0 == sExt2.compare(L".bin")) res = TCD_T2BIN; - else if (0 == sExt2.compare(L".rtf")) res = TCD_DOCT2RTF; - }break; + { + if (0 == sExt2.compare(L".oform")) + res = TCD_DOCT2OFORM; + else if (0 == sExt2.compare(L".docxf")) + res = TCD_DOCT2DOCXF; + else if (0 == sExt2.compare(L".docx")) + res = TCD_DOCT2DOCX; + else if (0 == sExt2.compare(L".docm")) + res = TCD_DOCT2DOCM; + else if (0 == sExt2.compare(L".dotx")) + res = TCD_DOCT2DOTX; + else if (0 == sExt2.compare(L".bin")) + res = TCD_T2BIN; + else if (0 == sExt2.compare(L".rtf")) + res = TCD_DOCT2RTF; + } + break; case AVS_OFFICESTUDIO_FILE_TEAMLAB_XLSY: - { - if (0 == sExt2.compare(L".xlsx")) res = TCD_XLST2XLSX; - else if (0 == sExt2.compare(L".xlsm")) res = TCD_XLST2XLSM; - else if (0 == sExt2.compare(L".xltx")) res = TCD_XLST2XLTX; - else if (0 == sExt2.compare(L".bin")) res = TCD_T2BIN; - else if (0 == sExt2.compare(L".csv")) res = TCD_XLST2CSV; - }break; + { + if (0 == sExt2.compare(L".xlsx")) + res = TCD_XLST2XLSX; + else if (0 == sExt2.compare(L".xlsm")) + res = TCD_XLST2XLSM; + else if (0 == sExt2.compare(L".xltx")) + res = TCD_XLST2XLTX; + else if (0 == sExt2.compare(L".bin")) + res = TCD_T2BIN; + else if (0 == sExt2.compare(L".csv")) + res = TCD_XLST2CSV; + } + break; case AVS_OFFICESTUDIO_FILE_TEAMLAB_PPTY: - { - if (0 == sExt2.compare(L".pptx")) res = TCD_PPTT2PPTX; - else if (0 == sExt2.compare(L".pptm")) res = TCD_PPTT2PPTM; - else if (0 == sExt2.compare(L".potx")) res = TCD_PPTT2POTX; - else if (0 == sExt2.compare(L".bin")) res = TCD_T2BIN; - }break; + { + if (0 == sExt2.compare(L".pptx")) + res = TCD_PPTT2PPTX; + else if (0 == sExt2.compare(L".pptm")) + res = TCD_PPTT2PPTM; + else if (0 == sExt2.compare(L".potx")) + res = TCD_PPTT2POTX; + else if (0 == sExt2.compare(L".bin")) + res = TCD_T2BIN; + } + break; case AVS_OFFICESTUDIO_FILE_CANVAS_WORD: - { - if (0 == sExt2.compare(L".docx")) res = TCD_DOCT_BIN2DOCX; - else if (0 == sExt2.compare(L".docm")) res = TCD_DOCT_BIN2DOCX; - else if (0 == sExt2.compare(L".oform")) res = TCD_DOCT_BIN2DOCX; - else if (0 == sExt2.compare(L".dotx")) res = TCD_DOCT_BIN2DOCX; - else if (0 == sExt2.compare(L".doct")) res = TCD_BIN2T; - else if (0 == sExt2.compare(L".rtf")) res = TCD_DOCT_BIN2RTF; - }break; + { + if (0 == sExt2.compare(L".docx")) + res = TCD_DOCT_BIN2DOCX; + else if (0 == sExt2.compare(L".docm")) + res = TCD_DOCT_BIN2DOCX; + else if (0 == sExt2.compare(L".oform")) + res = TCD_DOCT_BIN2DOCX; + else if (0 == sExt2.compare(L".dotx")) + res = TCD_DOCT_BIN2DOCX; + else if (0 == sExt2.compare(L".doct")) + res = TCD_BIN2T; + else if (0 == sExt2.compare(L".rtf")) + res = TCD_DOCT_BIN2RTF; + } + break; case AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET: - { - if (0 == sExt2.compare(L".xlsx")) res = TCD_XLST_BIN2XLSX; - else if (0 == sExt2.compare(L".xlsm")) res = TCD_XLST_BIN2XLSX; - else if (0 == sExt2.compare(L".xltx")) res = TCD_XLST_BIN2XLSX; - else if (0 == sExt2.compare(L".xlst")) res = TCD_BIN2T; - else if (0 == sExt2.compare(L".csv")) res = TCD_XLST_BIN2CSV; - }break; + { + if (0 == sExt2.compare(L".xlsx")) + res = TCD_XLST_BIN2XLSX; + else if (0 == sExt2.compare(L".xlsm")) + res = TCD_XLST_BIN2XLSX; + else if (0 == sExt2.compare(L".xltx")) + res = TCD_XLST_BIN2XLSX; + else if (0 == sExt2.compare(L".xlst")) + res = TCD_BIN2T; + else if (0 == sExt2.compare(L".csv")) + res = TCD_XLST_BIN2CSV; + } + break; case AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION: - { - if (0 == sExt2.compare(L".pptx")) res = TCD_PPTT_BIN2PPTX; - else if (0 == sExt2.compare(L".pptm")) res = TCD_PPTT_BIN2PPTX; - else if (0 == sExt2.compare(L".potx")) res = TCD_PPTT_BIN2PPTX; - else if (0 == sExt2.compare(L".pptt")) res = TCD_BIN2T; - }break; + { + if (0 == sExt2.compare(L".pptx")) + res = TCD_PPTT_BIN2PPTX; + else if (0 == sExt2.compare(L".pptm")) + res = TCD_PPTT_BIN2PPTX; + else if (0 == sExt2.compare(L".potx")) + res = TCD_PPTT_BIN2PPTX; + else if (0 == sExt2.compare(L".pptt")) + res = TCD_BIN2T; + } + break; case AVS_OFFICESTUDIO_FILE_CANVAS_PDF: - { - if (0 == sExt2.compare(L".pdf")) res = TCD_BIN2PDF; - }break; + { + if (0 == sExt2.compare(L".pdf")) + res = TCD_BIN2PDF; + } + break; case AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV: - { - if (0 == sExt2.compare(L".xlsx")) res = TCD_CSV2XLSX; - else if (0 == sExt2.compare(L".xlsm")) res = TCD_CSV2XLSX; - else if (0 == sExt2.compare(L".xlst")) res = TCD_CSV2XLST; - else if (0 == sExt2.compare(L".bin")) res = TCD_CSV2XLST_BIN; - }break; + { + if (0 == sExt2.compare(L".xlsx")) + res = TCD_CSV2XLSX; + else if (0 == sExt2.compare(L".xlsm")) + res = TCD_CSV2XLSX; + else if (0 == sExt2.compare(L".xlst")) + res = TCD_CSV2XLST; + else if (0 == sExt2.compare(L".bin")) + res = TCD_CSV2XLST_BIN; + } + break; case AVS_OFFICESTUDIO_FILE_DOCUMENT_RTF: - { - if (0 == sExt2.compare(L".docx")) res = TCD_RTF2DOCX; - else if (0 == sExt2.compare(L".docm")) res = TCD_RTF2DOCX; - else if (0 == sExt2.compare(L".doct")) res = TCD_RTF2DOCT; - else if (0 == sExt2.compare(L".bin")) res = TCD_RTF2DOCT_BIN; - }break; + { + if (0 == sExt2.compare(L".docx")) + res = TCD_RTF2DOCX; + else if (0 == sExt2.compare(L".docm")) + res = TCD_RTF2DOCX; + else if (0 == sExt2.compare(L".doct")) + res = TCD_RTF2DOCT; + else if (0 == sExt2.compare(L".bin")) + res = TCD_RTF2DOCT_BIN; + } + break; case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC: - case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC_FLAT: - { - if (0 == sExt2.compare(L".docx")) res = TCD_DOC2DOCX; - else if (0 == sExt2.compare(L".docm")) res = TCD_DOC2DOCM; - else if (0 == sExt2.compare(L".doct")) res = TCD_DOC2DOCT; - else if (0 == sExt2.compare(L".bin")) res = TCD_DOC2DOCT_BIN; - }break; - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS: - { - if (0 == sExt2.compare(L".xlsx")) res = TCD_XLS2XLSX; - else if (0 == sExt2.compare(L".xlsm")) res = TCD_XLS2XLSM; - else if (0 == sExt2.compare(L".xlst")) res = TCD_XLS2XLST; - else if (0 == sExt2.compare(L".bin")) res = TCD_XLS2XLST_BIN; - }break; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT: - { - if (0 == sExt2.compare(L".docx")) res = TCD_TXT2DOCX; - else if (0 == sExt2.compare(L".docm")) res = TCD_TXT2DOCX; - else if (0 == sExt2.compare(L".doct")) res = TCD_TXT2DOCT; - else if (0 == sExt2.compare(L".bin")) res = TCD_TXT2DOCT_BIN; - }break; - case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPT: - {//pot,pps - by extension - potx(potm), ppsx(ppsm) - if (0 == sExt2.compare(L".pptx")) res = TCD_PPT2PPTX; - else if (0 == sExt2.compare(L".pptm")) res = TCD_PPT2PPTM; - else if (0 == sExt2.compare(L".bin")) res = TCD_PPT2PPTT_BIN; - else if (0 == sExt2.compare(L".pptt")) res = TCD_PPT2PPTT; - }break; - case AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT: - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS: - case AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP: - case AVS_OFFICESTUDIO_FILE_DOCUMENT_OTT: - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_OTS: - case AVS_OFFICESTUDIO_FILE_PRESENTATION_OTP: - { - if (0 == sExt2.compare(L".bin")) res = TCD_ODF2OOT_BIN; - else if (0 == sExt2.compare(L".doct") || - 0 == sExt2.compare(L".xlst") || - 0 == sExt2.compare(L".pptt")) res = TCD_ODF2OOT; - else if (0 == sExt2.compare(L".docx") || - 0 == sExt2.compare(L".xlsx") || - 0 == sExt2.compare(L".pptx")) res = TCD_ODF2OOX; - else if (0 == sExt2.compare(L".docm") || - 0 == sExt2.compare(L".xlsm") || - 0 == sExt2.compare(L".pptm")) res = TCD_ODF2OOX; - else if (0 == sExt2.compare(L".odt") - && type == AVS_OFFICESTUDIO_FILE_DOCUMENT_OTT) res = TCD_OTF2ODF; - else if (0 == sExt2.compare(L".ods") - && type == AVS_OFFICESTUDIO_FILE_SPREADSHEET_OTS) res = TCD_OTF2ODF; - else if (0 == sExt2.compare(L".odp") - && type == AVS_OFFICESTUDIO_FILE_PRESENTATION_OTP) res = TCD_OTF2ODF; - }break; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC_FLAT: + { + if (0 == sExt2.compare(L".docx")) + res = TCD_DOC2DOCX; + else if (0 == sExt2.compare(L".docm")) + res = TCD_DOC2DOCM; + else if (0 == sExt2.compare(L".doct")) + res = TCD_DOC2DOCT; + else if (0 == sExt2.compare(L".bin")) + res = TCD_DOC2DOCT_BIN; + } + break; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS: + { + if (0 == sExt2.compare(L".xlsx")) + res = TCD_XLS2XLSX; + else if (0 == sExt2.compare(L".xlsm")) + res = TCD_XLS2XLSM; + else if (0 == sExt2.compare(L".xlst")) + res = TCD_XLS2XLST; + else if (0 == sExt2.compare(L".bin")) + res = TCD_XLS2XLST_BIN; + } + break; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT: + { + if (0 == sExt2.compare(L".docx")) + res = TCD_TXT2DOCX; + else if (0 == sExt2.compare(L".docm")) + res = TCD_TXT2DOCX; + else if (0 == sExt2.compare(L".doct")) + res = TCD_TXT2DOCT; + else if (0 == sExt2.compare(L".bin")) + res = TCD_TXT2DOCT_BIN; + } + break; + case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPT: + { // pot,pps - by extension - potx(potm), ppsx(ppsm) + if (0 == sExt2.compare(L".pptx")) + res = TCD_PPT2PPTX; + else if (0 == sExt2.compare(L".pptm")) + res = TCD_PPT2PPTM; + else if (0 == sExt2.compare(L".bin")) + res = TCD_PPT2PPTT_BIN; + else if (0 == sExt2.compare(L".pptt")) + res = TCD_PPT2PPTT; + } + break; + case AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT: + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS: + case AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP: + case AVS_OFFICESTUDIO_FILE_DOCUMENT_OTT: + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_OTS: + case AVS_OFFICESTUDIO_FILE_PRESENTATION_OTP: + { + if (0 == sExt2.compare(L".bin")) + res = TCD_ODF2OOT_BIN; + else if (0 == sExt2.compare(L".doct") || 0 == sExt2.compare(L".xlst") || 0 == sExt2.compare(L".pptt")) + res = TCD_ODF2OOT; + else if (0 == sExt2.compare(L".docx") || 0 == sExt2.compare(L".xlsx") || 0 == sExt2.compare(L".pptx")) + res = TCD_ODF2OOX; + else if (0 == sExt2.compare(L".docm") || 0 == sExt2.compare(L".xlsm") || 0 == sExt2.compare(L".pptm")) + res = TCD_ODF2OOX; + else if (0 == sExt2.compare(L".odt") && type == AVS_OFFICESTUDIO_FILE_DOCUMENT_OTT) + res = TCD_OTF2ODF; + else if (0 == sExt2.compare(L".ods") && type == AVS_OFFICESTUDIO_FILE_SPREADSHEET_OTS) + res = TCD_OTF2ODF; + else if (0 == sExt2.compare(L".odp") && type == AVS_OFFICESTUDIO_FILE_PRESENTATION_OTP) + res = TCD_OTF2ODF; + } + break; case AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT_FLAT: - case AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS_FLAT: - case AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP_FLAT: - { - if (0 == sExt2.compare(L".bin")) res = TCD_ODF_FLAT2OOT_BIN; - else if (0 == sExt2.compare(L".doct") || - 0 == sExt2.compare(L".xlst") || - 0 == sExt2.compare(L".pptt")) res = TCD_ODF_FLAT2OOT; - else if (0 == sExt2.compare(L".docx") || - 0 == sExt2.compare(L".xlsx") || - 0 == sExt2.compare(L".pptx")) res = TCD_ODF_FLAT2OOX; - else if (0 == sExt2.compare(L".docm") || - 0 == sExt2.compare(L".xlsm") || - 0 == sExt2.compare(L".pptm")) res = TCD_ODF_FLAT2OOX; - }break; + case AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS_FLAT: + case AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP_FLAT: + { + if (0 == sExt2.compare(L".bin")) + res = TCD_ODF_FLAT2OOT_BIN; + else if (0 == sExt2.compare(L".doct") || 0 == sExt2.compare(L".xlst") || 0 == sExt2.compare(L".pptt")) + res = TCD_ODF_FLAT2OOT; + else if (0 == sExt2.compare(L".docx") || 0 == sExt2.compare(L".xlsx") || 0 == sExt2.compare(L".pptx")) + res = TCD_ODF_FLAT2OOX; + else if (0 == sExt2.compare(L".docm") || 0 == sExt2.compare(L".xlsm") || 0 == sExt2.compare(L".pptm")) + res = TCD_ODF_FLAT2OOX; + } + break; case AVS_OFFICESTUDIO_FILE_OTHER_MS_VBAPROJECT: - { - res = TCD_VBAPROJECT2XML; - }break; + { + res = TCD_VBAPROJECT2XML; + } + break; case AVS_OFFICESTUDIO_FILE_OTHER_MS_OFFCRYPTO: - { - if (0 == sExt2.compare(L".doct")) res = TCD_MSCRYPT2DOCT; - else if (0 == sExt2.compare(L".xlst")) res = TCD_MSCRYPT2XLST; - else if (0 == sExt2.compare(L".pptt")) res = TCD_MSCRYPT2PPTT; - else if (0 == sExt2.compare(L".bin")) res = TCD_MSCRYPT2BIN; - }break; + { + if (0 == sExt2.compare(L".doct")) + res = TCD_MSCRYPT2DOCT; + else if (0 == sExt2.compare(L".xlst")) + res = TCD_MSCRYPT2XLST; + else if (0 == sExt2.compare(L".pptt")) + res = TCD_MSCRYPT2PPTT; + else if (0 == sExt2.compare(L".bin")) + res = TCD_MSCRYPT2BIN; + } + break; case AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML_IN_CONTAINER: - { - if (0 == sExt2.compare(L".docx")) res = TCD_HTMLZIP2DOCX; - else if (0 == sExt2.compare(L".doct")) res = TCD_HTMLZIP2DOCT; - else if (0 == sExt2.compare(L".bin")) res = TCD_HTMLZIP2DOCT_BIN; - }break; + { + if (0 == sExt2.compare(L".docx")) + res = TCD_HTMLZIP2DOCX; + else if (0 == sExt2.compare(L".doct")) + res = TCD_HTMLZIP2DOCT; + else if (0 == sExt2.compare(L".bin")) + res = TCD_HTMLZIP2DOCT_BIN; + } + break; case AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML: - { - if (0 == sExt2.compare(L".docx")) res = TCD_HTML2DOCX; - else if (0 == sExt2.compare(L".doct")) res = TCD_HTML2DOCT; - else if (0 == sExt2.compare(L".bin")) res = TCD_HTML2DOCT_BIN; - }break; + { + if (0 == sExt2.compare(L".docx")) + res = TCD_HTML2DOCX; + else if (0 == sExt2.compare(L".doct")) + res = TCD_HTML2DOCT; + else if (0 == sExt2.compare(L".bin")) + res = TCD_HTML2DOCT_BIN; + } + break; case AVS_OFFICESTUDIO_FILE_DOCUMENT_FB2: - { - if (0 == sExt2.compare(L".docx")) res = TCD_FB22DOCX; - else if (0 == sExt2.compare(L".doct")) res = TCD_FB22DOCT; - else if (0 == sExt2.compare(L".bin")) res = TCD_FB22DOCT_BIN; - }break; + { + if (0 == sExt2.compare(L".docx")) + res = TCD_FB22DOCX; + else if (0 == sExt2.compare(L".doct")) + res = TCD_FB22DOCT; + else if (0 == sExt2.compare(L".bin")) + res = TCD_FB22DOCT_BIN; + } + break; case AVS_OFFICESTUDIO_FILE_DOCUMENT_EPUB: - { - if (0 == sExt2.compare(L".docx")) res = TCD_EPUB2DOCX; - else if (0 == sExt2.compare(L".doct")) res = TCD_EPUB2DOCT; - else if (0 == sExt2.compare(L".bin")) res = TCD_EPUB2DOCT_BIN; - }break; - } - } + { + if (0 == sExt2.compare(L".docx")) + res = TCD_EPUB2DOCX; + else if (0 == sExt2.compare(L".doct")) + res = TCD_EPUB2DOCT; + else if (0 == sExt2.compare(L".bin")) + res = TCD_EPUB2DOCT_BIN; + } + break; + } + } } return res; - } - std::wstring getMailMergeXml(const std::wstring& sJsonPath, int nRecordFrom, int nRecordTo, const std::wstring& sField) - { - NSStringUtils::CStringBuilder oBuilder; - oBuilder.WriteString(L""); - return oBuilder.GetData(); - } - std::wstring getDoctXml(NSDoctRenderer::DoctRendererFormat::FormatFile eFromType, NSDoctRenderer::DoctRendererFormat::FormatFile eToType, - const std::wstring& sTFileSrc, const std::wstring& sPdfBinFile, const std::wstring& sImagesDirectory, - const std::wstring& sThemeDir, int nTopIndex, const std::wstring& sMailMerge, const InputParams& params) - { - NSStringUtils::CStringBuilder oBuilder; - oBuilder.WriteString(L""); - oBuilder.AddInt((int)eFromType); - oBuilder.WriteString(L""); - oBuilder.AddInt((int)eToType); - oBuilder.WriteString(L""); - oBuilder.WriteEncodeXmlString(sTFileSrc.c_str()); - oBuilder.WriteString(L""); - oBuilder.WriteEncodeXmlString(sPdfBinFile.c_str()); - oBuilder.WriteString(L""); - oBuilder.WriteEncodeXmlString(params.getFontPath().c_str()); - oBuilder.WriteString(L""); - oBuilder.WriteEncodeXmlString(sImagesDirectory.c_str()); - oBuilder.WriteString(L""); - oBuilder.WriteEncodeXmlString(sThemeDir.c_str()); - oBuilder.WriteString(L""); - if(NULL != params.m_nLcid) + } + std::wstring getMailMergeXml(const std::wstring& sJsonPath, int nRecordFrom, int nRecordTo, const std::wstring& sField) + { + NSStringUtils::CStringBuilder oBuilder; + oBuilder.WriteString(L""); + return oBuilder.GetData(); + } + std::wstring getDoctXml( + NSDoctRenderer::DoctRendererFormat::FormatFile eFromType, NSDoctRenderer::DoctRendererFormat::FormatFile eToType, const std::wstring& sTFileSrc, const std::wstring& sPdfBinFile, + const std::wstring& sImagesDirectory, const std::wstring& sThemeDir, int nTopIndex, const std::wstring& sMailMerge, const InputParams& params) + { + NSStringUtils::CStringBuilder oBuilder; + oBuilder.WriteString(L""); + oBuilder.AddInt((int)eFromType); + oBuilder.WriteString(L""); + oBuilder.AddInt((int)eToType); + oBuilder.WriteString(L""); + oBuilder.WriteEncodeXmlString(sTFileSrc.c_str()); + oBuilder.WriteString(L""); + oBuilder.WriteEncodeXmlString(sPdfBinFile.c_str()); + oBuilder.WriteString(L""); + oBuilder.WriteEncodeXmlString(params.getFontPath().c_str()); + oBuilder.WriteString(L""); + oBuilder.WriteEncodeXmlString(sImagesDirectory.c_str()); + oBuilder.WriteString(L""); + oBuilder.WriteEncodeXmlString(sThemeDir.c_str()); + oBuilder.WriteString(L""); + if (NULL != params.m_nLcid) { oBuilder.WriteString(L""); oBuilder.AddInt(*params.m_nLcid); @@ -444,7 +569,8 @@ namespace NExtractTools if (NULL != params.m_sJsonParams) { sJsonParams = *params.m_sJsonParams; - if (bOnlyOnePage){ + if (bOnlyOnePage) + { sJsonParams.insert(1, L"\"printOptions\":{\"onlyFirstPage\":true},"); } } @@ -464,124 +590,126 @@ namespace NExtractTools oBuilder.WriteEncodeXmlString(*params.m_sScriptsCacheDirectory); oBuilder.WriteString(L""); } - oBuilder.WriteString(L""); - std::wstring sChangesDir = NSDirectory::GetFolderPath(sTFileSrc) + FILE_SEPARATOR_STR + L"changes"; - if (NSDirectory::Exists(sChangesDir)) - { - std::vector aChangesFiles; - std::vector oArray; - std::vector aFiles; + oBuilder.WriteString(L""); + std::wstring sChangesDir = NSDirectory::GetFolderPath(sTFileSrc) + FILE_SEPARATOR_STR + L"changes"; + if (NSDirectory::Exists(sChangesDir)) + { + std::vector aChangesFiles; + std::vector oArray; + std::vector aFiles; - NSDirectory::GetFiles2(sChangesDir, oArray, false); + NSDirectory::GetFiles2(sChangesDir, oArray, false); - for(size_t i = 0; i < oArray.size(); ++i) - { - aChangesFiles.push_back(oArray[i]); - } - std::sort (aChangesFiles.begin(), aChangesFiles.end(), compare_string_by_length); + for (size_t i = 0; i < oArray.size(); ++i) + { + aChangesFiles.push_back(oArray[i]); + } + std::sort(aChangesFiles.begin(), aChangesFiles.end(), compare_string_by_length); - for(size_t i = 0; i < aChangesFiles.size(); ++i) - { - oBuilder.WriteString(L""); - oBuilder.WriteEncodeXmlString(aChangesFiles[i]); - oBuilder.WriteString(L""); - } - } - oBuilder.WriteString(L""); - oBuilder.WriteString(sMailMerge); - oBuilder.WriteString(L""); - return oBuilder.GetData(); - } - _UINT32 apply_changes(const std::wstring &sBinFrom, const std::wstring &sToResult, NSDoctRenderer::DoctRendererFormat::FormatFile eType, const std::wstring &sThemeDir, std::wstring &sBinTo, const InputParams& params) + for (size_t i = 0; i < aChangesFiles.size(); ++i) + { + oBuilder.WriteString(L""); + oBuilder.WriteEncodeXmlString(aChangesFiles[i]); + oBuilder.WriteString(L""); + } + } + oBuilder.WriteString(L""); + oBuilder.WriteString(sMailMerge); + oBuilder.WriteString(L""); + return oBuilder.GetData(); + } + _UINT32 apply_changes( + const std::wstring& sBinFrom, const std::wstring& sToResult, NSDoctRenderer::DoctRendererFormat::FormatFile eType, const std::wstring& sThemeDir, std::wstring& sBinTo, + const InputParams& params) { - std::wstring sBinDir = NSDirectory::GetFolderPath(sBinFrom); + std::wstring sBinDir = NSDirectory::GetFolderPath(sBinFrom); std::wstring sChangesDir = sBinDir + FILE_SEPARATOR_STR + L"changes"; - if (NSDirectory::Exists(sChangesDir)) - { + if (NSDirectory::Exists(sChangesDir)) + { std::wstring sBinFromFileName = NSFile::GetFileName(sBinFrom); std::wstring sBinFromExt = NSFile::GetFileExtention(sBinFromFileName); sBinTo = sBinDir + FILE_SEPARATOR_STR + sBinFromFileName.substr(0, sBinFromFileName.length() - sBinFromExt.length() - 1) + L"WithChanges." + sBinFromExt; std::wstring sImagesDirectory = sBinDir + FILE_SEPARATOR_STR + L"media"; - + NSDoctRenderer::CDoctrenderer oDoctRenderer(NULL != params.m_sAllFontsPath ? *params.m_sAllFontsPath : L""); - int nChangeIndex = -1; - while (true) - { - std::wstring sXml = getDoctXml(eType, eType, sBinFrom, sBinTo, sImagesDirectory, sThemeDir, nChangeIndex, L"", params); + int nChangeIndex = -1; + while (true) + { + std::wstring sXml = getDoctXml(eType, eType, sBinFrom, sBinTo, sImagesDirectory, sThemeDir, nChangeIndex, L"", params); std::wstring sResult; - oDoctRenderer.Execute(sXml, sResult); - bool bContinue = false; - if (!sResult.empty() && -1 != sResult.find(L"error")) - { - std::wcerr << L"DoctRenderer:" << sResult << std::endl; + oDoctRenderer.Execute(sXml, sResult); + bool bContinue = false; + if (!sResult.empty() && -1 != sResult.find(L"error")) + { + std::wcerr << L"DoctRenderer:" << sResult << std::endl; params.m_bOutputConvertCorrupted = true; - int nErrorIndex = -1; - int nErrorIndexStart = sResult.find(L"index"); - if (-1 != nErrorIndexStart) - { - nErrorIndexStart = sResult.find(L"\"", nErrorIndexStart + 1); - int nErrorIndexEnd = sResult.find(L"\"", nErrorIndexStart + 1); - nErrorIndex = XmlUtils::GetInteger(sResult.substr(nErrorIndexStart + 1, nErrorIndexEnd - nErrorIndexStart - 1)); - } - if (nErrorIndex > 0 && nChangeIndex != nErrorIndex) - { - nChangeIndex = nErrorIndex; - bContinue = true; - } - else + int nErrorIndex = -1; + int nErrorIndexStart = sResult.find(L"index"); + if (-1 != nErrorIndexStart) { - sBinTo = sBinFrom; + nErrorIndexStart = sResult.find(L"\"", nErrorIndexStart + 1); + int nErrorIndexEnd = sResult.find(L"\"", nErrorIndexStart + 1); + nErrorIndex = XmlUtils::GetInteger(sResult.substr(nErrorIndexStart + 1, nErrorIndexEnd - nErrorIndexStart - 1)); } - } - if (!bContinue) - { - if(!sToResult.empty() && !params.getDontSaveAdditional()) - { - std::vector aImages = oDoctRenderer.GetImagesInChanges(); - //todo сделать interface у COfficeUtils, чтобы можно было делать архив из файлов в разных папках. - for(size_t i = 0; i < aImages.size(); ++i) - { - std::wstring sImageName = aImages[i]; - std::wstring sImage = sImagesDirectory + FILE_SEPARATOR_STR + sImageName; - std::wstring sImageCopy = sChangesDir + FILE_SEPARATOR_STR + sImageName; - NSFile::CFileBinary::Copy(sImage, sImageCopy); - } + if (nErrorIndex > 0 && nChangeIndex != nErrorIndex) + { + nChangeIndex = nErrorIndex; + bContinue = true; + } + else + { + sBinTo = sBinFrom; + } + } + if (!bContinue) + { + if (!sToResult.empty() && !params.getDontSaveAdditional()) + { + std::vector aImages = oDoctRenderer.GetImagesInChanges(); + // todo сделать interface у COfficeUtils, чтобы можно было делать архив из файлов в разных папках. + for (size_t i = 0; i < aImages.size(); ++i) + { + std::wstring sImageName = aImages[i]; + std::wstring sImage = sImagesDirectory + FILE_SEPARATOR_STR + sImageName; + std::wstring sImageCopy = sChangesDir + FILE_SEPARATOR_STR + sImageName; + NSFile::CFileBinary::Copy(sImage, sImageCopy); + } ////copy doct for version history // std::wstring sBinCopy = sChangesDir + FILE_SEPARATOR_STR + NSSystemPath::GetFileName(sBinFrom); // NSFile::CFileBinary::Copy(sBinFrom, sBinCopy); - std::wstring sToResultDir = NSDirectory::GetFolderPath(sToResult); - std::wstring sTo = sToResultDir + FILE_SEPARATOR_STR + L"changes.zip"; - COfficeUtils oCOfficeUtils(NULL); - oCOfficeUtils.CompressFileOrDirectory(sChangesDir, sTo); - } - break; - } - } - } + std::wstring sToResultDir = NSDirectory::GetFolderPath(sToResult); + std::wstring sTo = sToResultDir + FILE_SEPARATOR_STR + L"changes.zip"; + COfficeUtils oCOfficeUtils(NULL); + oCOfficeUtils.CompressFileOrDirectory(sChangesDir, sTo); + } + break; + } + } + } else sBinTo = sBinFrom; return 0; - } + } bool InputParams::checkInputLimits() { std::wstring& sFrom = *this->m_sFileFrom; int nFormatFrom = *this->m_nFormatFrom; boost::unordered_map>::const_iterator itLimit = this->m_mapInputLimits.find(nFormatFrom); - if(itLimit != this->m_mapInputLimits.end()) + if (itLimit != this->m_mapInputLimits.end()) { for (size_t i = 0; i < itLimit->second.size(); ++i) { const InputLimit& oLimit = itLimit->second[i]; - if(oLimit.compressed > 0 || oLimit.uncompressed > 0) + if (oLimit.compressed > 0 || oLimit.uncompressed > 0) { ULONG64 nCompressed = 0; ULONG64 nUncompressed = 0; COfficeUtils oCOfficeUtils(NULL); oCOfficeUtils.GetFilesSize(sFrom, oLimit.pattern, nCompressed, nUncompressed); - if((oLimit.compressed > 0 && nCompressed > oLimit.compressed) || (oLimit.uncompressed > 0 && nUncompressed > oLimit.uncompressed)) + if ((oLimit.compressed > 0 && nCompressed > oLimit.compressed) || (oLimit.uncompressed > 0 && nUncompressed > oLimit.uncompressed)) { return false; } @@ -590,4 +718,4 @@ namespace NExtractTools } return true; } -} +} // namespace NExtractTools diff --git a/X2tConverter/src/cextracttools.h b/X2tConverter/src/cextracttools.h index 53ee3b951a..4a9fb27ee6 100644 --- a/X2tConverter/src/cextracttools.h +++ b/X2tConverter/src/cextracttools.h @@ -34,46 +34,48 @@ #include "../../Common/OfficeFileErrorDescription.h" #include "../../Common/OfficeFileFormatChecker.h" -#include "../../OOXML/SystemUtility/SystemUtility.h" #include "../../OOXML/Base/Unit.h" +#include "../../OOXML/SystemUtility/SystemUtility.h" #include "../../DesktopEditor/common/Directory.h" -#include "../../DesktopEditor/xml/include/xmlutils.h" -#include "../../DesktopEditor/doctrenderer/doctrenderer.h" -#include "../../DesktopEditor/common/StringBuilder.h" #include "../../DesktopEditor/common/Path.h" +#include "../../DesktopEditor/common/StringBuilder.h" +#include "../../DesktopEditor/doctrenderer/doctrenderer.h" +#include "../../DesktopEditor/common/ProcessEnv.h" -#include #include +#include -#include #include +#include #define SUCCEEDED_X2T(nRes) (0 == (nRes) || AVS_FILEUTILS_ERROR_CONVERT_ROWLIMITS == (nRes)) namespace NExtractTools { - static const wchar_t* gc_sDoctRendererXml = _T("%d%d%ls%ls%ls%ls%ls%ls%ls"); - static const wchar_t* gc_sDoctRendererMailMergeXml = _T(""); + static const wchar_t* gc_sDoctRendererXml = + _T("%d%d%ls%ls%ls%ls%ls%ls%ls"); + static const wchar_t* gc_sDoctRendererMailMergeXml = _T(""); - typedef enum tagTConversionDirection - { - TCD_ERROR, - TCD_AUTO, + typedef enum tagTConversionDirection + { + TCD_ERROR, + TCD_AUTO, TCD_NON_AUTO, - TCD_DOCX2DOCT, - TCD_DOCT2DOCX, + TCD_DOCX2DOCT, + TCD_DOCT2DOCX, TCD_DOCT2DOTX, TCD_DOCT2DOCM, TCD_DOCT2OFORM, TCD_DOCT2DOCXF, - TCD_DOCX2DOCT_BIN, - TCD_DOCT_BIN2DOCX, - TCD_DOTX2DOCX, + TCD_DOCX2DOCT_BIN, + TCD_DOCT_BIN2DOCX, + TCD_DOTX2DOCX, TCD_DOCM2DOCX, - TCD_DOTM2DOCX, - TCD_DOTM2DOCM, + TCD_DOTM2DOCX, + TCD_DOTM2DOCM, TCD_DOCXFLAT2DOCT, TCD_DOCXFLAT2DOCT_BIN, @@ -86,26 +88,26 @@ namespace NExtractTools TCD_XLSXFLAT2XLST_BIN, TCD_XLSXFLAT2XLSX, - TCD_XLSX2XLST, - TCD_XLST2XLSX, + TCD_XLSX2XLST, + TCD_XLST2XLSX, TCD_XLST2XLSM, TCD_XLST2XLTX, - TCD_XLSX2XLST_BIN, - TCD_XLST_BIN2XLSX, - TCD_XLTX2XLSX, + TCD_XLSX2XLST_BIN, + TCD_XLST_BIN2XLSX, + TCD_XLTX2XLSX, TCD_XLSM2XLSX, TCD_XLTM2XLSX, - TCD_XLTM2XLSM, - TCD_XLSB2XLST, + TCD_XLTM2XLSM, + TCD_XLSB2XLST, TCD_XLSX2XLSB, - TCD_PPTX2PPTT, - TCD_PPTT2PPTX, + TCD_PPTX2PPTT, + TCD_PPTT2PPTX, TCD_PPTT2POTX, TCD_PPTT2PPTM, - TCD_PPTX2PPTT_BIN, - TCD_PPTT_BIN2PPTX, - TCD_PPSX2PPTX, + TCD_PPTX2PPTT_BIN, + TCD_PPTT_BIN2PPTX, + TCD_PPSX2PPTX, TCD_POTX2PPTX, TCD_PPTM2PPTX, TCD_POTM2PPTX, @@ -113,82 +115,82 @@ namespace NExtractTools TCD_POTM2PPTM, TCD_PPSM2PPTM, - TCD_ZIPDIR, - TCD_UNZIPDIR, + TCD_ZIPDIR, + TCD_UNZIPDIR, - TCD_CSV2XLSX, - TCD_XLSX2CSV, + TCD_CSV2XLSX, + TCD_XLSX2CSV, - TCD_CSV2XLST, - TCD_XLST2CSV, - TCD_CSV2XLST_BIN, - TCD_XLST_BIN2CSV, + TCD_CSV2XLST, + TCD_XLST2CSV, + TCD_CSV2XLST_BIN, + TCD_XLST_BIN2CSV, - TCD_BIN2PDF, + TCD_BIN2PDF, - TCD_T2BIN, - TCD_BIN2T, + TCD_T2BIN, + TCD_BIN2T, -//ppt 2 - TCD_PPT2PPTX, - TCD_PPT2PPTT, - TCD_PPT2PPTT_BIN, - TCD_PPT2PPTM, -//doc 2 - TCD_DOC2DOCT, + // ppt 2 + TCD_PPT2PPTX, + TCD_PPT2PPTT, + TCD_PPT2PPTT_BIN, + TCD_PPT2PPTM, + // doc 2 + TCD_DOC2DOCT, TCD_DOC2DOCT_BIN, TCD_DOC2DOCX, TCD_DOC2DOCM, -//xls 2 - TCD_XLS2XLST, - TCD_XLS2XLST_BIN, - TCD_XLS2XLSX, + // xls 2 + TCD_XLS2XLST, + TCD_XLS2XLST_BIN, + TCD_XLS2XLSX, TCD_XLS2XLSM, -//rtf 2 - TCD_RTF2DOCX, + // rtf 2 + TCD_RTF2DOCX, TCD_RTF2DOCT, - TCD_RTF2DOCT_BIN, -//2 rtf - TCD_DOCT2RTF, - TCD_DOCX2RTF, - TCD_DOCT_BIN2RTF, -//xml 2 + TCD_RTF2DOCT_BIN, + // 2 rtf + TCD_DOCT2RTF, + TCD_DOCX2RTF, + TCD_DOCT_BIN2RTF, + // xml 2 TCD_XML2XLSX, -//txt 2 + // txt 2 TCD_TXT2DOCX, TCD_TXT2DOCT, TCD_TXT2DOCT_BIN, -//2 txt - TCD_DOCX2TXT, - TCD_DOCT2TXT, - TCD_DOCT_BIN2TXT, -//odf 2 - TCD_ODF2OOX, - TCD_ODF2OOT, - TCD_ODF2OOT_BIN, + // 2 txt + TCD_DOCX2TXT, + TCD_DOCT2TXT, + TCD_DOCT_BIN2TXT, + // odf 2 + TCD_ODF2OOX, + TCD_ODF2OOT, + TCD_ODF2OOT_BIN, TCD_OTF2ODF, -//odf flat 2 - TCD_ODF_FLAT2OOX, - TCD_ODF_FLAT2OOT, - TCD_ODF_FLAT2OOT_BIN, - TCD_ODF_FLAT2ODF,//todooo напрямую -//2 odt - TCD_DOCX2ODT, - TCD_DOCT2ODT, - TCD_DOCT_BIN2ODT, -//2 ods - TCD_XLSX2ODS, - TCD_XLST2ODS, - TCD_XLST_BIN2ODS, + // odf flat 2 + TCD_ODF_FLAT2OOX, + TCD_ODF_FLAT2OOT, + TCD_ODF_FLAT2OOT_BIN, + TCD_ODF_FLAT2ODF, // todooo напрямую + // 2 odt + TCD_DOCX2ODT, + TCD_DOCT2ODT, + TCD_DOCT_BIN2ODT, + // 2 ods + TCD_XLSX2ODS, + TCD_XLST2ODS, + TCD_XLST_BIN2ODS, + + // 2 odp + TCD_PPTX2ODP, + TCD_PPTT2ODP, + TCD_PPTX_BIN2ODP, -//2 odp - TCD_PPTX2ODP, - TCD_PPTT2ODP, - TCD_PPTX_BIN2ODP, - TCD_XML2DOCX, - TCD_DOCX2XML, -// + TCD_DOCX2XML, + // TCD_MSCRYPT2, TCD_MSCRYPT2DOCT, TCD_MSCRYPT2XLST, @@ -202,7 +204,7 @@ namespace NExtractTools TCD_VBAPROJECT2XML, -// + // TCD_HTML2DOCX, TCD_HTML2DOCT, TCD_HTML2DOCT_BIN, @@ -210,7 +212,7 @@ namespace NExtractTools TCD_HTMLZIP2DOCX, TCD_HTMLZIP2DOCT, TCD_HTMLZIP2DOCT_BIN, - + TCD_FB22DOCX, TCD_FB22DOCT, TCD_FB22DOCT_BIN, @@ -219,128 +221,128 @@ namespace NExtractTools TCD_EPUB2DOCT, TCD_EPUB2DOCT_BIN, - TCD_MAILMERGE, - TCD_T2, - TCD_DOCT_BIN2, - TCD_XLST_BIN2, - TCD_PPTT_BIN2, - TCD_DOCUMENT2, - TCD_SPREADSHEET2, - TCD_PRESENTATION2, - TCD_CROSSPLATFORM2, - TCD_CANVAS_PDF2 + TCD_MAILMERGE, + TCD_T2, + TCD_DOCT_BIN2, + TCD_XLST_BIN2, + TCD_PPTT_BIN2, + TCD_DOCUMENT2, + TCD_SPREADSHEET2, + TCD_PRESENTATION2, + TCD_CROSSPLATFORM2, + TCD_CANVAS_PDF2 } TConversionDirection; - typedef enum tagTCsvDelimiter - { - TCSVD_NONE = 0, - TCSVD_TAB = 1, - TCSVD_SEMICOLON = 2, - TCSVD_COLON = 3, - TCSVD_COMMA = 4, - TCSVD_SPACE = 5 - } TCsvDelimiter; + typedef enum tagTCsvDelimiter + { + TCSVD_NONE = 0, + TCSVD_TAB = 1, + TCSVD_SEMICOLON = 2, + TCSVD_COLON = 3, + TCSVD_COMMA = 4, + TCSVD_SPACE = 5 + } TCsvDelimiter; - const TConversionDirection getConversionDirectionFromExt (const std::wstring &sFile1, const std::wstring &sFile2); + const TConversionDirection getConversionDirectionFromExt(const std::wstring& sFile1, const std::wstring& sFile2); - static bool copyOrigin(const std::wstring& sFileFrom, const std::wstring& sFileTo) - { - size_t nIndex = sFileFrom.rfind('.'); - return NSFile::CFileBinary::Copy(sFileFrom, NSSystemPath::GetDirectoryName(sFileTo) + FILE_SEPARATOR_STR + _T("origin") + sFileFrom.substr(nIndex)); - } + static bool copyOrigin(const std::wstring& sFileFrom, const std::wstring& sFileTo) + { + size_t nIndex = sFileFrom.rfind('.'); + return NSFile::CFileBinary::Copy(sFileFrom, NSSystemPath::GetDirectoryName(sFileTo) + FILE_SEPARATOR_STR + _T("origin") + sFileFrom.substr(nIndex)); + } - class InputParamsMailMerge - { - public: - std::wstring* fileName; - std::wstring* from; - std::wstring* jsonKey ; - int* mailFormat; - std::wstring* message; - int* recordCount; - int* recordFrom; - int* recordTo; - std::wstring* subject; - std::wstring* to; - std::wstring* url; - std::wstring* userid; - InputParamsMailMerge() - { - fileName = NULL; - from = NULL; - jsonKey = NULL; - mailFormat = NULL; - message = NULL; - recordCount = NULL; - recordFrom = NULL; - recordTo = NULL; - subject = NULL; - to = NULL; - url = NULL; - userid = NULL; - } - ~InputParamsMailMerge() - { - RELEASEOBJECT(fileName); - RELEASEOBJECT(from); - RELEASEOBJECT(jsonKey); - RELEASEOBJECT(mailFormat); - RELEASEOBJECT(message); - RELEASEOBJECT(recordCount); - RELEASEOBJECT(recordFrom); - RELEASEOBJECT(recordTo); - RELEASEOBJECT(subject); - RELEASEOBJECT(to); - RELEASEOBJECT(url); - RELEASEOBJECT(userid); - } + class InputParamsMailMerge + { + public: + std::wstring* fileName; + std::wstring* from; + std::wstring* jsonKey; + int* mailFormat; + std::wstring* message; + int* recordCount; + int* recordFrom; + int* recordTo; + std::wstring* subject; + std::wstring* to; + std::wstring* url; + std::wstring* userid; + InputParamsMailMerge() + { + fileName = NULL; + from = NULL; + jsonKey = NULL; + mailFormat = NULL; + message = NULL; + recordCount = NULL; + recordFrom = NULL; + recordTo = NULL; + subject = NULL; + to = NULL; + url = NULL; + userid = NULL; + } + ~InputParamsMailMerge() + { + RELEASEOBJECT(fileName); + RELEASEOBJECT(from); + RELEASEOBJECT(jsonKey); + RELEASEOBJECT(mailFormat); + RELEASEOBJECT(message); + RELEASEOBJECT(recordCount); + RELEASEOBJECT(recordFrom); + RELEASEOBJECT(recordTo); + RELEASEOBJECT(subject); + RELEASEOBJECT(to); + RELEASEOBJECT(url); + RELEASEOBJECT(userid); + } - bool FromXmlNode(XmlUtils::CXmlNode& oNode) - { - std::vector oXmlNodes; - if (TRUE == oNode.GetChilds(oXmlNodes)) - { - for(size_t i = 0; i < oXmlNodes.size(); ++i) - { - XmlUtils::CXmlNode & oXmlNode = oXmlNodes[i]; - if (oXmlNode.IsValid()) - { - std::wstring sValue; - if (oXmlNode.GetTextIfExist(sValue)) - { - std::wstring sName = oXmlNode.GetName(); + bool FromXmlNode(XmlUtils::CXmlNode& oNode) + { + std::vector oXmlNodes; + if (TRUE == oNode.GetChilds(oXmlNodes)) + { + for (size_t i = 0; i < oXmlNodes.size(); ++i) + { + XmlUtils::CXmlNode& oXmlNode = oXmlNodes[i]; + if (oXmlNode.IsValid()) + { + std::wstring sValue; + if (oXmlNode.GetTextIfExist(sValue)) + { + std::wstring sName = oXmlNode.GetName(); - if (_T("fileName") == sName) - fileName = new std::wstring(sValue); - else if (_T("from") == sName) - from = new std::wstring(sValue); - else if (_T("jsonKey") == sName) - jsonKey = new std::wstring(sValue); - else if (_T("mailFormat") == sName) - mailFormat = new int(XmlUtils::GetInteger(sValue)); - else if (_T("message") == sName) - message = new std::wstring(sValue); - else if (_T("recordCount") == sName) - recordCount = new int(XmlUtils::GetInteger(sValue)); - else if (_T("recordFrom") == sName) - recordFrom = new int(XmlUtils::GetInteger(sValue)); - else if (_T("recordTo") == sName) - recordTo = new int(XmlUtils::GetInteger(sValue)); - else if (_T("subject") == sName) - subject = new std::wstring(sValue); - else if (_T("to") == sName) - to = new std::wstring(sValue); - else if (_T("url") == sName) - url = new std::wstring(sValue); - else if (_T("userid") == sName) - userid = new std::wstring(sValue); - } - } - } - } - return true; - } - }; + if (_T("fileName") == sName) + fileName = new std::wstring(sValue); + else if (_T("from") == sName) + from = new std::wstring(sValue); + else if (_T("jsonKey") == sName) + jsonKey = new std::wstring(sValue); + else if (_T("mailFormat") == sName) + mailFormat = new int(XmlUtils::GetInteger(sValue)); + else if (_T("message") == sName) + message = new std::wstring(sValue); + else if (_T("recordCount") == sName) + recordCount = new int(XmlUtils::GetInteger(sValue)); + else if (_T("recordFrom") == sName) + recordFrom = new int(XmlUtils::GetInteger(sValue)); + else if (_T("recordTo") == sName) + recordTo = new int(XmlUtils::GetInteger(sValue)); + else if (_T("subject") == sName) + subject = new std::wstring(sValue); + else if (_T("to") == sName) + to = new std::wstring(sValue); + else if (_T("url") == sName) + url = new std::wstring(sValue); + else if (_T("userid") == sName) + userid = new std::wstring(sValue); + } + } + } + } + return true; + } + }; class InputParamsThumbnail { @@ -380,7 +382,7 @@ namespace NExtractTools XmlUtils::CXmlNode& oXmlNode = oXmlNodes[i]; if (oXmlNode.IsValid()) { - std::wstring sValue; + std::wstring sValue; if (oXmlNode.GetTextIfExist(sValue)) { std::wstring sName = oXmlNode.GetName(); @@ -474,7 +476,7 @@ namespace NExtractTools std::wstring* m_sAllFontsPath; std::wstring* m_sFontDir; std::wstring* m_sThemeDir; - InputParamsMailMerge* m_oMailMergeSend; + InputParamsMailMerge* m_oMailMergeSend; InputParamsThumbnail* m_oThumbnail; InputParamsText* m_oTextParams; std::wstring* m_sJsonParams; @@ -487,9 +489,10 @@ namespace NExtractTools bool* m_bIsPDFA; std::wstring* m_sConvertToOrigin; std::wstring* m_sScriptsCacheDirectory; - //output params + // output params mutable bool m_bOutputConvertCorrupted; mutable bool m_bMacro; + public: InputParams() { @@ -497,7 +500,7 @@ namespace NExtractTools m_sFileFrom = NULL; m_sFileTo = NULL; m_sTitle = NULL; - m_nFormatFrom = new int(AVS_OFFICESTUDIO_FILE_UNKNOWN); + m_nFormatFrom = new int(AVS_OFFICESTUDIO_FILE_UNKNOWN); m_nFormatTo = NULL; m_nCsvTxtEncoding = NULL; m_nCsvDelimiter = NULL; @@ -509,7 +512,7 @@ namespace NExtractTools m_sAllFontsPath = NULL; m_sFontDir = NULL; m_sThemeDir = NULL; - m_oMailMergeSend = NULL; + m_oMailMergeSend = NULL; m_oThumbnail = NULL; m_oTextParams = NULL; m_sJsonParams = NULL; @@ -543,7 +546,7 @@ namespace NExtractTools RELEASEOBJECT(m_sAllFontsPath); RELEASEOBJECT(m_sFontDir); RELEASEOBJECT(m_sThemeDir); - RELEASEOBJECT(m_oMailMergeSend); + RELEASEOBJECT(m_oMailMergeSend); RELEASEOBJECT(m_oThumbnail); RELEASEOBJECT(m_oTextParams); RELEASEOBJECT(m_sJsonParams); @@ -556,11 +559,11 @@ namespace NExtractTools RELEASEOBJECT(m_sConvertToOrigin); RELEASEOBJECT(m_sScriptsCacheDirectory); } - + bool FromXmlFile(const std::wstring& sFilename) { XmlUtils::CXmlNode oRoot; - if (TRUE == oRoot.FromXmlFile(sFilename)) + if (TRUE == oRoot.FromXmlFile(sFilename)) { return FromXmlNode(oRoot); } @@ -614,9 +617,13 @@ namespace NExtractTools { FromLimitsNode(oXmlNode); } + else if (_T("options") == sName) + { + NSProcessEnv::Load(oXmlNode); + } else { - std::wstring sValue; + std::wstring sValue; if (oXmlNode.GetTextIfExist(sValue)) { if (_T("m_sKey") == sName) @@ -766,9 +773,9 @@ namespace NExtractTools std::vector oLimitsNode; if (oXmlNode.GetNodes(L"m_oInputLimit", oLimitsNode)) { - for(size_t i = 0; i < oLimitsNode.size(); ++i) + for (size_t i = 0; i < oLimitsNode.size(); ++i) { - XmlUtils::CXmlNode & oLimitNode = oLimitsNode[i]; + XmlUtils::CXmlNode& oLimitNode = oLimitsNode[i]; if (oLimitNode.IsValid()) { std::wstring sType; @@ -801,9 +808,9 @@ namespace NExtractTools return NULL != m_sPassword; } std::wstring getPassword() const - { - return (NULL != m_sPassword) ? (*m_sPassword) : L""; - } + { + return (NULL != m_sPassword) ? (*m_sPassword) : L""; + } bool hasSavePassword() const { return NULL != m_sSavePassword; @@ -817,9 +824,9 @@ namespace NExtractTools return (NULL != m_sDocumentID) ? (*m_sDocumentID) : L""; } std::wstring getFontPath() const - { - return (NULL != m_sFontDir) ? (*m_sFontDir) : L""; - } + { + return (NULL != m_sFontDir) ? (*m_sFontDir) : L""; + } bool getIsNoBase64() const { return (NULL != m_bIsNoBase64) ? (*m_bIsNoBase64) : true; @@ -839,58 +846,68 @@ namespace NExtractTools size_t index = getConvertToOrigin().find(sExt); return std::wstring::npos != index; } - std::wstring getXmlOptions() + std::wstring getXmlOptions() { - std::wstring sRes; - int nCsvEncoding = 46;//65001 utf8 + std::wstring sRes; + int nCsvEncoding = 46; // 65001 utf8 std::wstring cDelimiter = L","; - if (NULL != m_nCsvTxtEncoding) + if (NULL != m_nCsvTxtEncoding) nCsvEncoding = *m_nCsvTxtEncoding; if (NULL != m_nCsvDelimiter) { switch (*m_nCsvDelimiter) { - case TCSVD_TAB: cDelimiter = L"\t"; break; - case TCSVD_SEMICOLON: cDelimiter = L";"; break; - case TCSVD_COLON: cDelimiter = L":"; break; - case TCSVD_COMMA: cDelimiter = L","; break; - case TCSVD_SPACE: cDelimiter = L" "; break; + case TCSVD_TAB: + cDelimiter = L"\t"; + break; + case TCSVD_SEMICOLON: + cDelimiter = L";"; + break; + case TCSVD_COLON: + cDelimiter = L":"; + break; + case TCSVD_COMMA: + cDelimiter = L","; + break; + case TCSVD_SPACE: + cDelimiter = L" "; + break; } } if (NULL != m_sCsvDelimiterChar) { cDelimiter = *m_sCsvDelimiterChar; } - int nFileType = 1; - if (NULL != m_nFormatFrom && AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV == *m_nFormatFrom) - nFileType = 2; - else if (NULL != m_nFormatFrom && AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB == *m_nFormatFrom) - nFileType = 4; + int nFileType = 1; + if (NULL != m_nFormatFrom && AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV == *m_nFormatFrom) + nFileType = 2; + else if (NULL != m_nFormatFrom && AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSB == *m_nFormatFrom) + nFileType = 4; - std::wstring sSaveType; - if (NULL != m_nFormatTo) - { - if (AVS_OFFICESTUDIO_FILE_OTHER_JSON == *m_nFormatTo) - sSaveType = _T(" saveFileType='3'"); - else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV == *m_nFormatTo) - nFileType = 2; - } - sRes = L"" + std::to_wstring(nCsvEncoding) + L""; + sRes += L"/>" + std::to_wstring(nCsvEncoding) + L""; - return sRes; + return sRes; } TConversionDirection getConversionDirection() { TConversionDirection eRes = TCD_AUTO; if ((NULL == m_nFormatFrom || AVS_OFFICESTUDIO_FILE_UNKNOWN == *m_nFormatFrom) && NULL == m_nFormatTo && NULL != m_sFileFrom && NULL != m_sFileTo) { - eRes = getConversionDirectionFromExt (*m_sFileFrom, *m_sFileTo); + eRes = getConversionDirectionFromExt(*m_sFileFrom, *m_sFileTo); if (TCD_ERROR != eRes) return eRes; COfficeFileFormatChecker FileFormatChecker; @@ -902,303 +919,291 @@ namespace NExtractTools if (NULL != m_nFormatFrom && NULL != m_nFormatTo) { - int nFormatFrom = *m_nFormatFrom; - int nFormatTo = *m_nFormatTo; + int nFormatFrom = *m_nFormatFrom; + int nFormatTo = *m_nFormatTo; - COfficeFileFormatChecker FileFormatChecker; + COfficeFileFormatChecker FileFormatChecker; - if ((m_sFileFrom) && (FileFormatChecker.isOfficeFile(*m_sFileFrom))) - { - if (nFormatFrom != FileFormatChecker.nFileType && - FileFormatChecker.nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) - { - nFormatFrom = FileFormatChecker.nFileType; + if ((m_sFileFrom) && (FileFormatChecker.isOfficeFile(*m_sFileFrom))) + { + if (nFormatFrom != FileFormatChecker.nFileType && FileFormatChecker.nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN) + { + nFormatFrom = FileFormatChecker.nFileType; changeFormatFrom(nFormatFrom, FileFormatChecker.bMacroEnabled); - } - } - eRes = processDownloadFile(); - if (TCD_AUTO != eRes) - return eRes; + } + } + eRes = processDownloadFile(); + if (TCD_AUTO != eRes) + return eRes; - if (NULL != m_oMailMergeSend) - eRes = TCD_MAILMERGE; + if (NULL != m_oMailMergeSend) + eRes = TCD_MAILMERGE; else if ((AVS_OFFICESTUDIO_FILE_DOCUMENT_XML == nFormatFrom) && 0 != (AVS_OFFICESTUDIO_FILE_OTHER & nFormatTo)) eRes = TCD_NON_AUTO; // параметры требуют уточнений - else if ((AVS_OFFICESTUDIO_FILE_DOCUMENT_XML == nFormatFrom) && (0 != (AVS_OFFICESTUDIO_FILE_SPREADSHEET & nFormatTo) || - (AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET == nFormatTo))) + else if ((AVS_OFFICESTUDIO_FILE_DOCUMENT_XML == nFormatFrom) && (0 != (AVS_OFFICESTUDIO_FILE_SPREADSHEET & nFormatTo) || (AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET == nFormatTo))) eRes = TCD_SPREADSHEET2; else if (0 != (AVS_OFFICESTUDIO_FILE_DOCUMENT & nFormatFrom)) - eRes = TCD_DOCUMENT2; - else if (0 != (AVS_OFFICESTUDIO_FILE_SPREADSHEET & nFormatFrom)) - eRes = TCD_SPREADSHEET2; - else if (0 != (AVS_OFFICESTUDIO_FILE_PRESENTATION & nFormatFrom)) - eRes = TCD_PRESENTATION2; - else if (0 != (AVS_OFFICESTUDIO_FILE_TEAMLAB & nFormatFrom)) - eRes = TCD_T2; - else if (AVS_OFFICESTUDIO_FILE_CANVAS_WORD == nFormatFrom) - eRes = TCD_DOCT_BIN2; - else if (AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET == nFormatFrom) - eRes = TCD_XLST_BIN2; - else if (AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION == nFormatFrom) - eRes = TCD_PPTT_BIN2; - else if (0 != (AVS_OFFICESTUDIO_FILE_CROSSPLATFORM & nFormatFrom)) - eRes = TCD_CROSSPLATFORM2; - else if (AVS_OFFICESTUDIO_FILE_CANVAS_PDF == nFormatFrom) - eRes = TCD_CANVAS_PDF2; + eRes = TCD_DOCUMENT2; + else if (0 != (AVS_OFFICESTUDIO_FILE_SPREADSHEET & nFormatFrom)) + eRes = TCD_SPREADSHEET2; + else if (0 != (AVS_OFFICESTUDIO_FILE_PRESENTATION & nFormatFrom)) + eRes = TCD_PRESENTATION2; + else if (0 != (AVS_OFFICESTUDIO_FILE_TEAMLAB & nFormatFrom)) + eRes = TCD_T2; + else if (AVS_OFFICESTUDIO_FILE_CANVAS_WORD == nFormatFrom) + eRes = TCD_DOCT_BIN2; + else if (AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET == nFormatFrom) + eRes = TCD_XLST_BIN2; + else if (AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION == nFormatFrom) + eRes = TCD_PPTT_BIN2; + else if (0 != (AVS_OFFICESTUDIO_FILE_CROSSPLATFORM & nFormatFrom)) + eRes = TCD_CROSSPLATFORM2; + else if (AVS_OFFICESTUDIO_FILE_CANVAS_PDF == nFormatFrom) + eRes = TCD_CANVAS_PDF2; else if (AVS_OFFICESTUDIO_FILE_OTHER_MS_OFFCRYPTO == nFormatFrom) eRes = TCD_MSCRYPT2; else if (AVS_OFFICESTUDIO_FILE_OTHER_MS_MITCRYPTO == nFormatFrom) eRes = TCD_MITCRYPT2; - else if (AVS_OFFICESTUDIO_FILE_OTHER_ZIP == nFormatFrom && AVS_OFFICESTUDIO_FILE_UNKNOWN == nFormatTo) - eRes = TCD_UNZIPDIR; + else if (AVS_OFFICESTUDIO_FILE_OTHER_ZIP == nFormatFrom && AVS_OFFICESTUDIO_FILE_UNKNOWN == nFormatTo) + eRes = TCD_UNZIPDIR; else if (AVS_OFFICESTUDIO_FILE_OTHER_MS_VBAPROJECT == nFormatFrom && AVS_OFFICESTUDIO_FILE_UNKNOWN == nFormatTo) eRes = TCD_VBAPROJECT2XML; else if (AVS_OFFICESTUDIO_FILE_UNKNOWN == nFormatFrom && AVS_OFFICESTUDIO_FILE_OTHER_ZIP == nFormatTo) - eRes = TCD_ZIPDIR; - } + eRes = TCD_ZIPDIR; + } else eRes = TCD_ERROR; return eRes; } TConversionDirection processDownloadFile() - { - TConversionDirection eRes = TCD_AUTO; - int nFormatFrom = *m_nFormatFrom; + { + TConversionDirection eRes = TCD_AUTO; + int nFormatFrom = *m_nFormatFrom; if (AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT == nFormatFrom && NULL == m_nCsvTxtEncoding) - { - int nCodePage = getEncodingByContent(); - if (nCodePage < 0) - { - if (!getDontSaveAdditional()) - { - copyOrigin(*m_sFileFrom, *m_sFileTo); - } - eRes = TCD_ERROR; - } - else - { - m_nCsvTxtEncoding = new int(nCodePage); - } - } + { + int nCodePage = getEncodingByContent(); + if (nCodePage < 0) + { + if (!getDontSaveAdditional()) + { + copyOrigin(*m_sFileFrom, *m_sFileTo); + } + eRes = TCD_ERROR; + } + else + { + m_nCsvTxtEncoding = new int(nCodePage); + } + } else if (AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV == nFormatFrom && (NULL == m_nCsvTxtEncoding || (NULL == m_nCsvDelimiter && NULL == m_sCsvDelimiterChar))) - { - if (isEmptyFile()) - { - m_nCsvTxtEncoding = new int(getEncodingByContent()); - m_sCsvDelimiterChar = new std::wstring(L","); - } - else - { - if (!getDontSaveAdditional()) - { - int nCodePage = getEncodingByContent(); - if (nCodePage < 0) - nCodePage = 46;//65001 Unicode (UTF-8) - int nDelimiter = getDelimiterByContent(); - NSStringUtils::CStringBuilder oBuilder; - oBuilder.WriteString(_T("{\"codepage\":")); - oBuilder.AddInt(nCodePage); - oBuilder.WriteString(_T(",\"delimiter\":")); - oBuilder.AddInt(nDelimiter); - oBuilder.WriteString(_T("}")); - std::wstring sFilePath = NSSystemPath::GetDirectoryName(*m_sFileTo) + FILE_SEPARATOR_STR + _T("settings.json"); - NSFile::CFileBinary::SaveToFile(sFilePath, oBuilder.GetData()); - copyOrigin(*m_sFileFrom, *m_sFileTo); - } - eRes = TCD_ERROR; - } - } - return eRes; - } - int isEmptyFile() - { - NSFile::CFileBinary file; - return file.OpenFile(*m_sFileFrom) && 0 == file.GetFileSize(); - } - int getEncodingByContent() - { - int nRes = -1; - //todo использовать codepage - NSFile::CFileBinary file; - if (file.OpenFile(*m_sFileFrom)) - { - DWORD dwBytesRead = 0; - BYTE pBuffer[3]; - file.ReadFile(pBuffer, 3, dwBytesRead); - if (dwBytesRead == 0) - { - //empty file - nRes = 46;//65001 Unicode (UTF-8) - } - if (dwBytesRead >= 2) - { - if (pBuffer[0] == 0xFF && pBuffer[1] == 0xFE) - nRes = 48;//1200 Unicode (UTF-16) - else if (pBuffer[0] == 0xFE && pBuffer[1] == 0xFF) - nRes = 49;//1201 Unicode (UTF-16 Big Endian) - } - if (dwBytesRead >= 3) - { - if (pBuffer[0] == 0xEF && pBuffer[1] == 0xBB && pBuffer[2] == 0xBF) - nRes = 46;//65001 Unicode (UTF-8) - } - file.CloseFile(); - } - return nRes; - } - int getDelimiterByContent() - { - int nRes = TCSVD_NONE; - NSFile::CFileBinary file; - if (file.OpenFile(*m_sFileFrom)) - { - DWORD dwBytesRead = 0; - BYTE pBuffer[1000]; - file.ReadFile(pBuffer, 1000, dwBytesRead); + { + if (isEmptyFile()) + { + m_nCsvTxtEncoding = new int(getEncodingByContent()); + m_sCsvDelimiterChar = new std::wstring(L","); + } + else + { + if (!getDontSaveAdditional()) + { + int nCodePage = getEncodingByContent(); + if (nCodePage < 0) + nCodePage = 46; // 65001 Unicode (UTF-8) + int nDelimiter = getDelimiterByContent(); + NSStringUtils::CStringBuilder oBuilder; + oBuilder.WriteString(_T("{\"codepage\":")); + oBuilder.AddInt(nCodePage); + oBuilder.WriteString(_T(",\"delimiter\":")); + oBuilder.AddInt(nDelimiter); + oBuilder.WriteString(_T("}")); + std::wstring sFilePath = NSSystemPath::GetDirectoryName(*m_sFileTo) + FILE_SEPARATOR_STR + _T("settings.json"); + NSFile::CFileBinary::SaveToFile(sFilePath, oBuilder.GetData()); + copyOrigin(*m_sFileFrom, *m_sFileTo); + } + eRes = TCD_ERROR; + } + } + return eRes; + } + int isEmptyFile() + { + NSFile::CFileBinary file; + return file.OpenFile(*m_sFileFrom) && 0 == file.GetFileSize(); + } + int getEncodingByContent() + { + int nRes = -1; + // todo использовать codepage + NSFile::CFileBinary file; + if (file.OpenFile(*m_sFileFrom)) + { + DWORD dwBytesRead = 0; + BYTE pBuffer[3]; + file.ReadFile(pBuffer, 3, dwBytesRead); + if (dwBytesRead == 0) + { + // empty file + nRes = 46; // 65001 Unicode (UTF-8) + } + if (dwBytesRead >= 2) + { + if (pBuffer[0] == 0xFF && pBuffer[1] == 0xFE) + nRes = 48; // 1200 Unicode (UTF-16) + else if (pBuffer[0] == 0xFE && pBuffer[1] == 0xFF) + nRes = 49; // 1201 Unicode (UTF-16 Big Endian) + } + if (dwBytesRead >= 3) + { + if (pBuffer[0] == 0xEF && pBuffer[1] == 0xBB && pBuffer[2] == 0xBF) + nRes = 46; // 65001 Unicode (UTF-8) + } + file.CloseFile(); + } + return nRes; + } + int getDelimiterByContent() + { + int nRes = TCSVD_NONE; + NSFile::CFileBinary file; + if (file.OpenFile(*m_sFileFrom)) + { + DWORD dwBytesRead = 0; + BYTE pBuffer[1000]; + file.ReadFile(pBuffer, 1000, dwBytesRead); - int nDelimitersCount = 6; - int aDelimiters[6] = { 0, 0, 0, 0, 0, 0 }; - for (DWORD i = 0; i < dwBytesRead; ++i) - { - char cCurChar = pBuffer[i]; - if ('\n' == cCurChar) - { - break; - } - else if ('\t' == cCurChar) - aDelimiters[TCSVD_TAB]++; - else if (';' == cCurChar) - aDelimiters[TCSVD_SEMICOLON]++; - else if (':' == cCurChar) - aDelimiters[TCSVD_COLON]++; - else if (',' == cCurChar) - aDelimiters[TCSVD_COMMA]++; - else if (' ' == cCurChar) - aDelimiters[TCSVD_SPACE]++; - } - int nMaxVal = 0; - int nMaxIndex = 0; - for(int i = 0; i < nDelimitersCount; ++i) - { - if (nMaxVal < aDelimiters[i]) - { - nMaxVal = aDelimiters[i]; - nMaxIndex = i; - } - } - nRes = nMaxIndex; + int nDelimitersCount = 6; + int aDelimiters[6] = {0, 0, 0, 0, 0, 0}; + for (DWORD i = 0; i < dwBytesRead; ++i) + { + char cCurChar = pBuffer[i]; + if ('\n' == cCurChar) + { + break; + } + else if ('\t' == cCurChar) + aDelimiters[TCSVD_TAB]++; + else if (';' == cCurChar) + aDelimiters[TCSVD_SEMICOLON]++; + else if (':' == cCurChar) + aDelimiters[TCSVD_COLON]++; + else if (',' == cCurChar) + aDelimiters[TCSVD_COMMA]++; + else if (' ' == cCurChar) + aDelimiters[TCSVD_SPACE]++; + } + int nMaxVal = 0; + int nMaxIndex = 0; + for (int i = 0; i < nDelimitersCount; ++i) + { + if (nMaxVal < aDelimiters[i]) + { + nMaxVal = aDelimiters[i]; + nMaxIndex = i; + } + } + nRes = nMaxIndex; - file.CloseFile(); - } - return nRes; - } + file.CloseFile(); + } + return nRes; + } void changeFormatFrom(int formatFrom, bool bMacroEnabled) - { - *m_nFormatFrom = formatFrom; - int toFormat = *m_nFormatTo; + { + *m_nFormatFrom = formatFrom; + int toFormat = *m_nFormatTo; - if (AVS_OFFICESTUDIO_FILE_CANVAS == toFormat) - { - if ( AVS_OFFICESTUDIO_FILE_TEAMLAB_XLSY == formatFrom || - 0 != ( AVS_OFFICESTUDIO_FILE_SPREADSHEET & formatFrom)) + if (AVS_OFFICESTUDIO_FILE_CANVAS == toFormat) { - toFormat = AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET; - } - else if ( AVS_OFFICESTUDIO_FILE_TEAMLAB_PPTY == formatFrom - || 0 != ( AVS_OFFICESTUDIO_FILE_PRESENTATION & formatFrom)) - { - toFormat = AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION; - } - else if ( AVS_OFFICESTUDIO_FILE_TEAMLAB_DOCY == formatFrom || - 0 != ( AVS_OFFICESTUDIO_FILE_DOCUMENT & formatFrom)) - { - toFormat = AVS_OFFICESTUDIO_FILE_CANVAS_WORD; - } - } - else if ( AVS_OFFICESTUDIO_FILE_OTHER_TEAMLAB_INNER == toFormat || AVS_OFFICESTUDIO_FILE_OTHER_ODF == toFormat) - { - if ( AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET == formatFrom || - AVS_OFFICESTUDIO_FILE_TEAMLAB_XLSY == formatFrom || - 0 != ( AVS_OFFICESTUDIO_FILE_SPREADSHEET & formatFrom)) - { - if (AVS_OFFICESTUDIO_FILE_OTHER_ODF == toFormat) + if (AVS_OFFICESTUDIO_FILE_TEAMLAB_XLSY == formatFrom || 0 != (AVS_OFFICESTUDIO_FILE_SPREADSHEET & formatFrom)) { - toFormat = AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS; + toFormat = AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET; } - else + else if (AVS_OFFICESTUDIO_FILE_TEAMLAB_PPTY == formatFrom || 0 != (AVS_OFFICESTUDIO_FILE_PRESENTATION & formatFrom)) { - if (bMacroEnabled) - { - toFormat = AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM; - } - else - { - toFormat = AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX; - } + toFormat = AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION; } - } - else if ( AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION == formatFrom || - AVS_OFFICESTUDIO_FILE_TEAMLAB_PPTY == formatFrom || - 0 != ( AVS_OFFICESTUDIO_FILE_PRESENTATION & formatFrom)) - { - if (AVS_OFFICESTUDIO_FILE_OTHER_ODF == toFormat) + else if (AVS_OFFICESTUDIO_FILE_TEAMLAB_DOCY == formatFrom || 0 != (AVS_OFFICESTUDIO_FILE_DOCUMENT & formatFrom)) { - toFormat = AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP; - } - else - { - if (bMacroEnabled) - { - toFormat = AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM; - } - else - { - toFormat = AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX; - } - } - } - else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_XML == formatFrom) - { - return; - } - else if ( AVS_OFFICESTUDIO_FILE_CANVAS_WORD == formatFrom || - AVS_OFFICESTUDIO_FILE_TEAMLAB_DOCY == formatFrom || - 0 != ( AVS_OFFICESTUDIO_FILE_DOCUMENT & formatFrom)) - { - if (AVS_OFFICESTUDIO_FILE_OTHER_ODF == toFormat) - { - toFormat = AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT; - } - else - { - if (bMacroEnabled) - { - toFormat = AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM; - } - else - { - toFormat = AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX; - } + toFormat = AVS_OFFICESTUDIO_FILE_CANVAS_WORD; } } - size_t nIndex = m_sFileTo->rfind('.'); - COfficeFileFormatChecker FileFormatChecker; - if (-1 != nIndex) - m_sFileTo->replace(nIndex, std::wstring::npos, FileFormatChecker.GetExtensionByType(toFormat)); - else - m_sFileTo->append(FileFormatChecker.GetExtensionByType(toFormat)); - } - *m_nFormatTo = toFormat; - } - bool getDontSaveAdditional() const - { - return NULL != m_bDontSaveAdditional && *m_bDontSaveAdditional; - } + else if (AVS_OFFICESTUDIO_FILE_OTHER_TEAMLAB_INNER == toFormat || AVS_OFFICESTUDIO_FILE_OTHER_ODF == toFormat) + { + if (AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET == formatFrom || AVS_OFFICESTUDIO_FILE_TEAMLAB_XLSY == formatFrom || 0 != (AVS_OFFICESTUDIO_FILE_SPREADSHEET & formatFrom)) + { + if (AVS_OFFICESTUDIO_FILE_OTHER_ODF == toFormat) + { + toFormat = AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS; + } + else + { + if (bMacroEnabled) + { + toFormat = AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM; + } + else + { + toFormat = AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX; + } + } + } + else if (AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION == formatFrom || AVS_OFFICESTUDIO_FILE_TEAMLAB_PPTY == formatFrom || 0 != (AVS_OFFICESTUDIO_FILE_PRESENTATION & formatFrom)) + { + if (AVS_OFFICESTUDIO_FILE_OTHER_ODF == toFormat) + { + toFormat = AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP; + } + else + { + if (bMacroEnabled) + { + toFormat = AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM; + } + else + { + toFormat = AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX; + } + } + } + else if (AVS_OFFICESTUDIO_FILE_DOCUMENT_XML == formatFrom) + { + return; + } + else if (AVS_OFFICESTUDIO_FILE_CANVAS_WORD == formatFrom || AVS_OFFICESTUDIO_FILE_TEAMLAB_DOCY == formatFrom || 0 != (AVS_OFFICESTUDIO_FILE_DOCUMENT & formatFrom)) + { + if (AVS_OFFICESTUDIO_FILE_OTHER_ODF == toFormat) + { + toFormat = AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT; + } + else + { + if (bMacroEnabled) + { + toFormat = AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM; + } + else + { + toFormat = AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX; + } + } + } + size_t nIndex = m_sFileTo->rfind('.'); + COfficeFileFormatChecker FileFormatChecker; + if (-1 != nIndex) + m_sFileTo->replace(nIndex, std::wstring::npos, FileFormatChecker.GetExtensionByType(toFormat)); + else + m_sFileTo->append(FileFormatChecker.GetExtensionByType(toFormat)); + } + *m_nFormatTo = toFormat; + } + bool getDontSaveAdditional() const + { + return NULL != m_bDontSaveAdditional && *m_bDontSaveAdditional; + } bool checkInputLimits(); bool getFromChanges() { return (NULL != m_bFromChanges) ? (*m_bFromChanges) : false; - } void setFromChanges(bool bVal) { @@ -1211,188 +1216,229 @@ namespace NExtractTools } }; - static std::wstring string_replaceAll(std::wstring str, const std::wstring& from, const std::wstring& to) - { - size_t start_pos = 0; - while((start_pos = str.find(from, start_pos)) != std::wstring::npos) - { - str.replace(start_pos, from.length(), to); - start_pos += to.length(); - } - return str; - } + static std::wstring string_replaceAll(std::wstring str, const std::wstring& from, const std::wstring& to) + { + size_t start_pos = 0; + while ((start_pos = str.find(from, start_pos)) != std::wstring::npos) + { + str.replace(start_pos, from.length(), to); + start_pos += to.length(); + } + return str; + } static int getReturnErrorCode(_UINT32 nDefine) { - return 0 == nDefine ? 0 : nDefine - AVS_ERROR_FIRST - AVS_FILEUTILS_ERROR_FIRST; + return 0 == nDefine ? 0 : nDefine - AVS_ERROR_FIRST - AVS_FILEUTILS_ERROR_FIRST; } - - static std::wstring getXMLOptionsFromFile(std::wstring xmlFileName) + + static std::wstring getXMLOptionsFromFile(std::wstring xmlFileName) { - std::wstring sXMLOptions; + std::wstring sXMLOptions; std::wifstream options_stream; -#if defined(_WIN32) || defined (_WIN64) - options_stream.open(xmlFileName.c_str()); +#if defined(_WIN32) || defined(_WIN64) + options_stream.open(xmlFileName.c_str()); #else - options_stream.open(NSFile::CUtf8Converter::GetUtf8StringFromUnicode(xmlFileName)); + options_stream.open(NSFile::CUtf8Converter::GetUtf8StringFromUnicode(xmlFileName)); #endif if (options_stream.is_open()) - { - while(true) + { + while (true) { std::wstring line; - std::getline(options_stream,line); - - if (line.size() < 1)break; - sXMLOptions += line; + std::getline(options_stream, line); + + if (line.size() < 1) + break; + sXMLOptions += line; } options_stream.close(); } return sXMLOptions; } - static const TConversionDirection getConversionDirection (const std::wstring &sArg3) - { - TConversionDirection res = TCD_ERROR; - if (0 == sArg3.compare(_T("auto"))) { - res = TCD_AUTO; - } - else if (0 == sArg3.compare(_T("docx2doct"))) { - res = TCD_DOCX2DOCT; - } - else if (0 == sArg3.compare(_T("docxflat2doct"))) { - res = TCD_DOCXFLAT2DOCT; - } - else if (0 == sArg3.compare(_T("doct2docx"))) { - res = TCD_DOCT2DOCX; - } - else if (0 == sArg3.compare(_T("docx2doct_bin"))) { - res = TCD_DOCX2DOCT_BIN; - } - else if (0 == sArg3.compare(_T("doct_bin2docx"))) { - res = TCD_DOCT_BIN2DOCX; - } - else if (0 == sArg3.compare(_T("xslx2xlst"))) { - res = TCD_XLSX2XLST; - } - else if (0 == sArg3.compare(_T("xslt2xlsx"))) { - res = TCD_XLST2XLSX; - } - else if (0 == sArg3.compare(_T("xslx2xlst_bin"))) { - res = TCD_XLSX2XLST_BIN; - } - else if (0 == sArg3.compare(_T("xslt_bin2xlsx"))) { - res = TCD_XLST_BIN2XLSX; - } - else if (0 == sArg3.compare(_T("pptx2pptt"))) { - res = TCD_PPTX2PPTT; - } - else if (0 == sArg3.compare(_T("pptt2pptx"))) { - res = TCD_PPTT2PPTX; - } - else if (0 == sArg3.compare(_T("pptx2pptt_bin"))) { - res = TCD_PPTX2PPTT_BIN; - } - else if (0 == sArg3.compare(_T("pptt_bin2pptx"))) { - res = TCD_PPTT_BIN2PPTX; - } - else if (0 == sArg3.compare(_T("zip2dir"))) { - res = TCD_ZIPDIR; - } - else if (0 == sArg3.compare(_T("dir2zip"))) { - res = TCD_UNZIPDIR; - } - else if (0 == sArg3.compare(_T("csv2xlsx"))) { - res = TCD_CSV2XLSX; - } - else if (0 == sArg3.compare(_T("csv2xlst"))) { - res = TCD_CSV2XLST; - } - else if (0 == sArg3.compare(_T("xlsx2csv"))) { - res = TCD_XLSX2CSV; - } - else if (0 == sArg3.compare(_T("xlst2csv"))) { - res = TCD_XLST2CSV; - } - else if (0 == sArg3.compare(_T("bin2pdf"))) { - res = TCD_BIN2PDF; - } - else if (0 == sArg3.compare(_T("bin2t"))) { - res = TCD_BIN2T; - } - else if (0 == sArg3.compare(_T("t2bin"))) { - res = TCD_T2BIN; - } - else if (0 == sArg3.compare(_T("ppsx2pptx"))) { - res = TCD_PPSX2PPTX; - } - else if (0 == sArg3.compare(_T("potx2pptx"))) { - res = TCD_POTX2PPTX; - } - else if (0 == sArg3.compare(_T("potm2pptm"))) { - res = TCD_POTM2PPTM; - } - else if (0 == sArg3.compare(_T("xltx2xlsx"))) { - res = TCD_XLTX2XLSX; - } - else if (0 == sArg3.compare(_T("xltm2xlsm"))) { - res = TCD_XLTM2XLSM; - } - else if (0 == sArg3.compare(_T("dotx2docx"))) { - res = TCD_DOTX2DOCX; - } - else if (0 == sArg3.compare(_T("dotm2docm"))) { - res = TCD_DOTM2DOCM; - } - else if (0 == sArg3.compare(_T("ppt2pptx"))) { - res = TCD_PPT2PPTX; - } - else if (0 == sArg3.compare(_T("ppt2pptm"))) { - res = TCD_PPT2PPTM; - } - else if (0 == sArg3.compare(_T("doc2docx"))) { - res = TCD_DOC2DOCX; - } - else if (0 == sArg3.compare(_T("doc2docm"))) { - res = TCD_DOC2DOCM; - } - else if (0 == sArg3.compare(_T("rtf2docx"))) { - res = TCD_RTF2DOCX; - } - else if (0 == sArg3.compare(_T("docx2rtf"))) { - res = TCD_DOCX2RTF; - } - else if (0 == sArg3.compare(_T("txt2docx"))) { - res = TCD_TXT2DOCX; - } - else if (0 == sArg3.compare(_T("docx2txt"))) { - res = TCD_DOCX2TXT; - } + static const TConversionDirection getConversionDirection(const std::wstring& sArg3) + { + TConversionDirection res = TCD_ERROR; + if (0 == sArg3.compare(_T("auto"))) + { + res = TCD_AUTO; + } + else if (0 == sArg3.compare(_T("docx2doct"))) + { + res = TCD_DOCX2DOCT; + } + else if (0 == sArg3.compare(_T("docxflat2doct"))) + { + res = TCD_DOCXFLAT2DOCT; + } + else if (0 == sArg3.compare(_T("doct2docx"))) + { + res = TCD_DOCT2DOCX; + } + else if (0 == sArg3.compare(_T("docx2doct_bin"))) + { + res = TCD_DOCX2DOCT_BIN; + } + else if (0 == sArg3.compare(_T("doct_bin2docx"))) + { + res = TCD_DOCT_BIN2DOCX; + } + else if (0 == sArg3.compare(_T("xslx2xlst"))) + { + res = TCD_XLSX2XLST; + } + else if (0 == sArg3.compare(_T("xslt2xlsx"))) + { + res = TCD_XLST2XLSX; + } + else if (0 == sArg3.compare(_T("xslx2xlst_bin"))) + { + res = TCD_XLSX2XLST_BIN; + } + else if (0 == sArg3.compare(_T("xslt_bin2xlsx"))) + { + res = TCD_XLST_BIN2XLSX; + } + else if (0 == sArg3.compare(_T("pptx2pptt"))) + { + res = TCD_PPTX2PPTT; + } + else if (0 == sArg3.compare(_T("pptt2pptx"))) + { + res = TCD_PPTT2PPTX; + } + else if (0 == sArg3.compare(_T("pptx2pptt_bin"))) + { + res = TCD_PPTX2PPTT_BIN; + } + else if (0 == sArg3.compare(_T("pptt_bin2pptx"))) + { + res = TCD_PPTT_BIN2PPTX; + } + else if (0 == sArg3.compare(_T("zip2dir"))) + { + res = TCD_ZIPDIR; + } + else if (0 == sArg3.compare(_T("dir2zip"))) + { + res = TCD_UNZIPDIR; + } + else if (0 == sArg3.compare(_T("csv2xlsx"))) + { + res = TCD_CSV2XLSX; + } + else if (0 == sArg3.compare(_T("csv2xlst"))) + { + res = TCD_CSV2XLST; + } + else if (0 == sArg3.compare(_T("xlsx2csv"))) + { + res = TCD_XLSX2CSV; + } + else if (0 == sArg3.compare(_T("xlst2csv"))) + { + res = TCD_XLST2CSV; + } + else if (0 == sArg3.compare(_T("bin2pdf"))) + { + res = TCD_BIN2PDF; + } + else if (0 == sArg3.compare(_T("bin2t"))) + { + res = TCD_BIN2T; + } + else if (0 == sArg3.compare(_T("t2bin"))) + { + res = TCD_T2BIN; + } + else if (0 == sArg3.compare(_T("ppsx2pptx"))) + { + res = TCD_PPSX2PPTX; + } + else if (0 == sArg3.compare(_T("potx2pptx"))) + { + res = TCD_POTX2PPTX; + } + else if (0 == sArg3.compare(_T("potm2pptm"))) + { + res = TCD_POTM2PPTM; + } + else if (0 == sArg3.compare(_T("xltx2xlsx"))) + { + res = TCD_XLTX2XLSX; + } + else if (0 == sArg3.compare(_T("xltm2xlsm"))) + { + res = TCD_XLTM2XLSM; + } + else if (0 == sArg3.compare(_T("dotx2docx"))) + { + res = TCD_DOTX2DOCX; + } + else if (0 == sArg3.compare(_T("dotm2docm"))) + { + res = TCD_DOTM2DOCM; + } + else if (0 == sArg3.compare(_T("ppt2pptx"))) + { + res = TCD_PPT2PPTX; + } + else if (0 == sArg3.compare(_T("ppt2pptm"))) + { + res = TCD_PPT2PPTM; + } + else if (0 == sArg3.compare(_T("doc2docx"))) + { + res = TCD_DOC2DOCX; + } + else if (0 == sArg3.compare(_T("doc2docm"))) + { + res = TCD_DOC2DOCM; + } + else if (0 == sArg3.compare(_T("rtf2docx"))) + { + res = TCD_RTF2DOCX; + } + else if (0 == sArg3.compare(_T("docx2rtf"))) + { + res = TCD_DOCX2RTF; + } + else if (0 == sArg3.compare(_T("txt2docx"))) + { + res = TCD_TXT2DOCX; + } + else if (0 == sArg3.compare(_T("docx2txt"))) + { + res = TCD_DOCX2TXT; + } return res; - } + } - static bool compare_string_by_length (const std::wstring &x, const std::wstring &y) + static bool compare_string_by_length(const std::wstring& x, const std::wstring& y) { if (!x.empty() && !y.empty()) { if (x.length() == y.length()) - return x.compare(y) <= 0; + return x.compare(y) <= 0; else - return ((int)(x.length()) - (int)(y.length())) <= 0; + return ((int)(x.length()) - (int)(y.length())) <= 0; } else { if (!x.empty()) - return false; + return false; else if (!y.empty()) - return true; + return true; } - return true; + return true; } - std::wstring getMailMergeXml(const std::wstring& sJsonPath, int nRecordFrom, int nRecordTo, const std::wstring& sField); - std::wstring getDoctXml(NSDoctRenderer::DoctRendererFormat::FormatFile eFromType, NSDoctRenderer::DoctRendererFormat::FormatFile eToType, - const std::wstring& sTFileSrc, const std::wstring& sPdfBinFile, const std::wstring& sImagesDirectory, - const std::wstring& sThemeDir, int nTopIndex, const std::wstring& sMailMerge, const InputParams& params); - _UINT32 apply_changes(const std::wstring &sBinFrom, const std::wstring &sToResult, NSDoctRenderer::DoctRendererFormat::FormatFile eType, const std::wstring &sThemeDir, std::wstring &sBinTo, const InputParams& params); -} + std::wstring getMailMergeXml(const std::wstring& sJsonPath, int nRecordFrom, int nRecordTo, const std::wstring& sField); + std::wstring getDoctXml( + NSDoctRenderer::DoctRendererFormat::FormatFile eFromType, NSDoctRenderer::DoctRendererFormat::FormatFile eToType, const std::wstring& sTFileSrc, const std::wstring& sPdfBinFile, + const std::wstring& sImagesDirectory, const std::wstring& sThemeDir, int nTopIndex, const std::wstring& sMailMerge, const InputParams& params); + _UINT32 apply_changes( + const std::wstring& sBinFrom, const std::wstring& sToResult, NSDoctRenderer::DoctRendererFormat::FormatFile eType, const std::wstring& sThemeDir, std::wstring& sBinTo, + const InputParams& params); +} // namespace NExtractTools #endif // CEXTRACTTOOLS_H diff --git a/X2tConverter/src/main.cpp b/X2tConverter/src/main.cpp index 19307197a0..a69cc77d73 100644 --- a/X2tConverter/src/main.cpp +++ b/X2tConverter/src/main.cpp @@ -30,11 +30,11 @@ * */ -#include "cextracttools.h" -#include "ASCConverters.h" -#include "../../DesktopEditor/common/SystemUtils.h" -#include "../../DesktopEditor/common/StringExt.h" #include "../../Common/3dParty/misc/proclimits.h" +#include "../../DesktopEditor/common/StringExt.h" +#include "../../DesktopEditor/common/SystemUtils.h" +#include "ASCConverters.h" +#include "cextracttools.h" #include @@ -43,57 +43,57 @@ using namespace NExtractTools; -#if !defined(_WIN32) && !defined (_WIN64) +#if !defined(_WIN32) && !defined(_WIN64) static std::wstring utf8_to_unicode(const char *src) { - return NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)src, (LONG)strlen(src)); + return NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE *)src, (LONG)strlen(src)); } #endif #ifdef BUILD_X2T_AS_LIBRARY_DYLIB -#if !defined(_WIN32) && !defined (_WIN64) - int main_lib(int argc, char *argv[]) +#if !defined(_WIN32) && !defined(_WIN64) +int main_lib(int argc, char *argv[]) #else - int wmain_lib(int argc, wchar_t *argv[]) +int wmain_lib(int argc, wchar_t *argv[]) #endif #endif #ifndef BUILD_X2T_AS_LIBRARY_DYLIB -#if !defined(_WIN32) && !defined (_WIN64) +#if !defined(_WIN32) && !defined(_WIN64) int main(int argc, char *argv[]) #else int wmain(int argc, wchar_t *argv[]) #endif #endif { -//#define __CRTDBG_MAP_ALLOC -//#include -//#define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__) -//#define new DEBUG_NEW - -// check arguments - if (argc < 2) - { - // print out help topic + // #define __CRTDBG_MAP_ALLOC + // #include + // #define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__) + // #define new DEBUG_NEW + + // check arguments + if (argc < 2) + { + // print out help topic std::cout << std::endl; - std::cout << std::endl; - std::cout << "-------------------------------------------------------------------------------" << std::endl; - std::cout << "\t\tOOX/binary file converter. Version: " VALUE(INTVER) << std::endl; - std::cout << "-------------------------------------------------------------------------------" << std::endl; - std::cout << std::endl; + std::cout << std::endl; + std::cout << "-------------------------------------------------------------------------------" << std::endl; + std::cout << "\t\tOOX/binary file converter. Version: " VALUE(INTVER) << std::endl; + std::cout << "-------------------------------------------------------------------------------" << std::endl; + std::cout << std::endl; std::cout << "USAGE: x2t \"path_to_params_xml\"" << std::endl; std::cout << "or" << std::endl; - std::cout << "USAGE: x2t \"path_to_file_1\" \"path_to_file_2\" [\"path_to_font_selection\"]" << std::endl; - std::cout << "WHERE:" << std::endl; - std::cout << "\t\"path_to_file_1\" is a path to file to be converted" << std::endl; - std::cout << "\t\"path_to_file_2\" is a path to the corresponding output file" << std::endl; - std::cout << "\t\"path_to_font_selection\" is a path to 'font_selection.bin' location" << std::endl << std::endl; - std::cout << "NOTE: conversion direction will be calculated from file extensions" << std::endl << std::endl; + std::cout << "USAGE: x2t \"path_to_file_1\" \"path_to_file_2\" [\"path_to_font_selection\"]" << std::endl; + std::cout << "WHERE:" << std::endl; + std::cout << "\t\"path_to_file_1\" is a path to file to be converted" << std::endl; + std::cout << "\t\"path_to_file_2\" is a path to the corresponding output file" << std::endl; + std::cout << "\t\"path_to_font_selection\" is a path to 'font_selection.bin' location" << std::endl << std::endl; + std::cout << "NOTE: conversion direction will be calculated from file extensions" << std::endl << std::endl; - return getReturnErrorCode(AVS_FILEUTILS_ERROR_CONVERT_PARAMS); - } + return getReturnErrorCode(AVS_FILEUTILS_ERROR_CONVERT_PARAMS); + } - //set memory limit + // set memory limit std::wstring sMemoryLimit = NSSystemUtils::GetEnvVariable(NSSystemUtils::gc_EnvMemoryLimit); if (sMemoryLimit.empty()) sMemoryLimit = NSSystemUtils::gc_EnvMemoryLimitDefault; @@ -105,19 +105,21 @@ static std::wstring utf8_to_unicode(const char *src) #endif std::wstring sArg1, sArg2, sExePath; -#if !defined(_WIN32) && !defined (_WIN64) - sExePath = utf8_to_unicode(argv [0]); - sArg1 = utf8_to_unicode(argv [1]); - if (argc >= 3) sArg2 = utf8_to_unicode(argv [2]); +#if !defined(_WIN32) && !defined(_WIN64) + sExePath = utf8_to_unicode(argv[0]); + sArg1 = utf8_to_unicode(argv[1]); + if (argc >= 3) + sArg2 = utf8_to_unicode(argv[2]); #else - sExePath = std::wstring(argv [0]); - sArg1 = std::wstring(argv [1]); - if (argc >= 3) sArg2 = std::wstring(argv [2]); + sExePath = std::wstring(argv[0]); + sArg1 = std::wstring(argv[1]); + if (argc >= 3) + sArg2 = std::wstring(argv[2]); #endif _UINT32 result = 0; - std::wstring sXmlExt = _T(".xml"); - if((sArg1.length() > 3) && (sXmlExt == sArg1.substr(sArg1.length() - sXmlExt.length(), sXmlExt.length()))) + std::wstring sXmlExt = _T(".xml"); + if ((sArg1.length() > 3) && (sXmlExt == sArg1.substr(sArg1.length() - sXmlExt.length(), sXmlExt.length()))) { NExtractTools::InputParams oInputParams; if (oInputParams.FromXmlFile(sArg1) && (sArg2.empty() || oInputParams.FromXml(sArg2))) @@ -133,20 +135,26 @@ static std::wstring utf8_to_unicode(const char *src) { std::wstring sArg3, sArg4, sArg5; -#if !defined(_WIN32) && !defined (_WIN64) - if (argc >= 4) sArg3 = utf8_to_unicode(argv [3]); - if (argc >= 5) sArg4 = utf8_to_unicode(argv [4]); - if (argc >= 6) sArg5 = utf8_to_unicode(argv [5]); +#if !defined(_WIN32) && !defined(_WIN64) + if (argc >= 4) + sArg3 = utf8_to_unicode(argv[3]); + if (argc >= 5) + sArg4 = utf8_to_unicode(argv[4]); + if (argc >= 6) + sArg5 = utf8_to_unicode(argv[5]); #else - if (argc >= 4) sArg3 = std::wstring(argv [3]); - if (argc >= 5) sArg4 = std::wstring(argv [4]); - if (argc >= 6) sArg5 = std::wstring(argv [5]); + if (argc >= 4) + sArg3 = std::wstring(argv[3]); + if (argc >= 5) + sArg4 = std::wstring(argv[4]); + if (argc >= 6) + sArg5 = std::wstring(argv[5]); #endif if (sArg1 == L"-detectmacro") { InputParams oInputParams; - oInputParams.m_sFileFrom = new std::wstring(sArg2); - + oInputParams.m_sFileFrom = new std::wstring(sArg2); + result = NExtractTools::detectMacroInFile(oInputParams); } else if (sArg1 == L"-create-js-cache") @@ -157,8 +165,8 @@ static std::wstring utf8_to_unicode(const char *src) else { InputParams oInputParams; - oInputParams.m_sFileFrom = new std::wstring(sArg1); - oInputParams.m_sFileTo = new std::wstring(sArg2); + oInputParams.m_sFileFrom = new std::wstring(sArg1); + oInputParams.m_sFileTo = new std::wstring(sArg2); if (argc > 3) { @@ -172,6 +180,6 @@ static std::wstring utf8_to_unicode(const char *src) result = NExtractTools::fromInputParams(oInputParams); } } - //_CrtDumpMemoryLeaks(); + //_CrtDumpMemoryLeaks(); return getReturnErrorCode(result); }