mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-02-10 18:05:41 +08:00
Add test for metafiles (stream binary)
This commit is contained in:
160
Test/Applications/ServerMetafile/main.cpp
Normal file
160
Test/Applications/ServerMetafile/main.cpp
Normal file
@ -0,0 +1,160 @@
|
||||
/*
|
||||
* (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 "../../../DesktopEditor/common/Directory.h"
|
||||
#include "../../../DesktopEditor/graphics/pro/Fonts.h"
|
||||
#include "../../../DesktopEditor/fontengine/ApplicationFontsWorker.h"
|
||||
#include "../../../PdfFile/PdfFile.h"
|
||||
#include "../../../DesktopEditor/graphics/MetafileToGraphicsRenderer.h"
|
||||
|
||||
std::wstring getExtentionByRasterFormat(int format)
|
||||
{
|
||||
switch (format)
|
||||
{
|
||||
case 1: return L".bmp";
|
||||
case 2: return L".gif";
|
||||
case 3: return L".jpg";
|
||||
default: return L".png";
|
||||
}
|
||||
return L"";
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
CApplicationFontsWorker oWorker;
|
||||
oWorker.m_sDirectory = NSFile::GetProcessDirectory() + L"/../../../../../server/FileConverter/bin";
|
||||
oWorker.m_bIsNeedThumbnails = false;
|
||||
oWorker.m_arAdditionalFolders.push_back(NSFile::GetProcessDirectory() + L"/../../../../../core-fonts");
|
||||
|
||||
NSFonts::IApplicationFonts* pFonts = oWorker.Check();
|
||||
|
||||
std::wstring sTempDir = NSFile::GetProcessDirectory() + L"/temp";
|
||||
|
||||
if (!NSDirectory::Exists(sTempDir))
|
||||
NSDirectory::CreateDirectory(sTempDir);
|
||||
|
||||
std::wstring sThemesDirectory = NSFile::GetProcessDirectory() + L"/../../../../../sdkjs/slide/themes";
|
||||
std::wstring sPassword = L"";
|
||||
|
||||
// SET PARAMETERS:
|
||||
bool bIsPDF = true;
|
||||
bool bIsBase64 = true;
|
||||
std::wstring sMetaFile = L"";
|
||||
std::wstring sMediaDirectory = L"";
|
||||
|
||||
bool bResult = false;
|
||||
|
||||
if (bIsPDF)
|
||||
{
|
||||
CPdfFile oPdfWriter(pFonts);
|
||||
oPdfWriter.CreatePdf();
|
||||
oPdfWriter.SetTempDirectory(sTempDir);
|
||||
|
||||
CConvertFromBinParams oBufferParams;
|
||||
oBufferParams.m_sThemesDirectory = sThemesDirectory;
|
||||
|
||||
if (!sPassword.empty())
|
||||
oPdfWriter.SetPassword(sPassword);
|
||||
|
||||
std::wstring sOutputPath = NSFile::GetProcessDirectory() + L"/out.pdf";
|
||||
|
||||
if (!bIsBase64)
|
||||
{
|
||||
bResult = S_OK == oPdfWriter.OnlineWordToPdfFromBinary(sMetaFile, sOutputPath, &oBufferParams);
|
||||
}
|
||||
else
|
||||
{
|
||||
bResult = S_OK == oPdfWriter.OnlineWordToPdf(sMetaFile, sOutputPath, &oBufferParams);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
NSOnlineOfficeBinToPdf::CMetafileToRenderterRaster imageWriter(NULL);
|
||||
|
||||
imageWriter.SetMediaDirectory(sMediaDirectory);
|
||||
imageWriter.SetThemesDirectory(sThemesDirectory);
|
||||
imageWriter.SetInternalMediaDirectory(sMediaDirectory);
|
||||
imageWriter.SetTempDirectory(sTempDir);
|
||||
imageWriter.SetApplication(pFonts);
|
||||
|
||||
imageWriter.SetRasterFormat(4);
|
||||
std::wstring sOutputPath = NSFile::GetProcessDirectory() + L"/out" + getExtentionByRasterFormat(imageWriter.GetRasterFormat());
|
||||
|
||||
imageWriter.SetSaveType(0);
|
||||
imageWriter.SetIsOnlyFirst(false);
|
||||
imageWriter.SetRasterW(1000);
|
||||
imageWriter.SetRasterH(1000);
|
||||
|
||||
std::wstring sThumbnailDir;
|
||||
if (imageWriter.GetIsOnlyFirst())
|
||||
{
|
||||
imageWriter.SetFileName(sOutputPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
std::wstring sFileAddon = L"image" + getExtentionByRasterFormat(imageWriter.GetRasterFormat());
|
||||
if (!NSDirectory::Exists(sOutputPath))
|
||||
NSDirectory::CreateDirectory(sOutputPath);
|
||||
imageWriter.SetFileName(sOutputPath + FILE_SEPARATOR_STR + sFileAddon);
|
||||
}
|
||||
|
||||
BYTE* pBuffer = NULL;
|
||||
int lBufferLen = 0;
|
||||
|
||||
if (bIsBase64)
|
||||
{
|
||||
BYTE* pFileContent = NULL;
|
||||
DWORD dwFileSize = 0;
|
||||
if (NSFile::CFileBinary::ReadAllBytes(sMetaFile, &pFileContent, dwFileSize))
|
||||
{
|
||||
lBufferLen = NSBase64::Base64DecodeGetRequiredLength(dwFileSize);
|
||||
BYTE* pBuffer = new BYTE[lBufferLen];
|
||||
NSBase64::Base64Decode((const char*)pFileContent, dwFileSize, pBuffer, &lBufferLen);
|
||||
}
|
||||
|
||||
RELEASEARRAYOBJECTS(pFileContent);
|
||||
}
|
||||
else
|
||||
{
|
||||
DWORD dwFileSize = 0;
|
||||
NSFile::CFileBinary::ReadAllBytes(sMetaFile, &pBuffer, dwFileSize);
|
||||
lBufferLen = (DWORD)dwFileSize;
|
||||
}
|
||||
|
||||
bResult = imageWriter.ConvertBuffer(pBuffer, (LONG)lBufferLen);
|
||||
|
||||
RELEASEARRAYOBJECTS(pBuffer);
|
||||
}
|
||||
|
||||
pFonts->Release();
|
||||
return bResult ? 0 : 1;
|
||||
}
|
||||
21
Test/Applications/ServerMetafile/test.pro
Normal file
21
Test/Applications/ServerMetafile/test.pro
Normal file
@ -0,0 +1,21 @@
|
||||
CONFIG -= qt
|
||||
QT -= core gui
|
||||
|
||||
TARGET = test
|
||||
CONFIG += console
|
||||
CONFIG -= app_bundle
|
||||
TEMPLATE = app
|
||||
|
||||
CORE_ROOT_DIR = $$PWD/../../..
|
||||
PWD_ROOT_DIR = $$PWD
|
||||
include($$CORE_ROOT_DIR/Common/base.pri)
|
||||
|
||||
ADD_DEPENDENCY(UnicodeConverter, kernel, kernel_network, graphics, PdfFile)
|
||||
|
||||
core_linux:include($$CORE_ROOT_DIR/Common/3dParty/icu/icu.pri)
|
||||
core_windows:LIBS += -lgdi32 -ladvapi32 -luser32 -lshell32
|
||||
core_linux:LIBS += -lz
|
||||
|
||||
SOURCES += main.cpp
|
||||
|
||||
DESTDIR = $$PWD_ROOT_DIR/build
|
||||
Reference in New Issue
Block a user