Я хочу удалить внедренный объект OLE из формата файла PPT (2003, HSLF). Согласно документации ppt, я могу перечислять старые объекты из фигур и использовать RemoveShape из HSLF.
Код: Выделить всё
List slides = ppt.getSlides();
for (HSLFSlide sl : slides) {
for (HSLFShape shape : slide.getShapes()) {
if (shape instanceof HSLFObjectShape) {
HSLFObjectShape ole = (HSLFObjectShape) shape;
// remove the shape
boolean ok = slide.removeShape(shape);
if (ok) {
// the shape was removed. Do something.
}
}
}
}
Код: Выделить всё
HSLFObjectData[] ole = ppt.getEmbeddedObjects() // not null
Но это работает не для всех файлов. Когда я перечисляю формы моего файла ppt (вредоносный образец), в нем нет HSLFObjectShape. Но когда я перечисляю внедренные объекты, я могу их найти, но не могу удалить. Я так понимаю в PPT есть записи и нужно их аккуратно удалить. Насколько я понимаю, существует функция
addEmbed для добавления встроенного объекта, но нет прямой функции для его удаления. Как мне это сделать?
Подробнее здесь:
https://stackoverflow.com/questions/792 ... s-ppt-file