[ID CC-CC2021] Zoom в нужное место, с нужным масштабом. Реально?

Vadim_PDF

Топикстартер
15 лет на форуме
Сообщения
1 648
Реакции
237
Возможно ли средствами js (при активной Palette) - переместиться в произвольный участок документа (например по координатам) и показать с масштабом (например 200% ) нужный участок.

Пример - есть скрипт который перебирает что-то (например Find | Change) и хочется переместиться к нужному участку, что бы показать найденное и пользователь принял решение - заменить или пропустить.

Пару лет назад рыл.. вроде можно перейти к странице, но как сдвинуть "камеру" и приблизить участок не нашёл.
 

Skvoznyak

15 лет на форуме
Сообщения
5 478
Реакции
2 158
поэкспериментируйте с этим

LayoutWindow.selectionKeyObject
Data Type: PageItem
Adobe InDesign CC 2019 (14.0) Object Model
The key object of the selection. Can also accept: NothingEnum enumerator.

LayoutWindow.zoom (given: ZoomOptions )
Adobe InDesign CC 2019 (14.0) Object Model
Magnifies or reduces the window to the specified display size.
given: Data Type: ZoomOptions
The display size.


LayoutWindow.zoomPercentage
Data Type: number
Adobe InDesign CC 2019 (14.0) Object Model
The size (as a percentage) to which to enlarge or reduce the view of the document. (Range: 5 to 4000)
 
  • Спасибо
Реакции: Vadim_PDF

Oleg Butrin

15 лет на форуме
Сообщения
1 968
Реакции
1 202
JavaScript:
#target indesign;

function clearFindChangeTextPreferences () {
    app.findTextPreferences = NothingEnum.NOTHING;
    app.changeTextPreferences = NothingEnum.NOTHING;
}

function main () {
    if (app.documents.length == 0) {
        return false;
    }
    var doc = app.activeDocument;
    clearFindChangeTextPreferences();
    app.findTextPreferences.findWhat = 'u';
    var texts = doc.findText(true);
    clearFindChangeTextPreferences();
    if (texts.length) {
        app.activeWindow.zoomPercentage = 200;
        for (var i = 0; i < texts.length; i++) {
            texts[i].showText();
            var res = confirm('Change this text?', false);
            if (res) {
                texts[i].contents = 'U';
            } else {
                break;
            }
        }
    }
    return true;
}

main();
 
  • Спасибо
Реакции: Vadim_PDF

Vadim_PDF

Топикстартер
15 лет на форуме
Сообщения
1 648
Реакции
237
Все прекрасно работает! Не просто дали направление - а ещё и разжевали что и как, и в рот положили. forum.rudtp - по прежнему торт :)
 

Skvoznyak

15 лет на форуме
Сообщения
5 478
Реакции
2 158
надо заметить, что все данные действия и родное окно find/change прекрасно производит
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
32 307
Реакции
10 590
Логичнее вообще return true а в конце таки return false
 

Skvoznyak

15 лет на форуме
Сообщения
5 478
Реакции
2 158
это вообще пофиг. а вот прерывать весь поиск из-за одного skip странно
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
32 307
Реакции
10 590
Тогда в этом случае логичнее убрать всю ветку else вообще
 

DrEgor

Участник
Сообщения
706
Реакции
66
Возможно ли средствами js (при активной Palette) - переместиться в произвольный участок документа (например по координатам) и показать с масштабом (например 200% ) нужный участок.

Пример - есть скрипт который перебирает что-то (например Find | Change) и хочется переместиться к нужному участку, что бы показать найденное и пользователь принял решение - заменить или пропустить.

Пару лет назад рыл.. вроде можно перейти к странице, но как сдвинуть "камеру" и приблизить участок не нашёл.
Ctrl+=
работает и в обычном поиске/замене :)
 

Vadim_PDF

Топикстартер
15 лет на форуме
Сообщения
1 648
Реакции
237
Ctrl + = - это хорошо, но в моем скрипте - не совсем Find|Change - там идет поиск по документу, но только средствами скрипта и с другими совсем условиями (условно найти "а" стиля "aStyle" который идет после стиля "b-Style" и находиться в HyperlinksSource "xxx"). Короче- не заморачивайтесь :)
 

Eugenyus

Модератор
12 лет на форуме
Сообщения
1 960
Реакции
3 588
Если перед началом работы запоминать в переменную текущий масштаб, а при переходе выставлять масштаб из неё, то
а) не будет бить по глазам неконтролируемо меняющийся zoom;
б) пользователь получит власть выбирать оптимальный для себя масштаб и использовать его на протяжении всей работы со скриптом.
JavaScript:
var curZoom = app.activeDocument.layoutWindows[0].zoomPercentage;
...
text[i].select();
app.activeDocument.layoutWindows[0].zoomPercentage = curZoom;
 
  • Спасибо
Реакции: hulk1776