Forum


Replies: 5   Views: 958
Formatear todo el texto de una tabla
Topic closed:
Please note this is an old forum thread. Information in this post may be out-to-date and/or erroneous.
Every phpdocx version includes new features and improvements. Previously unsupported features may have been added to newer releases, or past issues may have been corrected.
We encourage you to download the current phpdocx version and check the Documentation available.

Posted by rmartinez  · 23-11-2021 - 16:40

Hola de nuevo.

¿Cómo puedo cambiar el formato a todo el texto de una tabla?

Estoy probando con el siguiente código y funciona todo menos el tamaño de la fuente que deja la predeterminada del documento.

$first_col_table_styleOptions = array(
        'borderWidth' => 8,
        'cellMargin' => array('left' => 150, 'right' => 150),
        'firstColStyle' => array(
                'backgroundColor' => $main_hex_color,
                'rPrStyles' => array('color' => 'ffffff'),
        ),
        'rPrStyles' => ['fontSize' => 18],
);
$wf->createTableStyle('first_col_table'), $first_col_table_styleOptions);

Gracias.

Saludos.

Posted by admin  · 23-11-2021 - 17:14

Hola,

Hemos ejecutado el siguiente código y funciona correctamente:

$docx = new CreateDocx();

$styleOptions = array(
    'borderWidth' => 8,
    'pPrStyles' => array('indentLeft' => 150),
    'rPrStyles' => array('fontSize' => 50),
);

$docx->createTableStyle('myTableStyle', $styleOptions);

$valuesTable = array(
    array(11, 12, 13),
    array(21, 22, 23),
    array(31, 32, 33),
);

$paramsTable = array(
    'tableStyle' => 'myTableStyle',
);

$docx->addTable($valuesTable, $paramsTable);

$docx->createDocx('output');

el tamaño del texto se aplica correctamente para el contenido. Aparte comentar, aunque suponemos que será por un error de copia y pega, que esta línea no es correcta:

$wf->createTableStyle('first_col_table'), $first_col_table_styleOptions);

debería ser:

$wf->createTableStyle('first_col_table', $first_col_table_styleOptions);

Te recomendamos comprobar que el contenido de la tabla no esté añadiendo su propio tamaño de texto (mediante un estilo en línea o con un custom style).

Saludos.

Posted by rmartinez  · 24-11-2021 - 07:27

Correcto, hubo un error tipográfico en el copia y pega, pero no tiene nada que ver con esta situación.

He revisado de arriba a abajo cómo se genera la tabla (hay varios métodos involucrados) y, básicamente, tengo un método que recibe un array lleno solo de cadenas de texto, que uso para generar la tabla, a la que le asigno el estilo. Por ningún lado hay nada más de estilos. La versión de phpdocx que utilizo es la 8.5.

Al final, lo he resuelto asignándole el estilo al texto de la celda.

Gracias.

Saludos.

Posted by admin  · 24-11-2021 - 08:33

Hola,

El mismo script se ha ejecutado con phpdocx 8.5 y el resultado también es correcto. El tamaño de letra es definido correctamente con la opción rPrStyles. Te recomendamos ejecutar el script que hemos añadio en la respuesta anterior para comprobar qué DOCX obtienes.

Tendríamos que revisar el script que estás ejecutando (incluyendo los contenidos), por si estás creando WordFragments para añadir los textos en la tabla en lugar de insertar directamente texto. Los WordFragments añaden etiquetas rPr que pueden pisar los valores por defecto.

En todo caso, como comentas, también puedes definir los tamaños directamente a los contenidos de la tabla.

Regards.

Posted by rmartinez  · 24-11-2021 - 15:22

Entendido. Entonces van a ser los WordFragments.

¿Los WordFragments pisan el formato del texto aunque estos solo estén definidos en el estilo de la tabla? Es decir, yo en ningún momento seteo el tamaño de la fuente, salvo en el estilo de la tabla, que lleno con WordFragments sin ningún estilo, más allá de alguna que otra alineación. Si esto es así, será lo que me está pasando.

Muchas gracias.

Saludos.

Posted by admin  · 24-11-2021 - 15:27

Hola,

En el método createTableStyle los WordFragments no heredan los estilos aplicados por las opciones rPrStyles y pPrStyles. Solo los strings los heredan. Si estás utilizando WordFragments tienes que indicar el tamaño a utilizar en el WordFragment.

Saludos.