Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

276
Vistas
InDesign - Javascript - Copiar objeto, pegar en el lugar, agrupar nuevo objeto con selección original

EDITADO PARA CLARIDAD

Creé un script para InDesign para mejorar mi flujo de trabajo.

Selecciono una imagen, luego ejecuto el script, que funciona de la siguiente manera:

  1. Copia la imagen seleccionada (para usar en el paso 3).
  2. Aplica el efecto "multiplicar" a la imagen seleccionada .
  3. Pega en el lugar la imagen original (sin efecto de multiplicación).
  4. Busca un nombre de ruta de Photoshop específico (ya sea 'X', 'FCP' o 'x').
  5. Aplica la primera ruta que encuentra y alerta sobre cuál se seleccionó o alerta "no existe una ruta válida" si no hay ninguna disponible.
  6. Guión Termina con la imagen pegada seleccionada.

Todo funciona según lo previsto; sin embargo, me gustaría seleccionar AMBAS imágenes (la imagen con un trazado de recorte y la imagen con el efecto de multiplicación) y agruparlas. Me estoy poniendo al día sobre cómo seleccionar ambas imágenes.

Aquí está el código original ( tengo la intención de hacer las ediciones de Yuri a los comandos de copiar y pegar ):

 app.menuActions.item("$ID/Copy").invoke(); var myProperties = { blendMode : BlendMode.MULTIPLY, opacity : 100 }; for (i=0; i<app.selection.length; i++) { try { app.selection[i].images[0].transparencySettings.blendingSettings.properties = myProperties; }catch(e){} } app.menuActions.item("$ID/Paste in Place").invoke(); for (j=0; j<app.selection.length; j++) { try { var myPathName = app.selection[0].images[0].clippingPath.photoshopPathNames; var myPath = app.selection[0].images[0].clippingPath; function working() { for (var i = 0; i < myPathName.length; i++) { if (myPathName[i] === "X") { myPath.appliedPathName = myPathName[i]; alert ("X path activated"); return i; } else if (myPathName[i] === "FCP") { myPath.appliedPathName = myPathName[i]; alert ("FCP path activated"); return i; } else if (myPathName[i] === "x") { myPath.appliedPathName = myPathName[i]; alert ("x path activated"); return i; } } alert ("No valid path exists"); } working(); } catch (e) {} }

Disculpas si no es el código más limpio. Empecé a aprender javascript en mi tiempo libre y este es uno de los primeros scripts que escribí.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Con la guía de Yuri pude resolver mi problema. Tuve que reordenar un poco el proceso para dar cuenta de cómo estaba agregando a la selección (tal vez no lo hice, pero tenía sentido para mí y ¡FUNCIONA!). Aquí está el código final para cualquier persona interesada.

 //look for clipping path 'X', 'FCP', or 'x' and apply it for (j=0; j<app.selection.length; j++) { try { var myPathName = app.selection[0].images[0].clippingPath.photoshopPathNames; var myPath = app.selection[0].images[0].clippingPath; function working() { for (var i = 0; i < myPathName.length; i++) { if (myPathName[i] === "X") { myPath.appliedPathName = myPathName[i]; alert ("X path activated"); return i; } else if (myPathName[i] === "FCP") { myPath.appliedPathName = myPathName[i]; alert ("FCP path activated"); return i; } else if (myPathName[i] === "x") { myPath.appliedPathName = myPathName[i]; alert ("x path activated"); return i; } } alert ("No valid path exists"); } working(); } catch (e) {} } //copy image with clipping path app.copy(); //remove clipping path app.selection[0].images[0].clippingPath.clippingType = ClippingPathType.NONE; //apply Multiply blend mode var myProperties = { blendMode : BlendMode.MULTIPLY, opacity : 100 }; for (i=0; i<app.selection.length; i++) { try { app.selection[i].images[0].transparencySettings.blendingSettings.properties = myProperties; }catch(e){} } //paste in place and add to current selection var clippedImage = app.selection[0]; app.pasteInPlace(); clippedImage.select(SelectionOptions.ADD_TO) //group selected images app.menuActions.itemByName("$ID/Group").invoke();

¿Qué sucede y cómo funciona? El usuario selecciona una imagen y ejecuta el script

  1. Busca una ruta de recorte para que coincida con una cadena específica.
  2. El usuario recibe una alerta sobre qué ruta se ha aplicado o si no se encuentra ninguna coincidencia.
  3. La imagen se copia (para el paso 6).
  4. Se elimina la ruta.
  5. Se aplica el modo de fusión Multiplicar.
  6. La imagen copiada en el paso 3 se pega en su lugar (con trazado de recorte).
  7. La selección de imágenes pegadas se agrega a la selección actual (imagen con modo de fusión múltiple).
  8. La selección está agrupada.
about 4 years ago · Juan Pablo Isaza Denunciar

0

Todavía no estoy seguro si entiendo bien el problema. Si necesita agregar algún elemento a la selección actual, puede hacerlo de esta manera:

 var item1 = app.selection[0]; // some selected item app.paste(); // paste item which is selected now item1.select(SelectionOptions.ADD_TO) // add the item1 to current selection app.menuActions.itemByName("$ID/Group").invoke(); // group selected items

editado para cambiar app.selected a app.selection porque la selected devolvió un error

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda