-
Notifications
You must be signed in to change notification settings - Fork 812
Open
Description
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].xmlin the zip - Observe
slideMaster2.xml,slideMaster3.xml, etc. references - Verify only
ppt/slideMasters/slideMaster1.xmlexists 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
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels