Cómo ajustar la sangría de la primera línea de un párrafo en presentaciones de ONLYOFFICE
Al preparar presentaciones, la coherencia y la legibilidad son clave. Una de las características esenciales de formato es ajustar la sangría de la primera línea de los párrafos. En este artículo, te guiaremos en cómo crear una macro de ONLYOFFICE que ajuste la sangría de la primera línea para todos los párrafos de tu presentación.
Creación de la macro
Establecer el valor de la sangría
La macro comienza definiendo la cantidad de sangría para la primera línea de cada párrafo:
const indentationValue = 720;
/* Please enter the paragraph's first line indentation value. A value of 0 means no indentation,
and any value greater than 0 will indent the text. The value is specified in twentieths of a point (1/1440 of an inch).*/
indentationValue: Esta variable constante define la sangría de la primera línea en veinteavos de punto (1/1440 de una pulgada), y está establecida en 72p por defecto, lo que corresponde a una sangría de media pulgada. Un valor de 0 significa que no hay sangría, mientras que cualquier valor mayor que 0 aplicará sangría al texto. Los usuarios pueden ajustar el valor de sangría según su preferencia.
Recuperar la presentación y el número de diapositivas
Antes de recuperar la presentación actual, nos aseguramos de que la macro se ejecute solo cuando el valor de sangría proporcionado por el usuario sea un número válido y no negativo:
if (!isNaN(indentationValue) && indentationValue >= 0) {
Recuperamos la presentación actual utilizando el método GetPresentation() y el número total de diapositivas se obtiene con el método GetSlidesCount():
let presentation = Api.GetPresentation();
let nSlides = presentation.GetSlidesCount(); // Get the number of slides in the presentation
Recorrer cada diapositiva, cuadro de texto en la diapositiva y párrafo
// Loop through each slide
for (let slideIndex = 0; slideIndex < nSlides; slideIndex++) {
let slide = presentation.GetSlideByIndex(slideIndex); // Get the slide
let aShapes = slide.GetAllShapes(); // Get all shapes in the slide
// Loop through each shape in the slide
for (let shapeIndex = 0; shapeIndex < aShapes.length; shapeIndex++) {
let content = aShapes[shapeIndex].GetDocContent(); // Get the document content of the shape
if (content) {
let count = content.GetElementsCount(); // Get the number of elements (paragraphs) in the shape
// Loop through each paragraph in the shape
for (let elementIndex = 0; elementIndex < count; elementIndex++) {
let paragraph = content.GetElement(elementIndex); // Get the paragraph element
- GetSlideByIndex(slideIndex) accede al objeto de diapositiva en la posición (índice) especificada en la presentación.
- GetAllShapes() recupera todos los objetos de forma dentro de la diapositiva actual. Este método devuelve una colección de todas las formas (como cuadros de texto, imágenes y otros elementos) presentes en la diapositiva.
- GetDocContent() recupera el contenido del documento de una forma específica. Este método devuelve el contenido textual asociado con una forma.
- GetElementsCount() recupera el número total de elementos (párrafos) dentro de la forma especificada.
- GetElement(elementIndex) accede a un elemento específico (párrafo) dentro de la forma, basado en el índice proporcionado (elementIndex).
En esta sección se realiza lo siguiente:
- Se recorre (itera) todas las diapositivas de la presentación.
- Se recorren todas las formas (cuadros de texto) en la diapositiva.
- Se obtiene el contenido de texto de la forma.
- Se verifica si la forma tiene contenido de texto.
- Se recorre cada elemento de contenido de la forma (párrafo).
- Se obtiene el elemento de párrafo.
Ajustar de la sangría de primera línea de los párrafos
Se establece la sangría de primera línea deseada para los párrafos dentro de los cuadros de texto utilizando GetParaPr() para recuperar las propiedades del párrafo y SetIndFirstLine(indentationValue) para ajustar la sangría.
let paraPr = paragraph.GetParaPr();
paraPr.SetIndFirstLine(indentationValue);
}
}
}
}
}
Código completo de la macro
La macro completa es la siguiente:
(function () {
const indentationValue = 720;
/* Please enter the paragraph's first line indentation value. A value of 0 means no indentation,
and any value greater than 0 will indent the text. The value is specified in twentieths of a point (1/1440 of an inch).*/
if (!isNaN(indentationValue) && indentationValue >= 0) {
let presentation = Api.GetPresentation();
let nSlides = presentation.GetSlidesCount(); // Get the number of slides in the presentation
// Loop through each slide
for (let slideIndex = 0; slideIndex < nSlides; slideIndex++) {
let slide = presentation.GetSlideByIndex(slideIndex); // Get the slide
let aShapes = slide.GetAllShapes(); // Get all shapes in the slide
// Loop through each shape in the slide
for (let shapeIndex = 0; shapeIndex < aShapes.length; shapeIndex++) {
let content = aShapes[shapeIndex].GetDocContent(); // Get the document content of the shape
if (content) {
let count = content.GetElementsCount(); // Get the number of elements (paragraphs) in the shape
// Loop through each paragraph in the shape
for (let elementIndex = 0; elementIndex < count; elementIndex++) {
let paragraph = content.GetElement(elementIndex); // Get the paragraph element
let paraPr = paragraph.GetParaPr();
paraPr.SetIndFirstLine(indentationValue);
}
}
}
}
}
})();
¡Ejecutamos nuestra macro y veamos cómo funciona!
Esta macro ofrece una solución simple pero eficaz para ajustar la sangría de la primera línea en todos los párrafos de tu presentación, ahorrándote tiempo y asegurando coherencia en tus diapositivas. Al automatizar este proceso, puedes concentrarte más en la creación de contenido mientras mantienes un diseño pulido y profesional.
Te animamos a explorar nuestros métodos de la API de ONLYOFFICE y a crear tus propias macros para mejorar aún más el flujo de trabajo. Si tienes ideas o sugerencias, no dudes en contactarnos, ¡nos encantaría conocer tu opinión!
Acerca de la autora
Crea tu cuenta gratuita de ONLYOFFICE
Visualiza, edita y colabora en documentos, hojas, diapositivas, formularios y archivos PDF en línea.