Compare commits

..

10 Commits

Author SHA1 Message Date
ab449707f3 Merge remote-tracking branch 'origin/hotfix/v5.1.5' into develop 2018-07-09 14:47:31 +03:00
47f28ac212 RtfFormat - fix bug #34747 2018-07-09 14:43:46 +03:00
016b77f9ab Merge pull request #88 from ONLYOFFICE/feature/no-history-gsync
Add --no-historyt to `gclient-sync`
2018-07-05 17:23:32 +03:00
d81c895610 Add --no-historyt to gclient-sync
Greatly reduce time to fetch v8 sources.
Time to execute `gclient-sync`
Default varinant `real    21m2.279s`
With `--no-history` - `real    0m53.638s`
2018-07-05 17:21:57 +03:00
653a4e77c5 moved 'encrypt' data type 2018-07-04 18:11:43 +03:00
1c94b64399 added class for "encrypt" data event 2018-07-04 14:37:48 +03:00
2b2352fc74 Fix error build 2018-07-04 12:22:28 +03:00
11b97bcd6d [x2t] Add m_bIsPDFA param 2018-07-03 18:31:25 +03:00
06150358a9 Fix bug with calculating inverse matrix 2018-06-27 14:29:21 +03:00
945c04b294 Hatched brush support in builder mode 2018-06-26 17:57:25 +03:00
11 changed files with 65 additions and 51 deletions

View File

