Удалить внедренный объект OLE из файла ms-pptJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Удалить внедренный объект OLE из файла ms-ppt

Сообщение Anonymous »

Я хочу удалить внедренный объект 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 для добавления встроенного объекта, но нет прямой функции для его удаления. Как я могу это сделать?
PS: я могу установить данные объекта OLE, но открываю новый ppt с помощью MS Office, он все равно запрашивает «включить макросодержимое», поэтому мне нужно полностью удалить его < /п>

Подробнее здесь: https://stackoverflow.com/questions/792 ... s-ppt-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»