mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
(2.0.0.254): ASCOfficeDocxFile2
Переделаны старые формулы Вместо картинки со старой формулой в бинарник пишется еще и формула в новом формате git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@60183 954022d7-b5bf-4e40-9824-e11837661b57
This commit is contained in:
committed by
Alexander Trofimov
parent
84470c55af
commit
0fd13eb6d8
@ -5287,32 +5287,7 @@ public:
|
||||
GetRunStringWriter().WriteString(oCDrawingProperty.Write());
|
||||
}
|
||||
else if(oCDrawingProperty.bDataPos && oCDrawingProperty.bDataLength)
|
||||
{
|
||||
CString sDrawingProperty = oCDrawingProperty.Write();
|
||||
if(false == sDrawingProperty.IsEmpty())
|
||||
{
|
||||
VARIANT var;
|
||||
var.vt = VT_I4;
|
||||
var.lVal = m_oFileWriter.m_oChartWriter.getChartCount();
|
||||
m_oFileWriter.m_pDrawingConverter->SetAdditionalParam(CString(_T("DocumentChartsCount")), var);
|
||||
|
||||
long nCurPos = m_oBufferedStream.GetPos();
|
||||
CString* bstrDrawingXml = NULL;
|
||||
m_oFileWriter.m_pDrawingConverter->SaveObjectEx(oCDrawingProperty.DataPos, oCDrawingProperty.DataLength, sDrawingProperty, XMLWRITER_DOC_TYPE_DOCX, &bstrDrawingXml);
|
||||
m_oBufferedStream.Seek(nCurPos);
|
||||
|
||||
VARIANT vt;
|
||||
m_oFileWriter.m_pDrawingConverter->GetAdditionalParam(CString(_T("DocumentChartsCount")), &vt);
|
||||
if(VT_I4 == vt.vt)
|
||||
m_oFileWriter.m_oChartWriter.setChartCount(vt.lVal);
|
||||
|
||||
if(NULL != bstrDrawingXml && false == bstrDrawingXml->IsEmpty())
|
||||
{
|
||||
GetRunStringWriter().WriteString(*bstrDrawingXml);
|
||||
}
|
||||
RELEASEOBJECT(bstrDrawingXml);
|
||||
}
|
||||
}
|
||||
ReadDrawing(oCDrawingProperty);
|
||||
}
|
||||
else if(c_oSerRunType::table == type)
|
||||
{
|
||||
@ -5372,6 +5347,33 @@ public:
|
||||
res = c_oSerConstants::ReadUnknown;
|
||||
return res;
|
||||
};
|
||||
void ReadDrawing(CDrawingProperty &oCDrawingProperty)
|
||||
{
|
||||
CString sDrawingProperty = oCDrawingProperty.Write();
|
||||
if(false == sDrawingProperty.IsEmpty())
|
||||
{
|
||||
VARIANT var;
|
||||
var.vt = VT_I4;
|
||||
var.lVal = m_oFileWriter.m_oChartWriter.getChartCount();
|
||||
m_oFileWriter.m_pDrawingConverter->SetAdditionalParam(CString(_T("DocumentChartsCount")), var);
|
||||
|
||||
long nCurPos = m_oBufferedStream.GetPos();
|
||||
CString* bstrDrawingXml = NULL;
|
||||
m_oFileWriter.m_pDrawingConverter->SaveObjectEx(oCDrawingProperty.DataPos, oCDrawingProperty.DataLength, sDrawingProperty, XMLWRITER_DOC_TYPE_DOCX, &bstrDrawingXml);
|
||||
m_oBufferedStream.Seek(nCurPos);
|
||||
|
||||
VARIANT vt;
|
||||
m_oFileWriter.m_pDrawingConverter->GetAdditionalParam(CString(_T("DocumentChartsCount")), &vt);
|
||||
if(VT_I4 == vt.vt)
|
||||
m_oFileWriter.m_oChartWriter.setChartCount(vt.lVal);
|
||||
|
||||
if(NULL != bstrDrawingXml && false == bstrDrawingXml->IsEmpty())
|
||||
{
|
||||
GetRunStringWriter().WriteString(*bstrDrawingXml);
|
||||
}
|
||||
RELEASEOBJECT(bstrDrawingXml);
|
||||
}
|
||||
}
|
||||
int ReadObject(BYTE type, long length, void* poResult)
|
||||
{
|
||||
int res = c_oSerConstants::ReadOk;
|
||||
@ -5381,6 +5383,13 @@ public:
|
||||
res = Read1(length, &Binary_DocumentTableReader::ReadMathArg, this, poResult);
|
||||
GetRunStringWriter().WriteString(CString(_T("</m:oMath>")));
|
||||
}
|
||||
else if(c_oSerRunType::pptxDrawing == type)
|
||||
{
|
||||
CDrawingProperty oCDrawingProperty(m_oFileWriter.getNextDocPr());
|
||||
res = Read2(length, &Binary_DocumentTableReader::ReadPptxDrawing, this, &oCDrawingProperty);
|
||||
if(oCDrawingProperty.bDataPos && oCDrawingProperty.bDataLength)
|
||||
ReadDrawing(oCDrawingProperty);
|
||||
}
|
||||
else
|
||||
res = c_oSerConstants::ReadUnknown;
|
||||
return res;
|
||||
|
||||
Binary file not shown.
@ -4666,29 +4666,49 @@ namespace BinDocxRW
|
||||
WriteComment(OOX::et_w_commentReference, pCommentReference->m_oId);
|
||||
break;
|
||||
}
|
||||
/*case OOX::et_w_object:
|
||||
case OOX::et_w_object:
|
||||
{
|
||||
int nCurPos = m_oBcw.WriteItemStart(c_oSerRunType::object);
|
||||
|
||||
OOX::Logic::CObject* pObject = static_cast<OOX::Logic::CObject*>(item);
|
||||
//write Picture
|
||||
|
||||
OOX::Rels::CRelationShip* oRels = NULL;
|
||||
smart_ptr<OOX::File> pFile = m_oParamsDocumentWriter.m_pRels->Find( OOX::RId(pObject->m_oOleObject->m_oId.get().GetValue()));
|
||||
if(m_nSkipFldChar > 0)
|
||||
break;
|
||||
CString* pXml = NULL;
|
||||
|
||||
CString sLink;
|
||||
if (pFile.IsInit() && OOX::FileTypes::OleObject == pFile->type())
|
||||
OOX::Logic::CPicture* pPicture = static_cast<OOX::Logic::CPicture*>(item);
|
||||
pXml = pPicture->m_sXml.GetPointer();
|
||||
|
||||
int nCurPos1 = m_oBcw.WriteItemStart(c_oSerRunType::pptxDrawing);
|
||||
WriteDrawing(pXml, NULL, NULL);
|
||||
m_oBcw.WriteItemEnd(nCurPos1);
|
||||
|
||||
//write equation
|
||||
/*OOX::Logic::CObject* pObject = static_cast<OOX::Logic::CObject*>(item);
|
||||
if (pObject->m_oOleObject.IsInit())
|
||||
{
|
||||
OOX::HyperLink* pHyperlinkFile = static_cast<OOX::HyperLink*>(pFile.operator ->());
|
||||
sLink = pHyperlinkFile->Uri().GetPath();
|
||||
}
|
||||
MathEquation::BinaryEquationWriter oBinEqWriter(m_oBcw.m_oStream);
|
||||
CString sProgID = pObject->m_oOleObject->m_sProgId.get().GetString();
|
||||
if ( _T("Equation.3") == sProgID)
|
||||
{
|
||||
OOX::Rels::CRelationShip* oRels = NULL;
|
||||
smart_ptr<OOX::File> pFile = m_oParamsDocumentWriter.m_pRels->Find( OOX::RId(pObject->m_oOleObject->m_oId.get().GetValue()));
|
||||
|
||||
MathEquation::CEquationReader oReader(sLink);
|
||||
oReader.SetOutputDev(&oBinEqWriter);
|
||||
oReader.Parse();
|
||||
CString sLink;
|
||||
if (pFile.IsInit() && OOX::FileTypes::OleObject == pFile->type())
|
||||
{
|
||||
OOX::HyperLink* pHyperlinkFile = static_cast<OOX::HyperLink*>(pFile.operator ->());
|
||||
sLink = pHyperlinkFile->Uri().GetPath();
|
||||
}
|
||||
MathEquation::BinaryEquationWriter oBinEqWriter(m_oBcw.m_oStream);
|
||||
|
||||
MathEquation::CEquationReader oReader(sLink);
|
||||
oReader.SetOutputDev(&oBinEqWriter);
|
||||
oReader.Parse();
|
||||
}
|
||||
}*/
|
||||
m_oBcw.WriteItemEnd(nCurPos);
|
||||
break;
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,7 +2,6 @@
|
||||
//2
|
||||
//0
|
||||
//0
|
||||
//253
|
||||
#define INTVER 2,0,0,253
|
||||
#define STRVER "2,0,0,253\0"
|
||||
|
||||
//254
|
||||
#define INTVER 2,0,0,254
|
||||
#define STRVER "2,0,0,254\0"
|
||||
|
||||
@ -140,7 +140,7 @@ namespace OOX
|
||||
else if ( _T("w:noBreakHyphen") == sName )
|
||||
pItem = new CNoBreakHyphen( oItem );
|
||||
else if ( _T("w:object") == sName )
|
||||
pItem = new CPicture( oItem );
|
||||
pItem = new CObject( oItem );
|
||||
else if ( _T("w:pgNum") == sName )
|
||||
pItem = new CPgNum( oItem );
|
||||
else if ( _T("w:pict") == sName )
|
||||
@ -235,7 +235,7 @@ namespace OOX
|
||||
else if ( _T("w:noBreakHyphen") == sName )
|
||||
pItem = new CNoBreakHyphen( oReader );
|
||||
else if ( _T("w:object") == sName )
|
||||
pItem = new CPicture( oReader );
|
||||
pItem = new CObject( oReader );
|
||||
else if ( _T("w:pgNum") == sName )
|
||||
pItem = new CPgNum( oReader );
|
||||
else if ( _T("w:pict") == sName )
|
||||
|
||||
@ -210,12 +210,12 @@ int CEquationReader::HandleChar(uint8_t nTag)
|
||||
if (nChar < 0x20)
|
||||
return nRet;
|
||||
|
||||
pOutputDev->BeginChar(nChar, nTypeFace, IsSpecialChar(nChar));
|
||||
|
||||
if (xfEMBELL(nTag))
|
||||
{
|
||||
nRet = HandleRecords();
|
||||
}
|
||||
|
||||
pOutputDev->BeginChar(nChar, nTypeFace, IsSpecialChar(nChar));
|
||||
}
|
||||
|
||||
pOutputDev->EndChar();
|
||||
return nRet;
|
||||
|
||||
Reference in New Issue
Block a user