Commit 1d331571 authored by konovalovsergey's avatar konovalovsergey

Merge branch 'hotfix/v.4.2.6' into develop

parents 46ddcff0 2836fee4
...@@ -76,6 +76,26 @@ namespace NExtractTools ...@@ -76,6 +76,26 @@ namespace NExtractTools
else else
oApplicationFonts.InitializeFromFolder(sFontPath); oApplicationFonts.InitializeFromFolder(sFontPath);
} }
std::wstring getExtentionByRasterFormat(int format)
{
std::wstring sExt;
switch(format)
{
case 1:
sExt = L".bmp";
break;
case 2:
sExt = L".gif";
break;
case 3:
sExt = L".jpg";
break;
default:
sExt = L".png";
break;
}
return sExt;
}
// docx -> bin // docx -> bin
int docx2doct_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) int docx2doct_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params)
{ {
...@@ -626,6 +646,101 @@ namespace NExtractTools ...@@ -626,6 +646,101 @@ namespace NExtractTools
int nReg = (bPaid == false) ? 0 : 1; int nReg = (bPaid == false) ? 0 : 1;
return S_OK == pdfWriter.OnlineWordToPdf(sFrom, sTo) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; return S_OK == pdfWriter.OnlineWordToPdf(sFrom, sTo) ? 0 : AVS_FILEUTILS_ERROR_CONVERT;
} }
int bin2image (const std::wstring &sTFileDir, BYTE* pBuffer, LONG lBufferLen, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params)
{
long nRes = 0;
CApplicationFonts oApplicationFonts;
initApplicationFonts(oApplicationFonts, params);
NSOnlineOfficeBinToPdf::CMetafileToRenderterRaster imageWriter(NULL);
imageWriter.wsHtmlPlace = sTFileDir;
imageWriter.wsThemesPlace = sThemeDir;
imageWriter.wsTempDir = sTemp;
imageWriter.appFonts = &oApplicationFonts;
if(NULL != params.m_oThumbnail)
{
InputParamsThumbnail* oThumbnail = params.m_oThumbnail;
if(NULL != oThumbnail->format)
{
imageWriter.m_nRasterFormat = *oThumbnail->format;
}
if(NULL != oThumbnail->aspect)
{
imageWriter.m_nSaveType = *oThumbnail->aspect;
}
if(NULL != oThumbnail->first)
{
imageWriter.m_bIsOnlyFirst = *oThumbnail->first;
}
if(NULL != oThumbnail->width)
{
imageWriter.m_nRasterW = *oThumbnail->width;
}
if(NULL != oThumbnail->height)
{
imageWriter.m_nRasterH = *oThumbnail->height;
}
}
std::wstring sThumbnailDir;
if(imageWriter.m_bIsOnlyFirst)
{
imageWriter.m_sFileName = sTo;
}
else
{
sThumbnailDir = sTemp + FILE_SEPARATOR_STR + L"thumbnails";
NSDirectory::CreateDirectory(sThumbnailDir);
imageWriter.m_sFileName = sThumbnailDir + FILE_SEPARATOR_STR + L"image" + getExtentionByRasterFormat(imageWriter.m_nRasterFormat);
}
nRes = imageWriter.ConvertBuffer(pBuffer, lBufferLen) ? nRes : AVS_FILEUTILS_ERROR_CONVERT;
if(!imageWriter.m_bIsOnlyFirst)
{
COfficeUtils oCOfficeUtils(NULL);
nRes = S_OK == oCOfficeUtils.CompressFileOrDirectory(sThumbnailDir, sTo, -1) ? nRes : AVS_FILEUTILS_ERROR_CONVERT;
}
return nRes;
}
int bin2imageBase64 (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, const std::wstring &sThemeDir, InputParams& params)
{
long nRes = 0;
NSFile::CFileBinary oFile;
if (!oFile.OpenFile(sFrom))
return AVS_FILEUTILS_ERROR_CONVERT;
DWORD dwFileSize = oFile.GetFileSize();
BYTE* pFileContent = new BYTE[dwFileSize];
if (!pFileContent)
{
oFile.CloseFile();
return AVS_FILEUTILS_ERROR_CONVERT;
}
DWORD dwReaded;
oFile.ReadFile(pFileContent, dwFileSize, dwReaded);
oFile.CloseFile();
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))
{
std::wstring sTFileDir = NSDirectory::GetFolderPath(sFrom);
nRes = bin2image(sTFileDir, pBuffer, nBufferLen, sTo, sTemp, sThemeDir, params);
}
else
{
nRes = AVS_FILEUTILS_ERROR_CONVERT;
}
RELEASEARRAYOBJECTS(pBuffer);
RELEASEARRAYOBJECTS(pFileContent);
return nRes;
}
//doct_bin -> pdf //doct_bin -> pdf
int 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) int 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)
{ {
...@@ -658,26 +773,7 @@ namespace NExtractTools ...@@ -658,26 +773,7 @@ namespace NExtractTools
NSFile::CFileBinary::Remove(sPdfBinFile); NSFile::CFileBinary::Remove(sPdfBinFile);
return nRes; return nRes;
} }
std::wstring getExtentionByRasterFormat(int format)
{
std::wstring sExt;
switch(format)
{
case 1:
sExt = L".bmp";
break;
case 2:
sExt = L".gif";
break;
case 3:
sExt = L".jpg";
break;
default:
sExt = L".png";
break;
}
return sExt;
}
//doct_bin -> image //doct_bin -> image
int 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) int 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)
{ {
...@@ -697,58 +793,21 @@ namespace NExtractTools ...@@ -697,58 +793,21 @@ namespace NExtractTools
} }
else else
{ {
CApplicationFonts oApplicationFonts; BYTE* pData = NULL;
initApplicationFonts(oApplicationFonts, params); DWORD nBytesCount;
NSOnlineOfficeBinToPdf::CMetafileToRenderterRaster imageWriter(NULL); if (NSFile::CFileBinary::ReadAllBytes(sPdfBinFile, &pData, nBytesCount))
imageWriter.wsHtmlPlace = sTFileDir;
imageWriter.wsThemesPlace = sThemeDir;
imageWriter.wsTempDir = sTemp;
imageWriter.appFonts = &oApplicationFonts;
if(NULL != params.m_oThumbnail)
{
InputParamsThumbnail* oThumbnail = params.m_oThumbnail;
if(NULL != oThumbnail->format)
{
imageWriter.m_nRasterFormat = *oThumbnail->format;
}
if(NULL != oThumbnail->aspect)
{
imageWriter.m_nSaveType = *oThumbnail->aspect;
}
if(NULL != oThumbnail->first)
{
imageWriter.m_bIsOnlyFirst = *oThumbnail->first;
}
if(NULL != oThumbnail->width)
{
imageWriter.m_nRasterW = *oThumbnail->width;
}
if(NULL != oThumbnail->height)
{
imageWriter.m_nRasterH = *oThumbnail->height;
}
}
std::wstring sThumbnailDir;
if(imageWriter.m_bIsOnlyFirst)
{ {
imageWriter.m_sFileName = sTo; nRes = 0 == bin2image(sTFileDir, pData, nBytesCount, sTo, sTemp, sThemeDir, params) ? nRes : AVS_FILEUTILS_ERROR_CONVERT;
} RELEASEARRAYOBJECTS(pData);
}
else else
{ {
sThumbnailDir = sTemp + FILE_SEPARATOR_STR + _T("thumbnails"); nRes = AVS_FILEUTILS_ERROR_CONVERT;
NSDirectory::CreateDirectory(sThumbnailDir);
imageWriter.m_sFileName = sThumbnailDir + FILE_SEPARATOR_STR + L"image" + getExtentionByRasterFormat(imageWriter.m_nRasterFormat);
} }
BYTE* pData;
DWORD nBytesCount;
NSFile::CFileBinary::ReadAllBytes(sPdfBinFile, &pData, nBytesCount);
nRes = imageWriter.ConvertBuffer(pData, nBytesCount) ? nRes : AVS_FILEUTILS_ERROR_CONVERT;
if(!imageWriter.m_bIsOnlyFirst)
{
COfficeUtils oCOfficeUtils(NULL);
nRes = S_OK == oCOfficeUtils.CompressFileOrDirectory(sThumbnailDir, sTo, -1) ? nRes : AVS_FILEUTILS_ERROR_CONVERT;
} }
} //delete sPdfBinFile, because it is not in Temp
if (NSFile::CFileBinary::Exists(sPdfBinFile))
NSFile::CFileBinary::Remove(sPdfBinFile);
return nRes; return nRes;
} }
...@@ -2311,6 +2370,10 @@ namespace NExtractTools ...@@ -2311,6 +2370,10 @@ namespace NExtractTools
{ {
nRes = bin2pdf(sFrom, sTo, sTemp, bPaid, sThemeDir, params); nRes = bin2pdf(sFrom, sTo, sTemp, bPaid, sThemeDir, params);
} }
else if(0 != (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo))
{
nRes = bin2imageBase64(sFrom, sTo, sTemp, sThemeDir, params);
}
else else
{ {
nRes = AVS_FILEUTILS_ERROR_CONVERT; nRes = AVS_FILEUTILS_ERROR_CONVERT;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment