I have observed your requirement and like to share that you right in your point that inherited layout shapes are not editable in normal slides but only editable in their respective layout slide. This also makes sense as well that layout slide is shared between multiple slides.
The available solution is to generate a slide with shapes similar to those available in layout slide. Then you will be able to change them as they will belong to local slide. Below please find the sample code that you may use as a satrarter and implement on your end to serve your needs. I have only generated shapes by copying the positions and size. You may also need set some other properties like fill type, fill colors from source shape to newly generated target shape. I hope this will give you a basis structure to get thing started and you may do the rest on your end for this.
public static void CopyPlaceHolder(String file, string path)
// PresentationEx presentation = new PresentationEx(“placeholdersTemplate.pptx”);
PresentationEx presentation = new PresentationEx(path+file);
presentation.UpdateDateTimeFields = true;
foreach (LayoutSlideEx layout in presentation.Masters[0].LayoutSlides)
presentation.Slides.AddEmptySlide(layout);
SlideEx slide = presentation.Slides[presentation.Slides.Count - 1];
foreach (ShapeEx shape in slide.LayoutSlide.Shapes)
if (shape.Placeholder != null)
switch (shape.Placeholder.Type)
slide.Shapes.AddAutoShape(
ShapeTypeEx.RoundCornerRectangle, float.NaN, float.NaN, float.NaN, float.NaN);
case PlaceholderTypeEx.SlideNumber:
slide.Shapes.AddAutoShape(
ShapeTypeEx.RoundCornerRectangle, float.NaN, float.NaN, float.NaN, float.NaN);
AutoShapeEx ashape = (AutoShapeEx)slide.Shapes[slide.Shapes.Count - 1];
ashape.AddTextFrame(“text”);
ashape.TextFrame.Paragraphs[0].Portions[0].AddField(FieldTypeEx.SlideNumber);
case PlaceholderTypeEx.DateAndTime:
slide.Shapes.AddAutoShape(
ShapeTypeEx.RoundCornerRectangle, float.NaN, float.NaN, float.NaN, float.NaN);
AutoShapeEx ashape = (AutoShapeEx)slide.Shapes[slide.Shapes.Count - 1];
ashape.AddTextFrame(“text”);
ashape.TextFrame.Paragraphs[0].Portions[0].AddField(FieldTypeEx.DateTime);
case PlaceholderTypeEx.Object:
case PlaceholderTypeEx.Table:
float.NaN, float.NaN, new double[] { 30, 30, 30 }, new double[] { 20, 20 });
case PlaceholderTypeEx.Picture:
slide.Shapes.AddPictureFrame(
ShapeTypeEx.Ellipse, float.NaN, float.NaN, float.NaN, float.NaN, null);
case PlaceholderTypeEx.Chart:
Aspose.Slides.Pptx.Charts.ChartTypeEx.StackedLine,
//case PlaceholderTypeEx.Diagram:
// // TODO: add diagram insertion here
case PlaceholderTypeEx.Media:
slide.Shapes.AddVideoFrame(float.NaN, float.NaN, float.NaN, float.NaN, @“video.avi”);
ShapeEx newShape = slide.Shapes[slide.Shapes.Count - 1];
newShape.AddPlaceholder(shape.Placeholder);
// presentation.Save(“placeholders.pptx”, SaveFormat.Pptx);
presentation.Save(path+file+“Copied.pptx”, SaveFormat.Pptx);