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

  • Автор темы Автор темы veretragna
  • Дата начала Дата начала

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
202
Здравствуйте.
Есть такая проблема: пришли комментарии к работе, всего около 90 файлов PDF, в каждом по 250 комментариев. Из этих 250 комментариев примерно 244 бесполезных (у них указан автор, допустим, Автор_1, постоянен для всех документов) и 6 полезных (автор меняется).

Перед внесением правок было бы неплохо как-то пакетно удалить бесполезные комментарии из всех файлов и сохранить изменения.
Важно - если есть бесполезный комментарий, но на него дан ответ в виде полезного, то удалять его не нужно.
Подскажите, пожалуйста, куда можно копнуть.
 
Неоригинально, но действенно - скриптом.
 


Не по теме:
Скриптинг в Акробате - это интересный и очень увлекательный процесс, поэтому знающие люди старательно избегают его :sarcasm:
 
Пока что изучаю Acrobat JS scripting reference, нашел app.openDoc, doc.getAnnots и annot.destroy.
Кажется, примерный путь уже понятен.
Спасибо за ресурсы! Посмотрю, как должно быть.

Не по теме:
Был бы это индизайн! Но если грузить комментарии туда, получается слишком долго.
 
Подскажите, пожалуйста, куда можно копнуть.
Можно экспортировать все комменты в файл (xfdf) и "поковырять" его. Затем залить его назад. А потом применить фильтр по Автору например.
 
Последнее редактирование:
Глупый пингвин робко прячет - умный смело достает!
Ленивые избегают, а сложного ничего нет ибо акробатовский скриптинг именно под работу с комментариями, в основном, и заточен
 
Кажется, кое-что вырисовывается.

Создал в Action wizard новое действие с таким кодом:
JavaScript:
var annots = this.getAnnots();
for (j = 0; j < annots.length; j++) {
    if (annots[j].author == "Author") {
        annots[j].destroy();
    }
}
2020-05-27_204531.png

Почему-то срабатывает только с тем документом, который сейчас открыт (в нем комментарии есть). А если запускать из пустого акробата, где ни один документ не открыт, вообще не работает. В чем может быть подвох?
 
Потому что надо сперва открыть документ вы ж сами нашли openDoc
 
А если запускать из пустого акробата, где ни один документ не открыт, вообще не работает. В чем может быть подвох?
Потому, что this указывает на активный документ.
Чтобы все нужные документы обрабатывать, надо смотреть в сторону Actions. Они же Действия.
 
this - это какбэ открытый активный документ в данном контексте
 
Я минут 20 искал и читал примеры скриптов для Action Wizard, все при работе с "текущим документом" в пакетном действии ссылаются на this.
Почему не работает?
 
Если не прав пусть поправят, но по моему Вам нужно то что в Acrobat 9.0 называется Batch Processing (не знаю то же это самое что и Action Wizard ). Там можно сделать действие которое по очереди откроет все pdf из указанной папки, выполнит скрипт и сохранит в указанную папку (например).
 
Если не прав пусть поправят, но по моему Вам нужно то что в Acrobat 9.0 называется Batch Processing (не знаю то же это самое что и Action Wizard ). Там можно сделать действие которое по очереди откроет все pdf из указанной папки, выполнит скрипт и сохранит в указанную папку (например).
Это он и есть. В посте №8 и скрипт показан, и скриншот с настройками
 
И правда странно что не работает, впечатление что 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();
 
Последнее редактирование:
  • Спасибо
Реакции: veretragna
Вот это реально работает?
Угу... там все странно как то, this.path срабатывает, this.getAnnots() выдает null хотя при просто открытом документе отрабатывает нормально. Пришлось перебор страниц сделать, хотя опять таки при открытом документе (когда не экшн открывает все файлы по порядку, а сам открываешь файл, потом запускаешь скрипт) this.getAnnots() получает доступ к заметкам со всех страниц без перебора.