From a41cf57c1eb4cabe5afc1a45d6fe535dbb935217 Mon Sep 17 00:00:00 2001 From: Balazs Varga Date: Fri, 9 Oct 2020 10:20:49 +0200 Subject: [PATCH] tdf#134987 convert DOCX to ODT: fix lost charts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Embedded charts of DOCX documents were lost or replaced by images during conversion to native ODT format, resulted by bad handling of XEmbedPersist objects in EmbeddedObjectContainer. Note: Add missing loext:external-data to ODF 1.3 schema definition to fix ODF validation error in gerrit. See commit 2054af83fefb955e20de2b40178a11726525057e (fdo#72520 : Added property to store external data path in chart) and commit a49a9dab3168c03a539adc131f2ade03236edb69 (fix one more ODF validation error). Change-Id: I9edff9af3a79370ea447ffc6078da3520d0c6f63 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104104 Tested-by: László Németh Reviewed-by: László Németh --- .../container/embeddedobjectcontainer.cxx | 8 +++ .../OpenDocument-schema-v1.3+libreoffice.rng | 9 +++ sw/qa/extras/odfexport/data/tdf134987.docx | Bin 0 -> 39541 bytes sw/qa/extras/odfexport/odfexport.cxx | 53 ++++++++++++++++++ 4 files changed, 70 insertions(+) create mode 100644 sw/qa/extras/odfexport/data/tdf134987.docx diff --git a/comphelper/source/container/embeddedobjectcontainer.cxx b/comphelper/source/container/embeddedobjectcontainer.cxx index 944a4dd5b25f..faed14065082 100644 --- a/comphelper/source/container/embeddedobjectcontainer.cxx +++ b/comphelper/source/container/embeddedobjectcontainer.cxx @@ -931,6 +931,14 @@ bool EmbeddedObjectContainer::RemoveEmbeddedObject( const uno::Reference < embed } OUString aTempName, aMediaType; + /* Do not create a new name for a removed object, in the pImpl->mpTempObjectContainer, + because the original m_aEntryName of xObj will be overwritten by InsertEmbeddedObject(), + so uno::Reference < embed::XEmbeddedObject >& xObj will misbehave in + EmbeddedObjectContainer::StoreAsChildren and SfxObjectShell::SaveCompletedChildren + and will throw an exception because of objects with the same names! */ + if( !pImpl->mpTempObjectContainer->HasEmbeddedObject(aName) ) + aTempName = aName; + pImpl->mpTempObjectContainer->InsertEmbeddedObject( xObj, aTempName ); uno::Reference < io::XInputStream > xStream = GetGraphicStream( xObj, &aMediaType ); diff --git a/schema/libreoffice/OpenDocument-schema-v1.3+libreoffice.rng b/schema/libreoffice/OpenDocument-schema-v1.3+libreoffice.rng index 486471a317d5..9167044ca87e 100644 --- a/schema/libreoffice/OpenDocument-schema-v1.3+libreoffice.rng +++ b/schema/libreoffice/OpenDocument-schema-v1.3+libreoffice.rng @@ -2472,4 +2472,13 @@ xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1. + + + + + + + + + diff --git a/sw/qa/extras/odfexport/data/tdf134987.docx b/sw/qa/extras/odfexport/data/tdf134987.docx new file mode 100644 index 0000000000000000000000000000000000000000..c828bf442e1cb2078ec438b5dbe314f38878bf76 GIT binary patch literal 39541 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 literal 0 HcmV?d00001 diff --git a/sw/qa/extras/odfexport/odfexport.cxx b/sw/qa/extras/odfexport/odfexport.cxx index 264edddea196..08166b3c2ccb 100644 --- a/sw/qa/extras/odfexport/odfexport.cxx +++ b/sw/qa/extras/odfexport/odfexport.cxx @@ -46,6 +46,7 @@ #include #include #include +#include #include #include #include @@ -778,6 +779,58 @@ DECLARE_ODFEXPORT_TEST(testFdo58949, "fdo58949.docx") CPPUNIT_ASSERT_EQUAL(3, nMatches); } +DECLARE_ODFEXPORT_TEST(testTdf134987, "tdf134987.docx") +{ + uno::Reference xTEOSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference xAccess(xTEOSupplier->getEmbeddedObjects()); + uno::Sequence aSeq(xAccess->getElementNames()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(3), aSeq.getLength()); + + OUString aMediaType; + // checking first object (formula) + { + uno::Reference xEOSupplier(xAccess->getByName("1"), uno::UNO_QUERY); + uno::Reference xObj(xEOSupplier->getEmbeddedObject()); + CPPUNIT_ASSERT(xObj.is()); + + uno::Reference xSBDoc(xObj, uno::UNO_QUERY); + uno::Reference xStorage(xSBDoc->getDocumentStorage()); + CPPUNIT_ASSERT(xStorage.is()); + + uno::Reference< beans::XPropertySet > xStorProps(xStorage, uno::UNO_QUERY_THROW); + CPPUNIT_ASSERT(xStorProps->getPropertyValue("MediaType") >>= aMediaType); + CPPUNIT_ASSERT(aMediaType.equalsIgnoreAsciiCase(MIMETYPE_OASIS_OPENDOCUMENT_FORMULA_ASCII)); + } + // checking second object (chart) + { + uno::Reference xEOSupplier(xAccess->getByName("2"), uno::UNO_QUERY); + uno::Reference xObj(xEOSupplier->getEmbeddedObject()); + CPPUNIT_ASSERT(xObj.is()); + + uno::Reference xSBDoc(xObj, uno::UNO_QUERY); + uno::Reference xStorage(xSBDoc->getDocumentStorage()); + CPPUNIT_ASSERT(xStorage.is()); + + uno::Reference< beans::XPropertySet > xStorProps(xStorage, uno::UNO_QUERY_THROW); + CPPUNIT_ASSERT(xStorProps->getPropertyValue("MediaType") >>= aMediaType); + CPPUNIT_ASSERT(aMediaType.equalsIgnoreAsciiCase(MIMETYPE_OASIS_OPENDOCUMENT_CHART_ASCII)); + } + // checking third object (chart) + { + uno::Reference xEOSupplier(xAccess->getByName("3"), uno::UNO_QUERY); + uno::Reference xObj(xEOSupplier->getEmbeddedObject()); + CPPUNIT_ASSERT(xObj.is()); + + uno::Reference xSBDoc(xObj, uno::UNO_QUERY); + uno::Reference xStorage(xSBDoc->getDocumentStorage()); + CPPUNIT_ASSERT(xStorage.is()); + + uno::Reference< beans::XPropertySet > xStorProps(xStorage, uno::UNO_QUERY_THROW); + CPPUNIT_ASSERT(xStorProps->getPropertyValue("MediaType") >>= aMediaType); + CPPUNIT_ASSERT(aMediaType.equalsIgnoreAsciiCase(MIMETYPE_OASIS_OPENDOCUMENT_CHART_ASCII)); + } +} + DECLARE_ODFEXPORT_TEST(testStylePageNumber, "ooo321_stylepagenumber.odt") { CPPUNIT_ASSERT_EQUAL(5, getPages());