Error de Illustrator al cambiar conjuntos de datos de variables

Mi empresa envía informes en PDF a los clientes a partir de datos que exportamos desde otro programa. Hice un proceso de exportación por lotes muy simple en Adobe Illustrator simplemente asignando variables a nuestro PDF, exportando esas variables a un archivo XML y luego usando un script de Python para reescribir y copiar la estructura/variables XML de los datos de exportación CSV.

Al cargar las variables desde un XML, esto se carga correctamente. El problema surge al cambiar los conjuntos de datos, lo que debemos hacer cientos de veces, incluso cuando el procesamiento por lotes de macros/acciones "guarda una copia".

Este mensaje se muestra en cada interruptor: "Los valores actuales no se han capturado y se descartarán al cambiar los conjuntos de datos. ¿Desea continuar?" Presionar "Sí" (o la barra espaciadora) "funciona" bien; el conjunto de datos no desaparece mágicamente como parece implicar. Sin embargo, cuando se cambia para verificar visualmente la precisión de los datos, o simplemente para agrupar acciones, se vuelve muy tedioso.

Parece que no puedo encontrar una opción o preferencia para suprimir este tipo de mensajes, que sería mi primera suposición para una solución. ¿Existe tal vez una opción, indicador o parámetro en algún lugar de la estructura XML para indicar que no me importa? ¿Hay alguna solución como una acción por lotes o "capturar todo"? ¿O alguna otra posibilidad?

Respuestas (1)

¿Está utilizando variables de visibilidad o gráficas? ¿Qué tal diferentes símbolos de espacios en blanco o fuentes de glifos inusuales? Hay algunos "problemas" que ocurren durante el llenado de datos en los marcadores de posición y, afortunadamente, la solución está disponible al usar esta función en su documento de Illustrator.

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

El método consiste en mostrar y actualizar cada conjunto de datos para que esté "bien" a los ojos de Illustrator. Cualesquiera que sean los cambios invisibles que haga Illustrator, el comando dataSet.update() los rectificará y, con suerte, lo guiará por su camino. Puede reproducir este script .jsx a granel antes de continuar con su procesamiento, pero también puede reproducirlo durante su procesamiento en el conjunto de datos activo justo después de que se complete (el comando de menú Insertar para insertar un script Archivo > Scripts en su acción) .

No me gusta mucho Javascript. ¿Cómo adaptaría esto como un script independiente para que se ejecute como parte de la acción por lotes "guardar una copia"? Cuando intenté simplemente insertar y llamar a la función, aparece el error 21 undefined no es un objeto. Supongo que es porque no estoy definiendo "doc", pero como dije, no sé javascript.
No importa; acabo de agregar var doc = app.activeDocument;: lo suficientemente fácil como para usar el script una vez. Sin embargo, todavía tengo curiosidad por saber cómo lo adaptaría para el uso por lotes, si tiene tiempo.
Me alegro de que haya funcionado. Bueno, para el procesamiento por lotes hay una manera, pero tiene sus propios problemas molestos. Primero, crearía un fragmento de "conjunto de datos único" que sería tan simple como: app.activeDocument.activeDataSet.update()Luego guardaría esto como un archivo .jsx en la carpeta de la aplicación de Illustrator. La ruta de Windows es: C:\Program Files\Adobe\Adobe Illustrator CC 2017\Presets\en_US\Scripts Reinicie su AI, y esto aparecerá en su menú Archivo > Scripts. Luego, en sus Acciones, use el menú flotante del panel para hacer un comando "Insertar elemento de menú" e insertar este nuevo script suyo.
¡Después de eso, puede ejecutar esta acción que reproducirá este script en su lote de documentos! El problema es que estas referencias de elementos de menú de secuencias de comandos de acción no se mantienen después de que se reinicia Illustrator, por lo que puede consultar esto para obtener una solución de mejora.