08, Adobe скриптове

Скриптове за програми на Adobe и автоматизация на оформлението

Think.JS #08

  • За начинаещи: Търсене на текст. Главна информация
  • Учебни материали: Операции с файлове и папки
  • Полеви тестове: Книгата е основата на знанието
  • Полезен скрипт: Отидете на страницата на книгата

Съдържание

За начинаещи ▲

Търсене на текст. Главна информация

Всички текстови обекти в InDesign имат метод за намиране и замяна на текст. Този метод е универсален - работи еднакво при търсене на текст в статия и в отделен абзац и е доста мощен, въпреки че не може да се сравни с търсенето с регулярни изрази. Но много доста сложни текстови манипулации могат да бъдат направени с правилното използване на родното търсене.

Има само един метод search() за търсене и замяна. В зависимост от подадените параметри InDesign или просто ще намери текста, който търсите, или ще го замени с посочения.

textReplace.jsx
Скриптът демонстрира метода за търсене и замяна на текст

Параметрите на метода трябва да вървят в строго определен ред. Първо се предава текстова променлива, която дефинира търсения текст. Вторият параметър е булева променлива, която определя дали търсенето ще бъде чувствително към главни и малки букви(вярно - да, невярно - не). Третият параметър определя дали ще се търси цялата дума, а не произволен текст(true - да, false - не). Четвъртият параметър е текстова променлива, която определя какъв текст ще бъде заменен от намерения. Само първият параметър е задължителен, останалите могат да бъдат пропуснати, но не се препоръчва да правите това, защото ако редът на параметрите е неправилен, може да възникне грешка при изпълнение на скрипта.

Методът search() връща масив от текстови обекти. По правило при търсене на конкретен текст това е масив от обекти от тип текст, но при определени условия може да бъде и масив от обекти от тип дума(ако е активирано търсене по цяла дума)или други текстови обекти.

searchResult.jsx
Скриптът показва резултата от търсенето в текста.

Фактът, че в резултат на търсенето се връщат текстови обекти, е много удобен. Например можете да намерите параграфа, който съдържа оригиналния текст, и да го обработите. Освен това можете да извършите друго търсене за всеки намерен елемент, но със замяна.

За да подобри възможностите за търсене и замяна, InDesign въведе два специални обекта: findPreferences и changePreferences. Тези обекти са свойства на обекта на приложението и дефинират съответно настройките за търсене и замяна. Тези настройки се съхраняват в InDesign между изпълняванията на скриптове, така че е добра идея да ги нулирате преди търсене, за да не използвате случайно настройки, направени от друг скрипт или потребител. ПрозорецътНамиране/Промянапоказва настройките за намиране и замяна, независимо дали настройките са направени ръчно от потребителя или от скрипт.

changeOptions.jsx
Скриптът демонстрира използването на changeOptions

След като изпълните този скрипт, можете да видите направените от него настройки в прозореца Намиране/Промяна. За да не оставяте „опашки“, препоръчително е да нулирате настройките не само преди, но и след търсенето.

clearChange.jsx
Скриптът демонстрира нулиране на стойностите на findPreferences и changePreferences след търсене
параграфSplit.jsx
Скриптът променя разделянията на абзаци на интервали

Учебни материали ▲

Операции с файлове и папки

createDeleteFolder.jsx
Скриптът създава временна папка и я изтрива

Няма специална функция за създаване на файл. Ако файлът не съществува, тогава при използване на метода open() с клавиша“w”(отворен файл за запис)той ще бъде създаден. Ако файлът е създаден без грешки, методът ще върне true, в противен случай ще върне false.За затваряне на файла се използва методът close(), който връща true, ако файлът е затворен успешно(ако файлът не е отворен от друг процес)или false в противен случай. За да премахнете файл, използвайте метода remove(), който е идентичен на съответния метод Folder.

createDeleteFile.jsx
Скриптът създава и изтрива файл

Методите write() и writeln() се използват за запис на текст във файл. Те се различават по това, че вторият автоматично добавя символ за край на ред(Line Feed - може да е различен в различните операционни системи)към текста, подаден като параметър. И двата метода връщат true при успех и false в противен случай.

writeText.jsx
Скриптът демонстрира способността за писане на текст във файл

Методът execute() изпълнява файла. Ако файлът е свързан с приложение в системата, той ще отвори(или ще изпълни, ако например пишете cmd файл в Windows). Традиционно методът връща true при успех и false при неуспех.

Четенето на файл се извършва с помощта на методите read() и readln().

readFile.jsx
Скриптът демонстрира метода за четене на файла

Методът readln() се използва за четене на файл ред по ред. За да прочетете целия файл, се използва цикъл за проверка на свойството File.eof(край на файла). След прочитане текущата позиция се измествадо началото на следващия ред. Ако има знак за край на файла в позицията за четене, тогава свойството File.eof ще бъде вярно.

readlnFile.jsx
Скриптът демонстрира метода за четене на файла

Следващият път ще направим практическа работа с файлове - ще напишем транскодер на текстови файлове и функция за запазване на настройките на диалоговия прозорец в ini файл.

Полеви изпитания ▲

Книгата е основата на знанието

Подобно на документите, книгите могат да бъдат създадени от скрипт. Задължителният параметър на метода books.add() е името на файла на книгата(при създаване на документ не се предава името на файла на документа).

createBook.jsx
Сценарият демонстрира метода за създаване на книга

Добавянето на документи към книга се извършва чрез метода book.bookContents.add().

addAllDocToBook.jsx
Скриптът създава книга и добавя всички отворени документи към нея

Автоматичното страниране(myBook.automaticPagination)е деактивирано в този случай, за да се предотврати автоматичното преномериране в отворени документи.

Документите в една книга могат да се местят един спрямо друг с помощта на метода move(). Когато автоматичното страниране е активирано, номерирането се предефинира.

Един от обектите bookContents в книгата е източникът на "референтните" стилове(параграф, знак, обекти и т.н.). При синхронизиране на книга с метода synchronize() всички документи импортират стиловете на референтния, който е дефиниран в свойството book.styleSourceDocument.

synchronizeBook.jsx
Скриптът инсталира основния документ и синхронизира работната книга
synchronizeBookWOSwatches.jsx
Скриптът задава референтния документ и синхронизира работната книга, без да синхронизира мостри

Списъкът с налични опции за синхронизиране не е посочен в документацията за скриптове, но е лесно да се намери с цикъл.

Можете да запишете книгата с помощта на метода save(), като подадете новото име на файла на книгатакато незадължителен параметър (ако параметърът не е посочен, книгата се записва във файла, предаден по време на създаването). След като промените книгата с помощта на скрипта, е желателно да я запазите. Книгата се затваря с помощта на метода close(), който има два незадължителни параметъра:savingиsavingIn. Параметърът за запазване определя поведението при затваряне: стойността SaveOptions.no означава, че книгата ще бъде затворена без запис, SaveOptions.yes - със запис, при SaveOptions.ask ще се покаже диалогов прозорец с въпрос за запазване на книгата. Параметърът savingIn указва новото име на файла на книгата при записване.

Някои практически методи за работа с книги са дадени в днешния полезен скрипт.

Полезен скрипт ▲

Отидете на страницата на книгата

InDesign няма стандартна функция за прескачане на конкретна страница от книга. Когато редактирате документ, това причинява определени неудобства, тъй като трябва да отворите панела на книгата, да превъртите документите, да определите кой документ съдържа желаната страница, да я отворите и едва след това да отидете на страницата, която търсите. За да се намали загубата на време, беше написан специален сценарий.

Скриптът gotoBookPage.jsx ви позволява да изберете желаната книга, ако повече от една е отворена в InDesign и да зададете желаната страница. В този случай е възможно да затворите и запазите всички отворени документи.