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 );

Reply via email to