2012-04-26 15 views
5

¿Es posible agregar notas a una diapositiva de PowerPoint creada programáticamente utilizando Apache POI?Agregar notas a una diapositiva de Powerpoint con Apache POI

Esto es lo que tengo hasta ahora

Slide slide = ppt.createSlide(); 
org.apache.poi.hslf.record.Notes notesRecord = new ???; // <--- No Public constructor 
org.apache.poi.hslf.model.Notes noteModel = new org.apache.poi.hslf.model.Notes(notesRecord); // <--- Only one constructor which takes a org.apache.poi.hslf.record.Notes 
// hopefully make some notes 
// add the notes to the slide 
slide.setNotes(noteModel); 

Como se puede ver, no parece ser una manera de crear los objetos necesarios para agregar notas al objeto de diapositiva.

Calling

Notes notesSheet = slide.getNotesSheet(); 

... vuelve nula.

¿Hay algún otro medio para crear el objeto de notas necesario, quizás utilizando una clase de fábrica que no he encontrado?

O, ¿hay alguna otra forma de agregar una nota a una diapositiva que no implique trabajar con las clases Note?

Respuesta

7

La pregunta es bastante antigua, pero espero que esta respuesta ayude a alguien. El uso de Apache POI 3.12 el siguiente código debe añadir un poco de texto como notas a una diapositiva:

// create a new empty slide show 
    XMLSlideShow ppt = new XMLSlideShow(); 

    // add first slide 
    XSLFSlide slide = ppt.createSlide(); 

    // get or create notes 
    XSLFNotes note = ppt.getNotesSlide(slide); 

    // insert text 
    for (XSLFTextShape shape : note.getPlaceholders()) { 
     if (shape.getTextType() == Placeholder.BODY) { 
      shape.setText("String"); 
      break; 
     } 
    } 

    // save 
    [...] 
+0

Eso funciona. ¡Gracias! – GBP

0

La última versión no admite la adición de notas de PowerPoint.

+1

Es probable que no sería demasiado duro para añadir la característica de que, si alguien estaba interesado en ser voluntario para hacer el trabajo! Todo el soporte de grabación está presente, solo necesita cableado en el orden correcto en el código de modelo de usuario – Gagravarr

+0

No tengo mucho tiempo, pero tal vez una recompensa sería un buen incentivo. – eabraham

+0

esta respuesta no está actualizada –

Cuestiones relacionadas