@ -1839,6 +1839,12 @@ bool RtfOleReader::ExecuteCommand(RtfDocument& oDocument, RtfReader& oReader, st
{
TextReader oTextReader( m_oOle.m_sOleClass, false );
StartSubReader( oTextReader, oDocument, oReader );
size_t pos = m_oOle.m_sOleClass.find(L"asc.");
if (std::wstring::npos != pos)
{
m_oOle.m_sOleClass = L"asc.{" + m_oOle.m_sOleClass.substr(pos + 4) + L"}";
}
}
else if ( "objdata" == sCommand )
{

View File

@ -34,7 +34,6 @@
#include "Writer/OOXRelsWriter.h"
#include "RtfDocument.h"
#include "../../../Common/OfficeFileFormatChecker.h"
std::wstring RtfOle::RenderToOOX(RenderParameter oRenderParameter)
{
@ -98,6 +97,7 @@ std::wstring RtfOle::RenderToOOX(RenderParameter oRenderParameter)
if (m_oResultShape)
{
m_oResultShape->m_bIsOle = true;
sResult += m_oResultShape->RenderToOOX(oNewRenderParameter);
oNewRenderParameter.nValue = m_oResultShape->m_nID;
@ -120,37 +120,6 @@ std::wstring RtfOle::RenderToOOXOnlyOle(RenderParameter oRenderParameter)
OOXRelsWriter * poRelsWriter = static_cast<OOXRelsWriter*> (oRenderParameter.poRels);
RtfDocument * poDocument = static_cast<RtfDocument*> (oRenderParameter.poDocument);
int ind_ole = poDocument->m_oIdGenerator.Generate_OleIndex();
std::wstring sName = L"oleObject" + std::to_wstring(ind_ole);
std::wstring sExtension = L"bin";
std::wstring sMime = L"application/vnd.openxmlformats-officedocument.oleObject";
std::wstring sRelsType = L"http://schemas.openxmlformats.org/officeDocument/2006/relationships/oleObject";
COfficeFileFormatChecker checker;
if (checker.isOfficeFile(m_sOleFilename))
{
switch(checker.nFileType)
{
case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX:
{
sName = L"_____Microsoft_Excel" + ((ind_ole > 1) ? (L"_" + std::to_wstring(ind_ole - 1)) : L"");
sExtension = L"xlsx";
sMime = L"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
sRelsType = L"http://schemas.openxmlformats.org/officeDocument/2006/relationships/package";
m_sOleClass = L"Excel.Sheet.12";
}break;
case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS:
{
sName = L"_____Microsoft_Excel_97-2003" + ((ind_ole > 1) ? (L"_" + std::to_wstring(ind_ole - 1)) : L"");
sExtension = L"xls";
sMime = L"application/vnd.ms-excel";
m_sOleClass = L"Excel.Sheet.8";
}break;
}
}
sResult += L"<o:OLEObject";
switch ( m_eOleType )
{
@ -161,9 +130,13 @@ std::wstring RtfOle::RenderToOOXOnlyOle(RenderParameter oRenderParameter)
sResult += L" ShapeID=\"_x0000_s" + std::to_wstring(poDocument->GetShapeId( oRenderParameter.nValue )) + L"\"";
sResult += L" DrawAspect=\"Content\"";
sResult += L" ObjectID=\"" + poDocument->m_oIdGenerator.Generate_OleId() + L"\"";
std::wstring sExtension = L"bin";
std::wstring sMime = L"application/vnd.openxmlformats-officedocument.oleObject";
std::wstring sFilenameRels;
sFilenameRels += sName + L"." + sExtension;
sFilenameRels += L"oleObject" + std::to_wstring(poDocument->m_oIdGenerator.Generate_OleIndex()) + L".";
sFilenameRels += sExtension;
std::wstring sFilenameFull = poOOXWriter->m_sTargetFolder + FILE_SEPARATOR_STR + L"word" + FILE_SEPARATOR_STR + L"embeddings";
@ -175,7 +148,7 @@ std::wstring RtfOle::RenderToOOXOnlyOle(RenderParameter oRenderParameter)
Utils::CopyDirOrFile( m_sOleFilename, sFilenameFull );
poOOXWriter->m_oContentTypes.AddExtension( sMime, sExtension);
std::wstring srId = poRelsWriter->AddRelationship( sRelsType, sFilenameRels);
std::wstring srId = poRelsWriter->AddRelationship( L"http://schemas.openxmlformats.org/officeDocument/2006/relationships/oleObject", sFilenameRels);
sResult += L" r:id=\"" + srId + L"\"";
sResult += L"/>";

View File

@ -803,7 +803,8 @@ std::wstring RtfShape::RenderToOOX(RenderParameter oRenderParameter)
}
std::wstring RtfShape::GetShapeNodeName()
{
if (m_bBackground) return L"v:background";
if (m_bBackground) return L"v:background";
if (m_bIsOle) return L"v:rect";
switch(m_nShapeType)
{
@ -1386,7 +1387,7 @@ std::wstring RtfShape::RenderToOOXBegin(RenderParameter oRenderParameter)
{
sPicture = m_oPicture->RenderToOOX(oRenderParameter);
if (m_nShapeType == PROP_DEF || m_nShapeType == 75)
if (m_nShapeType == PROP_DEF || m_nShapeType == 75 || m_bIsOle)
{
if( sPicture.empty() )//если не сохранилась картинка, то весь shape-picture будет бесполезным
return L"";

View File

@ -37,7 +37,7 @@ nmake /f Makefile.vc mode=static ENABLE_WINSSL=yes MACHINE=%MACHINE% VC=12
if not exist "%SCRIPTPATH%%OUTPUT%" (
md %SCRIPTPATH%%OUTPUT%\build
xcopy /Y /S ..\builds\libcurl-vc12-%MACHINE%-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib %SCRIPTPATH%%OUTPUT%\build\
mv %SCRIPTPATH%%OUTPUT%\build\libcurl_a.lib %SCRIPTPATH%%OUTPUT%\build\curl.lib
move %SCRIPTPATH%%OUTPUT%\build\libcurl_a.lib %SCRIPTPATH%%OUTPUT%\build\curl.lib
)
cd ..\..
cd ..\..

View File

@ -23,4 +23,4 @@ cd v8
call git checkout -b 6.0 -t branch-heads/6.0
cd ../
call gclient sync
call gclient sync --no-history

View File

@ -22,7 +22,7 @@ else
cd v8
fi
gclient sync
gclient sync --no-history
os=$(uname -s)
platform=""

View File

@ -13,7 +13,7 @@ if [ -d "$SCRIPTPATH/v8/third_party/binutils/Linux_ia32/Release" ]; then
fi
cd "$SCRIPTPATH/v8"
gclient sync
gclient sync --no-history
if [ -d "$SCRIPTPATH/v8/third_party/binutils/Linux_x64/Release/bin" ]; then
cd "$SCRIPTPATH/v8/third_party/binutils/Linux_x64/Release/bin"

View File

@ -601,7 +601,9 @@ namespace OOX
if ( _T("v:path") == sName )
pItem = new OOX::Vml::CPath( oSubReader );
break;
case 'r':
if ( _T("v:rect") == sName )
m_oShape = oSubReader;
case 's':
if ( _T("v:shadow") == sName )
pItem = new OOX::Vml::CShadow( oSubReader );
@ -662,7 +664,7 @@ namespace OOX
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("w:dxaOrig"), m_oDxaOrig )
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("w:dxyOrig"), m_oDyaOrig )
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("w:dyaOrig"), m_oDyaOrig )
WritingElement_ReadAttributes_End( oReader )
}
};

View File

@ -37,6 +37,7 @@
#include "../DesktopEditor/common/String.h"
#include "../DesktopEditor/graphics/MetafileToRenderer.h"
#include "../DesktopEditor/raster/BgraFrame.h"
namespace NSOnlineOfficeBinToPdf
{
@ -60,6 +61,11 @@ namespace NSOnlineOfficeBinToPdf
try
{
int nFind = wsTempString.find(L",");
bool bIsOnlyOfficeHatch = false;
if (nFind > 0 && (std::wstring::npos != wsTempString.find(L"onlyoffice_hatch")))
bIsOnlyOfficeHatch = true;
wsTempString = wsTempString.substr(nFind + 1);
std::wstring wsBase64TempFile = ((CPdfRenderer*)m_pRenderer)->GetTempFile();
@ -70,11 +76,25 @@ namespace NSOnlineOfficeBinToPdf
if (NSBase64::Base64Decode(sBase64MultyByte.c_str(), sBase64MultyByte.length(), pImageBuffer, &nBufferLen))
{
NSFile::CFileBinary oFile;
if (oFile.CreateFileW(wsBase64TempFile))
if (!bIsOnlyOfficeHatch)
{
oFile.WriteFile(pImageBuffer, nBufferLen);
oFile.CloseFile();
NSFile::CFileBinary oFile;
if (oFile.CreateFileW(wsBase64TempFile))
{
oFile.WriteFile(pImageBuffer, nBufferLen);
oFile.CloseFile();
wsTempString = wsBase64TempFile;
}
}
else
{
int nSize = (int)std::sqrt(nBufferLen >> 2);
CBgraFrame oFrame;
oFrame.put_Data(pImageBuffer);
oFrame.put_Width(nSize);
oFrame.put_Height(nSize);
oFrame.put_Stride(4 * nSize);
oFrame.SaveFile(wsBase64TempFile, 4); // PNG
wsTempString = wsBase64TempFile;
}
}

View File

@ -1128,7 +1128,7 @@ namespace NExtractTools
NSFonts::IApplicationFonts* pApplicationFonts = NSFonts::NSApplication::Create();
initApplicationFonts(pApplicationFonts, params);
CPdfRenderer pdfWriter(pApplicationFonts);
CPdfRenderer pdfWriter(pApplicationFonts, params.getIsPDFA());
pdfWriter.SetTempFolder(sTemp);
pdfWriter.SetThemesPlace(sThemeDir);
@ -1268,7 +1268,7 @@ namespace NExtractTools
NSFonts::IApplicationFonts* pApplicationFonts = NSFonts::NSApplication::Create();
initApplicationFonts(pApplicationFonts, params);
CPdfRenderer pdfWriter(pApplicationFonts);
CPdfRenderer pdfWriter(pApplicationFonts, params.getIsPDFA());
pdfWriter.SetTempFolder(sTemp);
pdfWriter.SetThemesPlace(sThemeDir);
@ -2827,7 +2827,7 @@ namespace NExtractTools
NSFonts::IApplicationFonts* pApplicationFonts = NSFonts::NSApplication::Create();
initApplicationFonts(pApplicationFonts, params);
CPdfRenderer pdfWriter(pApplicationFonts);
CPdfRenderer pdfWriter(pApplicationFonts, params.getIsPDFA());
pdfWriter.SetTempFolder(sTemp);
pdfWriter.SetThemesPlace(sThemeDir);
int nReg = (bPaid == false) ? 0 : 1;
@ -3670,7 +3670,7 @@ namespace NExtractTools
}
else
{
CPdfRenderer pdfWriter(pApplicationFonts);
CPdfRenderer pdfWriter(pApplicationFonts, params.getIsPDFA());
pdfWriter.SetTempFolder(sTemp);
pdfWriter.SetTempFolder(sTemp);

View File

@ -409,6 +409,7 @@ namespace NExtractTools
std::wstring* m_sTempDir;
bool* m_bIsNoBase64;
boost::unordered_map<int, InputLimit> m_mapInputLimits;
bool* m_bIsPDFA;
//output params
mutable bool m_bOutputConvertCorrupted;
public:
@ -437,6 +438,7 @@ namespace NExtractTools
m_sDocumentID = NULL;
m_sTempDir = NULL;
m_bIsNoBase64 = NULL;
m_bIsPDFA = NULL;
m_bOutputConvertCorrupted = false;
}
@ -465,6 +467,7 @@ namespace NExtractTools
RELEASEOBJECT(m_sDocumentID);
RELEASEOBJECT(m_sTempDir);
RELEASEOBJECT(m_bIsNoBase64);
RELEASEOBJECT(m_bIsPDFA);
}
bool FromXmlFile(const std::wstring& sFilename)
@ -628,6 +631,11 @@ namespace NExtractTools
RELEASEOBJECT(m_bIsNoBase64);
m_bIsNoBase64 = new bool(XmlUtils::GetBoolean2(sValue));
}
else if(_T("m_bIsPDFA") == sName)
{
RELEASEOBJECT(m_bIsPDFA);
m_bIsPDFA = new bool(XmlUtils::GetBoolean2(sValue));
}
}
else if(_T("m_nCsvDelimiterChar") == sName)
{
@ -707,6 +715,10 @@ namespace NExtractTools
{
return (NULL != m_bIsNoBase64) ? (*m_bIsNoBase64) : true;
}
bool getIsPDFA() const
{
return (NULL != m_bIsPDFA) ? (*m_bIsPDFA) : false;
}
std::wstring getXmlOptions()
{
std::wstring sRes;