This commit is contained in:
Elena Subbotina
2023-10-27 14:36:59 +03:00
parent 075211ba63
commit 2921ead849

View File

@ -656,9 +656,22 @@ bool COfficeFileFormatChecker::isOfficeFile(const std::wstring &_fileName)
return true;
}
}
NSFile::CFileBinary file;
if (!file.OpenFile(fileName))
return false;
unsigned char* bufferDetect = new unsigned char[4096]; // enaf !!
if (!bufferDetect)
{
file.CloseFile();
return false;
}
DWORD dwDetectdBytes = 0;
file.ReadFile(bufferDetect, MIN_SIZE_BUFFER, dwDetectdBytes);
COfficeUtils OfficeUtils(NULL);
if (OfficeUtils.IsArchive(fileName) == S_OK)
if (OfficeUtils.IsArchive(fileName) == S_OK && (false == isPdfFormatFile(bufferDetect, dwDetectdBytes, sDocumentID)))
{
if (isOOXFormatFile(fileName))
return true;
@ -675,92 +688,80 @@ bool COfficeFileFormatChecker::isOfficeFile(const std::wstring &_fileName)
bool bEmptyFile = false;
{
NSFile::CFileBinary file;
if (!file.OpenFile(fileName))
return false;
int sizeRead = (int)dwDetectdBytes;
unsigned char *buffer = new unsigned char[4096]; // enaf !!
if (!buffer)
{
file.CloseFile();
return false;
}
bEmptyFile = (dwDetectdBytes < 1);
DWORD dwReadBytes = 0;
file.ReadFile(buffer, MIN_SIZE_BUFFER, dwReadBytes);
int sizeRead = (int)dwReadBytes;
bEmptyFile = (dwReadBytes < 1);
if (isBinaryDoctFormatFile(buffer, sizeRead)) // min size - 4
if (isBinaryDoctFormatFile(bufferDetect, sizeRead)) // min size - 4
{
nFileType = AVS_OFFICESTUDIO_FILE_CANVAS_WORD;
}
else if (isBinaryXlstFormatFile(buffer, sizeRead)) // min size - 4
else if (isBinaryXlstFormatFile(bufferDetect, sizeRead)) // min size - 4
{
nFileType = AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET;
}
else if (isBinaryPpttFormatFile(buffer, sizeRead)) // min size - 4
else if (isBinaryPpttFormatFile(bufferDetect, sizeRead)) // min size - 4
{
nFileType = AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION;
}
else if (isOOXFlatFormatFile(buffer, sizeRead))
else if (isOOXFlatFormatFile(bufferDetect, sizeRead))
{
// nFileType;
}
else if (isRtfFormatFile(buffer, sizeRead)) // min size - 5
else if (isRtfFormatFile(bufferDetect, sizeRead)) // min size - 5
{
nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_RTF;
}
else if (isPdfFormatFile(buffer, sizeRead, sDocumentID)) // min size - 5
else if (isPdfFormatFile(bufferDetect, sizeRead, sDocumentID)) // min size - 5
{
nFileType = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF;
}
else if (isDjvuFormatFile(buffer, sizeRead)) // min size - 8
else if (isDjvuFormatFile(bufferDetect, sizeRead)) // min size - 8
{
nFileType = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_DJVU;
}
else if (isHtmlFormatFile(buffer, sizeRead, false)) // min size - 4
else if (isHtmlFormatFile(bufferDetect, sizeRead, false)) // min size - 4
{
long fileSize = file.GetFileSize();
if (fileSize > MIN_SIZE_BUFFER)
{
file.SeekFile(fileSize - MIN_SIZE_BUFFER);
file.ReadFile(buffer, MIN_SIZE_BUFFER, dwReadBytes);
int sizeRead = (int)dwReadBytes;
file.ReadFile(bufferDetect, MIN_SIZE_BUFFER, dwDetectdBytes);
int sizeRead = (int)dwDetectdBytes;
}
if (isHtmlFormatFile(buffer, sizeRead, true)) // min size - 6
if (isHtmlFormatFile(bufferDetect, sizeRead, true)) // min size - 6
{
nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML;
}
}
else if (isFB2FormatFile(buffer, sizeRead)) // min size - 11
else if (isFB2FormatFile(bufferDetect, sizeRead)) // min size - 11
{
nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_FB2;
}
else if (isOpenOfficeFlatFormatFile(buffer, sizeRead)) // min size - 78
else if (isOpenOfficeFlatFormatFile(bufferDetect, sizeRead)) // min size - 78
{
// nFileType
}
else if (isDocFlatFormatFile(buffer, sizeRead)) // min size - 2
else if (isDocFlatFormatFile(bufferDetect, sizeRead)) // min size - 2
{
nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC_FLAT; // without compaund container
}
else if (isXlsFlatFormatFile(buffer, sizeRead)) // min size - 2
else if (isXlsFlatFormatFile(bufferDetect, sizeRead)) // min size - 2
{
nFileType = AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS; // without compaund container
}
else if (isMultiPartsHtmlFormatFile(buffer, sizeRead))
else if (isMultiPartsHtmlFormatFile(bufferDetect, sizeRead))
{
nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_MHT;
}
//------------------------------------------------------------------------------------------------
file.CloseFile();
if (buffer)
delete[] buffer;
buffer = NULL;
}
if (bufferDetect)
delete[] bufferDetect;
bufferDetect = NULL;
if (nFileType != AVS_OFFICESTUDIO_FILE_UNKNOWN)
return true;
//------------------------------------------------------------------------------------------------