Crear presentación de PowerPoint 2007 de una plantilla
-
22-08-2019 - |
Pregunta
Necesito crear una presentación de PowerPoint 2007 a partir de una plantilla con Abrir formato XML SDK 2.0. La plantilla debe ser proporcionada por el cliente y se utiliza para un estilo de diseño individual (fuente, color o imagen de fondo, ...). Necesita contener dos diapositivas predefinidas:
- Tobogán de texto
- Diapositiva
La aplicación ahora debe crear una copia del archivo de plantilla, crear múltiples copias de las diapositivas de texto y imagen y reemplazar a los titulares de contenido con algún contenido.
Ya encontré algunos fragmentos de código de Microsoft Para editar el título de una diapositiva, eliminarlos o reemplazar una imagen en una diapositiva. Pero no descubrí cómo puedo crear una copia de una diapositiva existente. Tal vez alguien pueda ayudarme con esto.
Solución
He estado buscando una respuesta similar y he encontrado algunos recursos para compartir:
http://msdn.microsoft.com/en-us/library/cc850834(Office.14).aspx
o más muestras
http://msdn.microsoft.com/en-us/library/cc850828(Office.14).aspx
o este sitio web
http://www.openxmldeveloper.com
También hay esto Libro gratuito que documenta el estándar OpenXML Lo cual fue algo útil.
Otros consejos
Este es un ejemplo de lo que estoy buscando, pero si no, hágamelo saber: http://openxmldeveloper.org/articles/7429.aspx
Para c#
File.Copy(SourceFile,ExportedFile);
Básicamente mantiene el archivo original.
Ahora abre el archivo exportado
PowerPoint.Application ppApp = new PowerPoint.Application();
PowerPoint.Presentation presentation;
presentation = ppApp.Presentations.Open(ExportedFile, MsoTriState.msoFalse, MsoTriState.msoTrue, MsoTriState.msoTrue);
Ahora itera todas las diapositivas/formas
foreach (PowerPoint.Slide slide in presentation.Slides)
{
slide.Select();
foreach (PowerPoint.Shape shape in slide.Shapes)
{
if (shape.Type.ToString().Equals("<any type of shape>"))
{
if (shape.TextFrame.TextRange.Text.Equals("<contains a name"))
{
shape.TextFrame.TextRange.Text = <new value>;
shape.Delete(); // or delete
shape.AddPicture(<your new picture>, MsoTriState.msoTrue, MsoTriState.msoTrue, left, top, width, height);
}
}
}
}
Espero que esto pueda aclarar su solicitud.