mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
Merge branch 'fix/rtfFormat' into release/v9.1.0
This commit is contained in:
@ -61,6 +61,8 @@ RtfConvertationManager::RtfConvertationManager( )
|
||||
|
||||
m_poRtfWriter = NULL;
|
||||
m_poRtfReader = NULL;
|
||||
|
||||
m_nDefaultFontSize = 0;
|
||||
}
|
||||
_UINT32 RtfConvertationManager::ConvertRtfToOOX( std::wstring sSrcFileName, std::wstring sDstPath )
|
||||
{
|
||||
@ -91,17 +93,21 @@ _UINT32 RtfConvertationManager::ConvertRtfToOOX( std::wstring sSrcFileName, std:
|
||||
oWriter.m_sTempFolder = NSDirectory::CreateDirectoryWithUniqueName(NSDirectory::GetTempPath());
|
||||
}
|
||||
|
||||
m_poRtfReader = &oReader;
|
||||
m_poOOXWriter = &oWriter;
|
||||
|
||||
if (false == oReader.Load( )) return AVS_FILEUTILS_ERROR_CONVERT;
|
||||
m_poRtfReader = &oReader;
|
||||
m_poOOXWriter = &oWriter;
|
||||
|
||||
if (false == oReader.Load())
|
||||
return AVS_FILEUTILS_ERROR_CONVERT;
|
||||
if (!m_sDefaultFontName.empty())
|
||||
oDocument.m_oProperty.m_sDefFontName = m_sDefaultFontName;
|
||||
if (m_nDefaultFontSize > 0)
|
||||
oDocument.m_oProperty.m_nDefFontSize = m_nDefaultFontSize;
|
||||
oWriter.Save();
|
||||
|
||||
NSDirectory::DeleteDirectory(oReader.m_sTempFolder);
|
||||
NSDirectory::DeleteDirectory(oWriter.m_sTempFolder);
|
||||
NSDirectory::DeleteDirectory(oReader.m_sTempFolder);
|
||||
NSDirectory::DeleteDirectory(oWriter.m_sTempFolder);
|
||||
|
||||
return S_OK;
|
||||
return S_OK;
|
||||
}
|
||||
_UINT32 RtfConvertationManager::ConvertOOXToRtf( std::wstring sDstFileName, std::wstring sSrcPath )
|
||||
{
|
||||
|
||||
@ -44,26 +44,25 @@ namespace OOX { namespace Vml { class CShapeType; } }
|
||||
class RtfConvertationManager
|
||||
{
|
||||
public:
|
||||
std::wstring m_sTempFolder;
|
||||
std::wstring m_sTempFolder;
|
||||
int m_nUserLCID;
|
||||
|
||||
std::wstring m_sDefaultFontName;
|
||||
int m_nDefaultFontSize;
|
||||
RtfConvertationManager();
|
||||
|
||||
_UINT32 ConvertRtfToOOX( std::wstring sSrcFileName, std::wstring sDstPath);
|
||||
_UINT32 ConvertRtfToOOX(std::wstring sSrcFileName, std::wstring sDstPath);
|
||||
|
||||
_UINT32 ConvertOOXToRtf( std::wstring sDstFileName, std::wstring sSrcPath);
|
||||
_UINT32 ConvertOOXToRtf(std::wstring sDstFileName, std::wstring sSrcPath);
|
||||
|
||||
void OnCompleteItemRtf();
|
||||
void OnCompleteItemOOX();
|
||||
void OnCompleteItemRtf();
|
||||
void OnCompleteItemOOX();
|
||||
|
||||
private:
|
||||
OOXWriter* m_poOOXWriter;
|
||||
OOXReader* m_poOOXReader;
|
||||
|
||||
RtfWriter* m_poRtfWriter;
|
||||
RtfReader* m_poRtfReader;
|
||||
|
||||
bool m_bParseFirstItem;
|
||||
OOXWriter* m_poOOXWriter;
|
||||
OOXReader* m_poOOXReader;
|
||||
|
||||
RtfWriter* m_poRtfWriter;
|
||||
RtfReader* m_poRtfReader;
|
||||
|
||||
bool m_bParseFirstItem;
|
||||
};
|
||||
|
||||
@ -2957,18 +2957,18 @@ void RtfShapeReader::ShapePropertyReader::ShapePropertyValueReader::PopState( Rt
|
||||
int x = 0, y = 0;
|
||||
try
|
||||
{
|
||||
if (PROP_DEF != m_oShape.m_nRelLeft)
|
||||
x = XmlUtils::GetInteger(splitted[i].substr(0, pos)) - m_oShape.m_nRelLeft;
|
||||
else
|
||||
x = XmlUtils::GetInteger(splitted[i].substr(0, pos));
|
||||
if (PROP_DEF != m_oShape.m_nRelLeft)
|
||||
x = XmlUtils::GetInteger(splitted[i].substr(0, pos)) - m_oShape.m_nRelLeft;
|
||||
else
|
||||
x = XmlUtils::GetInteger(splitted[i].substr(0, pos));
|
||||
}
|
||||
catch(...){}
|
||||
try
|
||||
{
|
||||
if (PROP_DEF != m_oShape.m_nRelTop)
|
||||
y = XmlUtils::GetInteger(splitted[i].substr(pos + 1, splitted[i].length() - 1)) - m_oShape.m_nRelTop;
|
||||
else
|
||||
y = XmlUtils::GetInteger(splitted[i].substr(pos + 1, splitted[i].length() - 1));
|
||||
if (PROP_DEF != m_oShape.m_nRelTop)
|
||||
y = XmlUtils::GetInteger(splitted[i].substr(pos + 1, splitted[i].length() - 1)) - m_oShape.m_nRelTop;
|
||||
else
|
||||
y = XmlUtils::GetInteger(splitted[i].substr(pos + 1, splitted[i].length() - 1));
|
||||
}
|
||||
catch(...){}
|
||||
|
||||
@ -2992,10 +2992,10 @@ void RtfShapeReader::ShapePropertyReader::ShapePropertyValueReader::PopState( Rt
|
||||
m_oShape.m_aPSegmentInfo.push_back( val );
|
||||
}
|
||||
}
|
||||
else if (L"geoBottom" == m_sPropName) m_oShape.m_nGeoBottom = (PROP_DEF != m_oShape.m_nRelTop) ? nValue - m_oShape.m_nRelTop : nValue;
|
||||
else if (L"geoLeft" == m_sPropName) m_oShape.m_nGeoLeft = (PROP_DEF != m_oShape.m_nRelLeft) ? nValue - m_oShape.m_nRelLeft : nValue;
|
||||
else if (L"geoRight" == m_sPropName) m_oShape.m_nGeoRight = (PROP_DEF != m_oShape.m_nRelLeft) ? nValue - m_oShape.m_nRelLeft : nValue;
|
||||
else if (L"geoTop" == m_sPropName) m_oShape.m_nGeoTop = (PROP_DEF != m_oShape.m_nRelTop) ? nValue - m_oShape.m_nRelTop : nValue;
|
||||
else if (L"geoBottom" == m_sPropName) m_oShape.m_nGeoBottom = (PROP_DEF != m_oShape.m_nRelTop) ? nValue - m_oShape.m_nRelTop : nValue;
|
||||
else if (L"geoLeft" == m_sPropName) m_oShape.m_nGeoLeft = (PROP_DEF != m_oShape.m_nRelLeft) ? nValue - m_oShape.m_nRelLeft : nValue;
|
||||
else if (L"geoRight" == m_sPropName) m_oShape.m_nGeoRight = (PROP_DEF != m_oShape.m_nRelLeft) ? nValue - m_oShape.m_nRelLeft : nValue;
|
||||
else if (L"geoTop" == m_sPropName) m_oShape.m_nGeoTop = (PROP_DEF != m_oShape.m_nRelTop) ? nValue - m_oShape.m_nRelTop : nValue;
|
||||
//
|
||||
else if ( L"dxWrapDistLeft" == m_sPropName ) m_oShape.m_nWrapDistLeft = RtfUtility::Emu2Twips( nValue );
|
||||
else if ( L"dyWrapDistTop" == m_sPropName ) m_oShape.m_nWrapDistTop = RtfUtility::Emu2Twips( nValue );
|
||||
|
||||
@ -143,12 +143,12 @@ std::wstring RtfFont::RenderToOOX(RenderParameter oRenderParameter)
|
||||
{
|
||||
if ( IsValid() == false) return L"";
|
||||
|
||||
std::wstring sResult;
|
||||
|
||||
RtfDocument* poRtfDocument = static_cast<RtfDocument*>(oRenderParameter.poDocument);
|
||||
std::wstring sFontName = m_sName;
|
||||
std::wstring sResult;
|
||||
|
||||
if( sFontName.empty() )
|
||||
RtfDocument* poRtfDocument = static_cast<RtfDocument*>(oRenderParameter.poDocument);
|
||||
std::wstring sFontName = m_sName;
|
||||
|
||||
if( sFontName.empty() )
|
||||
{
|
||||
if( PROP_DEF != poRtfDocument->m_oProperty.m_nDefFont )
|
||||
{
|
||||
@ -156,12 +156,14 @@ std::wstring RtfFont::RenderToOOX(RenderParameter oRenderParameter)
|
||||
poRtfDocument->m_oFontTable.GetFont( poRtfDocument->m_oProperty.m_nDefFont, oDefFont );
|
||||
sFontName = oDefFont.m_sName;
|
||||
}
|
||||
if( sFontName.empty())
|
||||
sFontName = L"Arial";
|
||||
if (sFontName.empty())
|
||||
{
|
||||
sFontName = poRtfDocument->m_oProperty.m_sDefFontName;
|
||||
}
|
||||
}
|
||||
if( RENDER_TO_OOX_PARAM_MINOR_FONT == oRenderParameter.nType )
|
||||
{
|
||||
std::wstring sTag;
|
||||
std::wstring sTag;
|
||||
switch(m_eFontTheme)
|
||||
{
|
||||
case ft_flominor:
|
||||
@ -1347,8 +1349,10 @@ void RtfCharProperty::SetDefaultRtf()
|
||||
m_poShading.SetDefaultRtf();
|
||||
m_poBorder.SetDefaultRtf();
|
||||
|
||||
if (false == m_bListLevel)
|
||||
m_nFontSize = 24;
|
||||
//if (false == m_bListLevel)
|
||||
//{
|
||||
//m_nFontSize = DefaultStyle::FontSize;
|
||||
//}
|
||||
}
|
||||
void RtfCharProperty::SetDefaultOOX()
|
||||
{
|
||||
@ -1586,7 +1590,11 @@ std::wstring RtfCharProperty::RenderToOOX(RenderParameter oRenderParameter)
|
||||
|
||||
bool bInsert = false;
|
||||
bool bDelete = false;
|
||||
|
||||
|
||||
if (m_nFontSize == PROP_DEF)
|
||||
{
|
||||
m_nFontSize = poRtfDocument->m_oProperty.m_nDefFontSize;
|
||||
}
|
||||
if( RENDER_TO_OOX_PARAM_MATH == oRenderParameter.nType)
|
||||
{//w:rPr в m:ctrlPr
|
||||
if (m_nRevised != PROP_DEF)
|
||||
|
||||
@ -55,6 +55,9 @@ void RtfDocumentProperty::SetDefaultOOX()
|
||||
}
|
||||
void RtfDocumentProperty::SetDefault()
|
||||
{
|
||||
m_sDefFontName = L"Times New Roman";
|
||||
m_nDefFontSize = 24;
|
||||
|
||||
m_eCodePage = cp_ansi;
|
||||
m_nTabWidth = 720; //todo -1
|
||||
m_nDefFont = PROP_DEF;
|
||||
|
||||
@ -44,8 +44,10 @@ public:
|
||||
cp_pc, // pc IBM PC code page 437
|
||||
cp_pca, // pca IBM PC code page 850, used by IBM Personal System/2 (not implemented in version 1 of Microsoft Word for OS/2)
|
||||
} m_eCodePage;
|
||||
std::wstring m_sDefFontName;
|
||||
int m_nDefFontSize;
|
||||
|
||||
int m_nAnsiCodePage;
|
||||
int m_nAnsiCodePage;
|
||||
int m_nDefFont;
|
||||
int m_nDefMathFont;
|
||||
int m_nDefLang;
|
||||
|
||||
Reference in New Issue
Block a user