Page 1 of 1

Slide Notes

PostPosted: Sun Oct 23, 2011 9:39 am
by jchenry
Jason,

Any thoughts on how one might go about adding slide notes to a deck? I have been looking at it for a few days, and cant seem to crack it.

Thanks.

Re: Slide Notes

PostPosted: Mon Oct 24, 2011 9:58 am
by jason
I created a pptx with slide notes, and ran it through PartsList.

I ended up with (irrelevant parts removed):

Code: Select all
Part /_rels/.rels [org.docx4j.openpackaging.parts.relationships.RelationshipsPart]  containing JaxbElement:org.docx4j.relationships.Relationships
    Part /ppt/presentation.xml [org.docx4j.openpackaging.parts.PresentationML.MainPresentationPart] http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument containing JaxbElement:org.pptx4j.pml.Presentation

        Part /ppt/notesMasters/notesMaster1.xml [org.docx4j.openpackaging.parts.PresentationML.NotesMasterPart] http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster containing JaxbElement:org.pptx4j.pml.NotesMaster [additional reference]

        Part /ppt/slides/slide1.xml [org.docx4j.openpackaging.parts.PresentationML.SlidePart] http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide containing JaxbElement:org.pptx4j.pml.Sld
            Part /ppt/notesSlides/notesSlide1.xml [org.docx4j.openpackaging.parts.PresentationML.NotesSlidePart] http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide containing JaxbElement:org.pptx4j.pml.Notes
                Part /ppt/slides/slide1.xml [org.docx4j.openpackaging.parts.PresentationML.SlidePart] http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide containing JaxbElement:org.pptx4j.pml.Sld [additional reference]
                Part /ppt/notesMasters/notesMaster1.xml [org.docx4j.openpackaging.parts.PresentationML.NotesMasterPart] http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster containing JaxbElement:org.pptx4j.pml.NotesMaster [additional reference]

        Part /ppt/slides/slide2.xml [org.docx4j.openpackaging.parts.PresentationML.SlidePart] http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide containing JaxbElement:org.pptx4j.pml.Sld
            Part /ppt/notesSlides/notesSlide2.xml [org.docx4j.openpackaging.parts.PresentationML.NotesSlidePart] http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide containing JaxbElement:org.pptx4j.pml.Notes
                Part /ppt/slides/slide2.xml [org.docx4j.openpackaging.parts.PresentationML.SlidePart] http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide containing JaxbElement:org.pptx4j.pml.Sld [additional reference]
                Part /ppt/notesMasters/notesMaster1.xml [org.docx4j.openpackaging.parts.PresentationML.NotesMasterPart] http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster containing JaxbElement:org.pptx4j.pml.NotesMaster
                    Part /ppt/theme/theme2.xml [org.docx4j.openpackaging.parts.ThemePart] http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme containing JaxbElement:org.docx4j.dml.Theme



You can see:
1. you need a reference from the MainPresentationPart to the NotesMasterPart
2. each SlidePart refers to its own NotesSlidePart (even if you didn't type any notes for that slide). These refer back to the SlidePart, and also to the NotesMasterPart.

So you'll need to create these Parts, populate them, then add them at appropriate places to create the above structure using AddTargetPart

A notes slide is just a shape tree:

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<p:notes 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="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="2" name="Slide Image Placeholder 1"/>
          <p:cNvSpPr>
            <a:spLocks noGrp="1" noRot="1" noChangeAspect="1"/>
          </p:cNvSpPr>
          <p:nvPr>
            <p:ph type="sldImg"/>
          </p:nvPr>
        </p:nvSpPr>
        <p:spPr/>
      </p:sp>
      <p:sp>
        <p:nvSpPr>
          <p:cNvPr id="3" name="Notes Placeholder 2"/>
          <p:cNvSpPr>
            <a:spLocks noGrp="1"/>
          </p:cNvSpPr>
          <p:nvPr>
            <p:ph type="body" idx="1"/>
          </p:nvPr>
        </p:nvSpPr>
        <p:spPr/>
        <p:txBody>
          <a:bodyPr>
            <a:normAutofit/>
          </a:bodyPr>
          <a:lstStyle/>
          <a:p>
            <a:r>
              <a:rPr lang="en-AU" dirty="0" smtClean="0"/>
              <a:t>Here are my notes.</a:t>
            </a:r>
          </a:p>
          <a:p>
            <a:pPr algn="ctr">
              <a:spcBef>
                <a:spcPts val="600"/>
              </a:spcBef>
            </a:pPr>
            <a:r>
              <a:rPr lang="en-AU" dirty="0" smtClean="0"/>
              <a:t>Line 2</a:t>
            </a:r>
          </a:p>
          <a:p>
            <a:r>
              <a:rPr lang="en-AU" dirty="0" smtClean="0"/>
              <a:t>You can do </a:t>
            </a:r>
            <a:r>
              <a:rPr lang="en-AU" b="1" dirty="0" smtClean="0"/>
              <a:t>bold.</a:t>
            </a:r>
            <a:endParaRPr lang="en-AU" b="1" dirty="0"/>
          </a:p>
        </p:txBody>
      </p:sp>
      <p:sp>
        <p:nvSpPr>
          <p:cNvPr id="4" name="Slide Number Placeholder 3"/>
          <p:cNvSpPr>
            <a:spLocks noGrp="1"/>
          </p:cNvSpPr>
          <p:nvPr>
            <p:ph type="sldNum" sz="quarter" idx="10"/>
          </p:nvPr>
        </p:nvSpPr>
        <p:spPr/>
        <p:txBody>
          <a:bodyPr/>
          <a:lstStyle/>
          <a:p>
            <a:fld id="{2C9E680F-9556-4432-A73C-3BDC21FB7A10}" type="slidenum">
              <a:rPr lang="en-AU" smtClean="0"/>
              <a:t>1</a:t>
            </a:fld>
            <a:endParaRPr lang="en-AU"/>
          </a:p>
        </p:txBody>
      </p:sp>
    </p:spTree>
  </p:cSld>
  <p:clrMapOvr>
    <a:masterClrMapping/>
  </p:clrMapOvr>
</p:notes>
 
Parsed in 0.008 seconds, using GeSHi 1.0.8.4


I'll leave it to you to (1) look inside the notes master slide, and (2) determine what is optional or not (the notes master? or empty slide notes on a slide which doesn't need any?).

Hope this helps .. Jason