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

386
Vistas
Colocar marcos de texto automáticamente uno debajo del otro (JavaScript)

Estoy tratando de automatizar inDesign para crear marcos de texto a partir de un archivo JSON, donde cada registro se colocará en un marco de texto, que se encuentra justo debajo del registro anterior.

 var tweets_json = '[ {"name":"record_1"}, {"name":"record_2"}, ... ]'; // I have not yet figured out how to import external JSON files, so tor testing this is my current way to go var tweets = eval("(" + tweets_json + ")"); for ( var t = 0; t < tweets.length; t++ ) { var newTextFrame = page.textFrames.add(); newTextFrame.textFramePreferences.autoSizingType = AutoSizingTypeEnum.HEIGHT_ONLY; var tweet = tweets[ t ]; newTextFrame.parentStory.texts.item(0).applyParagraphStyle(styleContent, true); newTextFrame.geometricBounds = [y1,x1,y2,x2]; // Ignore values newTextFrame.contents = tweet.name; }

Comencé a crear secuencias de comandos en InDesign hace unos días y la documentación es difícil de encontrar la solución que estoy buscando, especialmente con mi conocimiento básico de JavaScript, ¡así que agradezco cualquier ayuda! ¡Gracias!

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

0

Podría ser algo como esto:

 var doc = app.activeDocument; var page = doc.pages[0]; // get JSON data (just as an example) var tweets_json = '[ {"name":"line1 line2"}, {"name":"line3"}, {"name":"line4, line5"}]'; var tweets = eval("(" + tweets_json + ")"); // set geometric bounds for the first text frame var x = 0, y = 0; // coordinates of top a left corner of the text frame var width = 15; // width of the text frame var min_heigth = 20; // minimal heigth of the text frame var bottom = min_heigth; // bottom edge of the text frame var bounds = [y, x, bottom, width]; for (var t = 0; t < tweets.length; t++) { var tweet = tweets[t]; // create the a new text frame and set its geometric bounds var newTextFrame = page.textFrames.add(); newTextFrame.geometricBounds = bounds; // fill the box with a text and apply the style newTextFrame.contents = tweet.name; newTextFrame.parentStory.texts[0].applyParagraphStyle(styleContent, true); // resize the created text box with auto sizing newTextFrame.textFramePreferences.autoSizingReferencePoint = AutoSizingReferenceEnum.TOP_CENTER_POINT; newTextFrame.textFramePreferences.autoSizingType = AutoSizingTypeEnum.HEIGHT_ONLY; // set the new geometric bounds for the next text frame bounds = newTextFrame.geometricBounds; // get the bounds of the created text frame bottom = bounds[2]; // get the new bottom edge bounds[0] = bottom; // set the top edge for the next text frame bounds[2] = bounds[2] + min_heigth; // set the bottom edge for the next text frame }

Resultado:

ingrese la descripción de la imagen aquí

El código un poco detallado, con fines educativos. En realidad, puede ser mucho más corto.

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