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

veretragna

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

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

Oleg Butrin

20 лет на форуме
Сообщения
1 989
Реакции
1 213
Неоригинально, но действенно - скриптом.
 

Oleg Butrin

20 лет на форуме
Сообщения
1 989
Реакции
1 213


Не по теме:
Скриптинг в Акробате - это интересный и очень увлекательный процесс, поэтому знающие люди старательно избегают его :sarcasm:
 

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
199
Пока что изучаю Acrobat JS scripting reference, нашел app.openDoc, doc.getAnnots и annot.destroy.
Кажется, примерный путь уже понятен.
Спасибо за ресурсы! Посмотрю, как должно быть.

Не по теме:
Был бы это индизайн! Но если грузить комментарии туда, получается слишком долго.
 

imma

15 лет на форуме
Сообщения
3 089
Реакции
2 185
Подскажите, пожалуйста, куда можно копнуть.
Можно экспортировать все комменты в файл (xfdf) и "поковырять" его. Затем залить его назад. А потом применить фильтр по Автору например.
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Глупый пингвин робко прячет - умный смело достает!
Ленивые избегают, а сложного ничего нет ибо акробатовский скриптинг именно под работу с комментариями, в основном, и заточен
 

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
199
Кажется, кое-что вырисовывается.

Создал в 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

Почему-то срабатывает только с тем документом, который сейчас открыт (в нем комментарии есть). А если запускать из пустого акробата, где ни один документ не открыт, вообще не работает. В чем может быть подвох?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Потому что надо сперва открыть документ вы ж сами нашли openDoc
 

Oleg Butrin

20 лет на форуме
Сообщения
1 989
Реакции
1 213
А если запускать из пустого акробата, где ни один документ не открыт, вообще не работает. В чем может быть подвох?
Потому, что this указывает на активный документ.
Чтобы все нужные документы обрабатывать, надо смотреть в сторону Actions. Они же Действия.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
this - это какбэ открытый активный документ в данном контексте
 

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
199

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
199
Я минут 20 искал и читал примеры скриптов для Action Wizard, все при работе с "текущим документом" в пакетном действии ссылаются на this.
Почему не работает?
 

Gad

Сообщения
2 971
Реакции
1 405
Если не прав пусть поправят, но по моему Вам нужно то что в Acrobat 9.0 называется Batch Processing (не знаю то же это самое что и Action Wizard ). Там можно сделать действие которое по очереди откроет все pdf из указанной папки, выполнит скрипт и сохранит в указанную папку (например).
 

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
199
Если не прав пусть поправят, но по моему Вам нужно то что в Acrobat 9.0 называется Batch Processing (не знаю то же это самое что и Action Wizard ). Там можно сделать действие которое по очереди откроет все pdf из указанной папки, выполнит скрипт и сохранит в указанную папку (например).
Это он и есть. В посте №8 и скрипт показан, и скриншот с настройками
 

Gad

Сообщения
2 971
Реакции
1 405
И правда странно что не работает, впечатление что 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

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835

Gad

Сообщения
2 971
Реакции
1 405
Вот это реально работает?
Угу... там все странно как то, this.path срабатывает, this.getAnnots() выдает null хотя при просто открытом документе отрабатывает нормально. Пришлось перебор страниц сделать, хотя опять таки при открытом документе (когда не экшн открывает все файлы по порядку, а сам открываешь файл, потом запускаешь скрипт) this.getAnnots() получает доступ к заметкам со всех страниц без перебора.