Ошибка Illustrator при переключении наборов данных переменных

Моя компания отправляет клиентам отчеты в формате PDF на основе данных, которые мы экспортируем из другой программы. Я сделал очень простой процесс пакетного экспорта в Adobe Illustrator, просто назначив переменные нашему PDF-файлу, экспортировав эти переменные в файл XML, а затем используя скрипт Python для перезаписи и копирования структуры/переменных XML из данных экспорта CSV.

При загрузке переменных из XML это загружается просто отлично. Проблема возникает при переключении наборов данных, что мы должны делать сотни раз, даже когда пакет макросов/действий «сохраняет копию».

Это сообщение отображается на каждом коммутаторе: «Текущие значения не были захвачены и будут удалены при переключении наборов данных. Продолжить?» Нажатие «Да» (или пробел) «работает» просто отлично; набор данных не просто волшебным образом исчезает, как кажется. Однако при переключении на визуальную проверку достоверности данных или просто на пакетирование действий становится очень утомительно.

Кажется, я не могу найти вариант или предпочтение для подавления таких сообщений, что было бы моим первым предположением для решения. Может быть, где-то в структуре XML есть опция, флаг или параметр, чтобы сказать, что мне все равно? Есть ли обходной путь, например, пакетное действие или «захват всех»? Или любая другая возможность?

Ответы (1)

Вы используете переменные видимости или графика? Как насчет различных пробельных символов или необычных глифов? Есть некоторые «проблемы», которые возникают во время заполнения данных в заполнители, и, к счастью, исправление доступно с помощью этой функции в вашем документе Illustrator.

function cycleUpdateAllDatasets(doc){
  for(var i = 0; i < doc.dataSets.length; i++){
    var d = doc.dataSets[i];
    d.display();
    d.update();
  };
};

Метод заключается в отображении и обновлении каждого набора данных, чтобы сделать его «правильным» в глазах Illustrator. Какие бы невидимые изменения ни делал Illustrator, команда dataSet.update() исправит их и, надеюсь, отправит вас дальше. Вы можете воспроизвести этот скрипт .jsx массово, прежде чем приступить к обработке, но также вы можете воспроизвести его во время обработки активного набора данных сразу после его заполнения (команда меню вставки, чтобы вставить скрипт «Файл»> «Сценарии» в ваше действие) .

Я не очень люблю Javascript - как бы я адаптировал его как отдельный скрипт для запуска в рамках пакетного действия «сохранить копию»? Когда я попытался просто вставить и вызвать функцию, я получаю сообщение об ошибке 21: undefined не является объектом. Я предполагаю, что это потому, что я не определяю «док», но, как я уже сказал, я не знаю javascript.
Nevermind; я только что добавил var doc = app.activeDocument;- достаточно просто использовать скрипт один раз. Тем не менее любопытно, как бы я адаптировал его для пакетного использования, если у вас есть время.
Рад, что это сработало. Ну, для пакетной обработки есть способ, но у него есть свои неприятные проблемы. Во-первых, вы должны создать фрагмент «одного набора данных», который будет таким же простым, как: app.activeDocument.activeDataSet.update()Затем вы сохраните его как файл .jsx в папке вашего приложения Illustrator. Путь Windows: C:\Program Files\Adobe\Adobe Illustrator CC 2017\Presets\en_US\Scripts Перезапустите AI, и он появится в меню «Файл» > «Сценарии». Затем в своих действиях вы используете всплывающее меню панели, чтобы выполнить команду «Вставить элемент меню» и вставить этот новый сценарий.
После этого вы можете воспроизвести это действие, которое воспроизведет этот сценарий на вашем пакете документов! Проблема в том, что эти ссылки на элементы меню сценариев действий не сохраняются после перезапуска Illustrator, поэтому вы можете проверить это для улучшения решения.