[ID CC-CC2021] Нет ли более быстрого способа найти неразмещенный текст?

hulk1776

Топикстартер
15 лет на форуме
Сообщения
735
Реакции
21
Код:
preflightIDD();
function preflightIDD(){
    for (i=0,k=0; i<aD.textFrames.length; i++, k++){
    if(aD.textFrames[i].parentPage!=null){
            currTF = aD.textFrames[i];
            if(currTF.overflows){
                alert("Text overflows на стр." + currTF.parentPage.name);
            exit();
             }
        }
    }
}
Эта конструкция на 250 страницах работает аж 30 секунд (+-). А, если отправить документ на принтер, то предупреждение overset text появляется через 10 секунд.
 

DrEgor

Участник
Сообщения
774
Реакции
68
пардон, а штатный префлайт чем не угодил? по идее его можно настроить конкретно под эту задачу
 
  • Спасибо
Реакции: hulk1776 и Skvoznyak

hulk1776

Топикстартер
15 лет на форуме
Сообщения
735
Реакции
21
пардон, а штатный префлайт чем не угодил? по идее его можно настроить конкретно под эту задачу
Штатный - как бы долго). Я отправляю на печать скриптом (для ускорения работы) и хотел туда же подцепить проверку.
upd...
Заменил перебор фреймов простой префлайт-проверкой. Совсем другое дело! Спасибо за подсказку.
 

DrEgor

Участник
Сообщения
774
Реакции
68
Штатный - как бы долго).

если я правильно понял - скриптом то-же самое выйдет.
я обычно работаю с выключенным префлайтом (ибо тормозит меньше)
перед написанием pdf - запускаю префлайт
думаю вам стоит сделать нечто подобное - скрыптом вызвать штатный префлайт с нужным пресетом (если сомнения только в тексте) и ежели все ок - далее тулить на печать.
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
оригинальный скрипт тоже можно нехило ускорить
во-первых, перебирать можно stories - фреймов может быть больше
во-вторых, нужно использовать вот такую конструкцию, и потом уже перебирать элементы в ней. обращения к коллекциям более затратны

Код:
var myObjs = aD.textFrames[i].everyItem().getElements().slice(0);
 
  • Спасибо
Реакции: hulk1776, azz и veretragna

hulk1776

Топикстартер
15 лет на форуме
Сообщения
735
Реакции
21
если я правильно понял - скриптом то-же самое выйдет.
я обычно работаю с выключенным префлайтом (ибо тормозит меньше)
перед написанием pdf - запускаю префлайт
думаю вам стоит сделать нечто подобное - скрыптом вызвать штатный префлайт с нужным пресетом (если сомнения только в тексте) и ежели все ок - далее тулить на печать.
Ну да. Так и сделал:
Код:
var aD = app.activeDocument;
// проверка на неразмещенный текст
mPreflight();
app.preflightOptions.preflightOff = true; //отключение, чтобы не тормозилось
function mPreflight() {
    app.preflightOptions.preflightOff = false;
var myProfile = app.preflightProfiles.item('mOverset');
var process = app.preflightProcesses.add(aD, myProfile);
process.waitForProcess();
  var results = process.processResults;
      if (results.match("Error")!=null){
      alert("есть Overset'ы!");
      exit();
        }   
 }
и дальше "печатная кухня"

var myPDFExpPreset = app.pdfExportPresets.item("mOut"); ...))