PHPOffice / PHPPresentation

A pure PHP library for reading and writing presentations documents
https://phpoffice.github.io/PHPPresentation
Other
1.31k stars 519 forks source link

Styles not conserved when creating a pptx from another one #542

Open montac opened 5 years ago

montac commented 5 years ago

Hello, I'am trying to create a pptx from another one by reading an input pptx, then writing the same one to an output.pptx. The output document does not conserve the input document's styles nor the layout. below is the code I use

        $pptReader = IOFactory::createReader('PowerPoint2007');
        $objPHPPresentation = $pptReader->load('input.pptx');

        // Write the PPTx file
        $oWriterPPTX = IOFactory::createWriter($objPHPPresentation, 'PowerPoint2007');

        $oWriterPPTX->save(dirname('output.pptx');

Input

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
       xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"
       xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
       xmlns:p14="http://schemas.microsoft.com/office/powerpoint/2010/main"
       xmlns:p15="http://schemas.microsoft.com/office/powerpoint/2012/main"
       xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">
    <p:cSld>
        <p:spTree>
            <p:nvGrpSpPr>
                <p:cNvPr id="1" name=""/>
                <p:cNvGrpSpPr/>
                <p:nvPr/>
            </p:nvGrpSpPr>
            <p:grpSpPr>
                <a:xfrm>
                    <a:off x="0" y="0"/>
                    <a:ext cx="0" cy="0"/>
                    <a:chOff x="0" y="0"/>
                    <a:chExt cx="0" cy="0"/>
                </a:xfrm>
            </p:grpSpPr>
            <p:sp>
                <p:nvSpPr>
                    <p:cNvPr id="37" name="CustomShape 1"></p:cNvPr>
                    <p:cNvSpPr/>
                    <p:nvPr/>
                </p:nvSpPr>
                <p:spPr>
                    <a:xfrm>
                        <a:off x="504000" y="363600"/>
                        <a:ext cx="9071280" cy="671040"/>
                    </a:xfrm>
                    <a:prstGeom prst="rect">
                        <a:avLst></a:avLst>
                    </a:prstGeom>
                    <a:noFill/>
                    <a:ln>
                        <a:noFill/>
                    </a:ln>
                </p:spPr>
                <p:style>
                    <a:lnRef idx="0"/>
                    <a:fillRef idx="0"/>
                    <a:effectRef idx="0"/>
                    <a:fontRef idx="minor"/>
                </p:style>
                <p:txBody>
                    <a:bodyPr lIns="0" rIns="0" tIns="0" bIns="0" anchor="ctr">
                        <a:spAutoFit/>
                    </a:bodyPr>
                    <a:p>
                        <a:pPr algn="ctr">
                            <a:lnSpc>
                                <a:spcPct val="100000"/>
                            </a:lnSpc>
                        </a:pPr>
                        <a:r>
                            <a:rPr b="0" lang="fr-FR" sz="4400" spc="-1" strike="noStrike">
                                <a:latin typeface="Arial"/>
                            </a:rPr>
                            <a:t>[title]</a:t>
                        </a:r>
                        <a:endParaRPr b="0" lang="fr-FR" sz="4400" spc="-1" strike="noStrike">
                            <a:latin typeface="Arial"/>
                        </a:endParaRPr>
                    </a:p>
                </p:txBody>
            </p:sp>
            <p:sp>
                <p:nvSpPr>
                    <p:cNvPr id="38" name="CustomShape 2"></p:cNvPr>
                    <p:cNvSpPr/>
                    <p:nvPr/>
                </p:nvSpPr>
                <p:spPr>
                    <a:xfrm>
                        <a:off x="504000" y="2726280"/>
                        <a:ext cx="9071280" cy="488160"/>
                    </a:xfrm>
                    <a:prstGeom prst="rect">
                        <a:avLst></a:avLst>
                    </a:prstGeom>
                    <a:noFill/>
                    <a:ln>
                        <a:noFill/>
                    </a:ln>
                </p:spPr>
                <p:style>
                    <a:lnRef idx="0"/>
                    <a:fillRef idx="0"/>
                    <a:effectRef idx="0"/>
                    <a:fontRef idx="minor"/>
                </p:style>
                <p:txBody>
                    <a:bodyPr lIns="0" rIns="0" tIns="0" bIns="0" anchor="ctr">
                        <a:spAutoFit/>
                    </a:bodyPr>
                    <a:p>
                        <a:pPr algn="ctr">
                            <a:lnSpc>
                                <a:spcPct val="100000"/>
                            </a:lnSpc>
                        </a:pPr>
                        <a:r>
                            <a:rPr b="0" lang="fr-FR" sz="3200" spc="-1" strike="noStrike">
                                <a:latin typeface="Arial"/>
                            </a:rPr>
                            <a:t>[description]</a:t>
                        </a:r>
                        <a:endParaRPr b="0" lang="fr-FR" sz="3200" spc="-1" strike="noStrike">
                            <a:latin typeface="Arial"/>
                        </a:endParaRPr>
                    </a:p>
                </p:txBody>
            </p:sp>
        </p:spTree>
    </p:cSld>
    <mc:AlternateContent>
        <mc:Choice Requires="p14">
            <p:transition spd="slow" p14:dur="2000"></p:transition>
        </mc:Choice>
        <mc:Fallback>
            <p:transition spd="slow"></p:transition>
        </mc:Fallback>
    </mc:AlternateContent>
</p:sld>

Output

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">
  <p:cSld>
    <p:spTree>
      <p:nvGrpSpPr>
        <p:cNvPr id="1" name=""/>
        <p:cNvGrpSpPr/>
        <p:nvPr/>
      </p:nvGrpSpPr>
      <p:grpSpPr>
        <a:xfrm>
          <a:off x="504825" y="361950"/>
          <a:ext cx="9572625" cy="3209925"/>
          <a:chOff x="504825" y="361950"/>
          <a:chExt cx="9572625" cy="3209925"/>
        </a:xfrm>
      </p:grpSpPr>
      <p:sp>
        <p:nvSpPr>
          <p:cNvPr id="1" name=""/>
          <p:cNvSpPr txBox="1"/>
          <p:nvPr/>
        </p:nvSpPr>
        <p:spPr>
          <a:xfrm>
            <a:off x="504825" y="361950"/>
            <a:ext cx="9067800" cy="666750"/>
          </a:xfrm>
          <a:prstGeom prst="rect">
            <a:avLst/>
          </a:prstGeom>
          <a:noFill/>
        </p:spPr>
        <p:txBody>
          <a:bodyPr rtlCol="0" bIns="45720" lIns="91440" rIns="91440" tIns="45720">
            <a:spAutoFit/>
          </a:bodyPr>
          <a:lstStyle/>
          <a:p>
            <a:pPr algn="ctr" fontAlgn="base" marL="0" marR="0" indent="0" lvl="0">
              <a:lnSpc>
                <a:spcPct val="100%"/>
              </a:lnSpc>
            </a:pPr>
            <a:r>
              <a:rPr lang="en-US" sz="4400" spc="0" u="none">
                <a:solidFill>
                  <a:srgbClr val="000000">
                    <a:alpha val="100.00%"/>
                  </a:srgbClr>
                </a:solidFill>
                <a:latin typeface="Calibri"/>
              </a:rPr>
              <a:t><![CDATA[[title]]]></a:t>
            </a:r>
          </a:p>
        </p:txBody>
      </p:sp>
      <p:sp>
        <p:nvSpPr>
          <p:cNvPr id="2" name=""/>
          <p:cNvSpPr txBox="1"/>
          <p:nvPr/>
        </p:nvSpPr>
        <p:spPr>
          <a:xfrm>
            <a:off x="504825" y="2724150"/>
            <a:ext cx="9067800" cy="485775"/>
          </a:xfrm>
          <a:prstGeom prst="rect">
            <a:avLst/>
          </a:prstGeom>
          <a:noFill/>
        </p:spPr>
        <p:txBody>
          <a:bodyPr rtlCol="0" bIns="45720" lIns="91440" rIns="91440" tIns="45720">
            <a:spAutoFit/>
          </a:bodyPr>
          <a:lstStyle/>
          <a:p>
            <a:pPr algn="ctr" fontAlgn="base" marL="0" marR="0" indent="0" lvl="0">
              <a:lnSpc>
                <a:spcPct val="100%"/>
              </a:lnSpc>
            </a:pPr>
            <a:r>
              <a:rPr lang="en-US" sz="3200" spc="0" u="none">
                <a:solidFill>
                  <a:srgbClr val="000000">
                    <a:alpha val="100.00%"/>
                  </a:srgbClr>
                </a:solidFill>
                <a:latin typeface="Calibri"/>
              </a:rPr>
              <a:t><![CDATA[[description]]]></a:t>
            </a:r>
          </a:p>
        </p:txBody>
      </p:sp>
    </p:spTree>
  </p:cSld>
  <p:clrMapOvr>
    <a:masterClrMapping/>
  </p:clrMapOvr>
</p:sld>

Any idea ?

Thank you,

peterkoppenaal commented 4 years ago

Any update on this issue? I'm facing the same.

muaz234 commented 3 years ago

facing the same issue too

Graiiig commented 2 years ago

Same here

Progi1984 commented 1 month ago

@montac @Graiiig @Graiiig @peterkoppenaal Hi, Could you send me a sample file, please, for reproducing the bug ?