oox/source/export/shapes.cxx | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
New commits: commit 20fb6d3406a393073fd013ea20d1dec498476c87 Author: Karthik Godha <[email protected]> AuthorDate: Mon Dec 15 09:35:58 2025 +0530 Commit: Michael Stahl <[email protected]> CommitDate: Tue Jan 6 19:03:35 2026 +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]> (cherry picked from commit 33a228978b109a05f05078bc430e9d61698798c9) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196542 Tested-by: Jenkins diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx index af5dd85c19c2..30e08d2a9720 100644 --- a/oox/source/export/shapes.cxx +++ b/oox/source/export/shapes.cxx @@ -2796,6 +2796,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 ); @@ -3020,6 +3039,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 );
