oox/source/export/shapes.cxx | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
New commits: commit 33a228978b109a05f05078bc430e9d61698798c9 Author: Karthik Godha <[email protected]> AuthorDate: Mon Dec 15 09:35:58 2025 +0530 Commit: Michael Stahl <[email protected]> CommitDate: Wed Dec 17 16:01:54 2025 +0100 tdf#169979: ODP->PPTX export missing p:pic element OLE objects when exported to PPTX should contain p:pic element in the XML. OLEs without graphic content don't export p:pic element, though this is a valid schema, PowerPoint doesn't accept this. Now empty p:pic element is exported for empty graphics Change-Id: Iac6fb988aa20e1bc9ae938d2a02dfc7b8dfae0c1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195623 Reviewed-by: Michael Stahl <[email protected]> Tested-by: Jenkins CollaboraOffice <[email protected]> diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx index 7f3b5493f146..f5c244b2dcb0 100644 --- a/oox/source/export/shapes.cxx +++ b/oox/source/export/shapes.cxx @@ -2799,6 +2799,25 @@ void ShapeExport::WriteMathShape(Reference<XShape> const& xShape) mpFS->endElementNS(XML_mc, XML_AlternateContent); } +static void WriteEmptyGraphic(FSHelperPtr const& pFS, sal_Int32 nGraphicId) +{ + pFS->startElementNS(XML_p, XML_pic); + pFS->startElementNS(XML_p, XML_nvPicPr); + pFS->startElementNS(XML_p, XML_cNvPr, XML_id, OUString::number(nGraphicId), XML_name, "", + XML_descr, ""); + pFS->endElementNS(XML_p, XML_cNvPr); + pFS->startElementNS(XML_p, XML_cNvPicPr); + pFS->endElementNS(XML_p, XML_cNvPicPr); + pFS->startElementNS(XML_p, XML_nvPr); + pFS->endElementNS(XML_p, XML_nvPr); + pFS->endElementNS(XML_p, XML_nvPicPr); + pFS->startElementNS(XML_p, XML_blipFill); + pFS->endElementNS(XML_p, XML_blipFill); + pFS->startElementNS(XML_p, XML_spPr); + pFS->endElementNS(XML_p, XML_spPr); + pFS->endElementNS(XML_p, XML_pic); +} + ShapeExport& ShapeExport::WriteOLE2Shape( const Reference< XShape >& xShape ) { Reference< XPropertySet > xPropSet( xShape, UNO_QUERY ); @@ -3016,6 +3035,8 @@ ShapeExport& ShapeExport::WriteOLE2Shape( const Reference< XShape >& xShape ) const Graphic* pGraphic = pOle2Obj->GetGraphic(); if (pGraphic) WriteGraphicObjectShapePart(xShape, pGraphic); + else // Required for MSO + WriteEmptyGraphic(mpFS, GetNewShapeID(xShape)); } mpFS->endElementNS( mnXmlNamespace, XML_oleObj );
