[Acr DC] Пакетное удаление комментариев: возможно ли?

  • Автор темы Автор темы veretragna
  • Дата начала Дата начала
А что, интересно, выдает alert(this); ?
 
Хотя, в акробате скорее всего, так не сработает, наверное надо полностью
app.alert(this, 0);
 
  • Спасибо
Реакции: Gad
чтобы к нему доступ получить, надо переоткрыть?
:) Он то его открывает, но не в GUI, думаю оттуда ноги... Вот как гаишник работающий сверхурочно, он когда тебя тормозит, корочками помашет перед глазами, ты видишь что удостоверение вроде настоящее а вот фамилию прочитать не выходит.
 
И правда странно что не работает, впечатление что Action запускает скрипт и сразу закрывает файл, не давая скрипту отработать
Вот так получилось, только Action настроить на замену файлов (без переименования, все равно скрипт заменяет):
Код:
var myDoc = app.openDoc(this.path);
for (var i = 0; i < this.numPages; i++ )
{
    this.pageNum = i
    var annots = this.getAnnots();
    for (var j = 0; j < annots.length; j++){
    if (annots[j].author == "Author") annots[j].destroy();
    }
};
myDoc.saveAs(myDoc.path);
myDoc.closeDoc();
Спасибо за информацию!
Черная магия, ей богу.
Action настроить на замену файлов - это как, убрать операцию сохранения? В любом случае (и с ней, и без нее) не работает.
Если операция "сохранить" есть в экшене, файл сохраняется, но все комментарии на месте.
Если убрать это действие, файл не сохраняется.
 
Последнее редактирование:
Action настроить на замену файлов - это как, убрать операцию сохранения?
В 9.0 выглядит так:
2020-05-28_11-01-42.png
В любом случае (и с ней, и без нее) не работает.
У меня сработало, что пишет в консоли дебагера?
 
Понял, в DC нужно просто оставить операцию сохранения. Здесь по умолчанию сохранение с перезаписью.
У меня сработало, что пишет в консоли дебагера?
Код:
ReferenceError: myDoc is not defined
9:Batch:Exec
TypeError: annots is null
5:Batch:Exec
TypeError: annots is null
5:Batch:Exec
 
Странно
А если так
JavaScript:
var myDoc = app.openDoc(this.path);

    var annots = myDoc.getAnnots();
    for (var j = 0; j < annots.length; j++){
     if (annots[j].author == "Author") annots[j].destroy();
    }

myDoc.saveAs(myDoc.path);
myDoc.closeDoc();
 
Хотя нет, пожалуй, надо с противоположного конца удалять дабы не рубить сук на которых сидишь
JavaScript:
var myDoc = app.openDoc(this.path);

    var annots = myDoc.getAnnots();
    for (var j = annots.length-1; j >=0 ; j--){
     if (annots[j].author == "Author") annots[j].destroy();
    }

myDoc.saveAs(myDoc.path);
myDoc.closeDoc();
 
Выдает запрос "Текущая операция не завершена, выйти без завершения операции?" и прекращает батч на первом же файле
 
Если убрать последнюю строку myDoc.closeDoc();, запрос больше не выдает, файлы сохраняются, но все комменты на месте, в консоли вот такое
Код:
TypeError: annots is null
4:Batch:Exec
TypeError: annots is null
4:Batch:Exec
TypeError: annots is null
4:Batch:Exec
 
Если убрать последнюю строку myDoc.closeDoc();, запрос больше не выдает, файлы сохраняются, но все комменты на месте, в консоли вот такое
Код:
TypeError: annots is null
4:Batch:Exec
TypeError: annots is null
4:Batch:Exec
TypeError: annots is null
4:Batch:Exec
Ну и отлично, верните перебор страниц, она смотрит сейчас первые и на них просто нет искомых заметок. Почему только первые - загадка, но факт. У меня просто не закрывались документы самим батчем почему то, для того и добавил
Код:
myDoc.closeDoc();
Наверное так должно быть
Код:
var myDoc = app.openDoc(this.path);
for (var i = 0; i < myDoc.numPages; i++ )
{
    myDoc.pageNum = i
    var annots = myDoc.getAnnots();
    for (var j = annots.length-1; j >=0 ; j--){
    if (annots[j].author == "Author") annots[j].destroy();
    }
};
myDoc.saveAs(myDoc.path);
 
Последнее редактирование:
Последний код не работает, все комментарии на месте
 
Последнее редактирование:
То же самое:
Код:
TypeError: annots is null
6:Batch:Exec
TypeError: annots is null
6:Batch:Exec
TypeError: annots is null
6:Batch:Exec
 
Хорошо шаманим дальше
JavaScript:
var myDoc = app.openDoc(this.path);
for (var i = 0; i < myDoc.numPages; i++ )
{
    
    var annots = myDoc.getAnnots({ nPage:i });
    for (var j = annots.length-1; j >=0 ; j--){
    if (annots[j].author == "Author") annots[j].destroy();
    }
};
myDoc.saveAs(myDoc.path);
 
То же самое
 
Ладно тогда делаем так
JavaScript:
var myDoc = app.openDoc(this.path);
for (var i = 0; i < myDoc.numPages; i++ )
{
    
    var annots = myDoc.getAnnots({ nPage:i });
    if (annots)
    {
      console.println("Page: "+i+" annots: "+annots.length);
      for (var j = annots.length-1; j >=0 ; j--){
       if (annots[j].author == "Author") annots[j].destroy();
      }
    } else
        console.println("Page: "+i+" no annots");
};
myDoc.saveAs(myDoc.path);