Kaydet (Commit) 1dac99e7 authored tarafından Michael Stahl's avatar Michael Stahl

sw: fix DOCX export of embedded OOXML objects

OOXML embedded objects are converted to ODF during export, which
prevents the export from working, as it expects a stream, and ODF
uses a storage.

There is already a unit test in testEmbeddedXlsx, but it wrongly
succeeds because the components necessary to convert from OOXML to ODF
are missing in the test environment.

Change-Id: Ib4df346e04ecfb54ec1a728535be876db921b884
üst 6c569a2e
......@@ -33,6 +33,9 @@ define sw_ooxmlexport_components
dbaccess/util/dba \
drawinglayer/drawinglayer \
embeddedobj/util/embobj \
$(if $(filter-out WNT,$(OS)), \
embeddedobj/source/msole/emboleobj \
) \
filter/source/config/cache/filterconfig1 \
filter/source/odfflatxml/odfflatxml \
filter/source/xmlfilterdetect/xmlfd \
......@@ -45,6 +48,9 @@ define sw_ooxmlexport_components
package/source/xstor/xstor \
package/util/package2 \
sax/source/expatwrap/expwrap \
sc/util/sc \
sc/util/scd \
sc/util/scfilt \
sw/util/sw \
sw/util/swd \
sw/util/msword \
......
......@@ -4401,22 +4401,27 @@ void DocxAttributeOutput::WriteOLE2Obj( const SdrObject* pSdrObj, SwOLENode& rOL
bool DocxAttributeOutput::WriteOLEChart( const SdrObject* pSdrObj, const Size& rSize )
{
uno::Reference< chart2::XChartDocument > xChartDoc;
uno::Reference< drawing::XShape > xShape( const_cast<SdrObject*>(pSdrObj)->getUnoShape(), uno::UNO_QUERY );
if( xShape.is() )
{
uno::Reference< beans::XPropertySet > xPropSet( xShape, uno::UNO_QUERY );
if( xPropSet.is() )
xChartDoc.set( xPropSet->getPropertyValue( "Model" ), uno::UNO_QUERY );
}
if (!xShape.is())
return false;
if( xChartDoc.is() )
{
m_postponedChart = pSdrObj;
m_postponedChartSize = rSize;
return true;
}
return false;
uno::Reference<beans::XPropertySet> const xPropSet(xShape, uno::UNO_QUERY);
if (!xPropSet.is())
return false;
OUString clsid; // why is the property of type string, not sequence<byte>?
xPropSet->getPropertyValue("CLSID") >>= clsid;
assert(!clsid.isEmpty());
SvGlobalName aClassID;
bool const isValid(aClassID.MakeId(clsid));
assert(isValid);
if (!SotExchange::IsChart(aClassID))
return false;
m_postponedChart = pSdrObj;
m_postponedChartSize = rSize;
return true;
}
/*
......
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