Description
The makeXmlContTypes() function generates one slideMaster Override entry per slide in the [Content_Types].xml file (e.g., slideMaster1.xml, slideMaster2.xml, etc.), but PptxGenJS only produces a single ppt/slideMasters/slideMaster1.xml file. The phantom references to non-existent slideMaster2.xml, slideMaster3.xml, etc. trigger the PowerPoint repair dialog.
Root Cause
In gen-xml.ts (compiled: pptxgen.cjs.js, makeXmlContTypes()):
slides.forEach((slide, idx) => {
// This creates slideMaster1, slideMaster2, slideMaster3... for EACH slide
strXml += '<Override PartName="/ppt/slideMasters/slideMaster' + (idx + 1) + '.xml" ...>';
strXml += '<Override PartName="/ppt/slides/slide' + (idx + 1) + '.xml" ...>';
});
For a 10-slide presentation, this generates references to slideMaster1.xml through slideMaster10.xml, but only slideMaster1.xml actually exists in the archive.
Steps to Reproduce
- Generate a .pptx with 2+ slides
- Inspect
[Content_Types].xml in the zip
- Observe
slideMaster2.xml, slideMaster3.xml, etc. references
- Verify only
ppt/slideMasters/slideMaster1.xml exists in the archive
- Open in Microsoft PowerPoint → repair dialog (among other triggers)
Expected Behavior
Only one slideMaster1.xml Override entry should be generated, outside the slide loop:
strXml += '<Override PartName="/ppt/slideMasters/slideMaster1.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml"/>';
slides.forEach((slide, idx) => {
strXml += '<Override PartName="/ppt/slides/slide' + (idx + 1) + '.xml" ...>';
// ...
});
Environment
- PptxGenJS: 4.0.1
- PowerPoint for Mac (Microsoft 365)
- Node.js 22.x
Description
The
makeXmlContTypes()function generates oneslideMasterOverride entry per slide in the[Content_Types].xmlfile (e.g.,slideMaster1.xml,slideMaster2.xml, etc.), but PptxGenJS only produces a singleppt/slideMasters/slideMaster1.xmlfile. The phantom references to non-existentslideMaster2.xml,slideMaster3.xml, etc. trigger the PowerPoint repair dialog.Root Cause
In
gen-xml.ts(compiled:pptxgen.cjs.js,makeXmlContTypes()):For a 10-slide presentation, this generates references to
slideMaster1.xmlthroughslideMaster10.xml, but onlyslideMaster1.xmlactually exists in the archive.Steps to Reproduce
[Content_Types].xmlin the zipslideMaster2.xml,slideMaster3.xml, etc. referencesppt/slideMasters/slideMaster1.xmlexists in the archiveExpected Behavior
Only one
slideMaster1.xmlOverride entry should be generated, outside the slide loop:Environment