Saltar al contenido

PHPWord cómo agregar salto de texto / nueva línea mientras se ejecuta un texto

Te traemos el hallazgo a esta escollo, al menos eso creemos. Si tienes dudas coméntalo, que con placer te responderemos

Solución:

La pregunta se hizo hace 3 años pero tengo el mismo problema y encontré una solución. Tal vez esto pueda ayudar a los nuevos usuarios de PHPWord.

Para agregar un crlf en un documento de Word, la etiqueta puede ayudar:

$section->addText('Some text  another text in the line ');

Encontré la solución aquí: http://jeroen.is/phpword-line-breaks/

Me temo que esto no será posible con la versión actual. No tengo un conocimiento profundo de esta biblioteca, pero al mirar el código, descubrí que el textRun la clase consiste solo en addText y addLink métodos.

Pero también necesito esta característica junto con varias otras, así que voy a escribirla yo mismo y crearé una solicitud de extracción para incluirla en la próxima versión (si la hay).

Básicamente se puede hacer modificando el textRun clase, agregando un addLineBreak método (de manera similar a como está en la clase de sección) y luego modifique la clase Base.php para crear elementos adecuados en el documento final.

En Docx xml, esos frenos de línea son similares al html br etiqueta, pero el texto anterior debe cerrarse y reabrirse después de usar un descanso como este:


  This is
  
   a simple sentence.

en lugar de simplemente hacer


  This is a simple sentence

así que en base.phpdeberá editar el comportamiento para crear este bloque de código.

¡Espero que esto haya sido útil!

EDITAR

He descubierto que implementar esto es muy simple. En textRun.php solo agrega este método:

/**
* Add a TextBreak Element
*
* @param int $count
*/
public function addTextBreak($count = 1) 
    for($i=1; $i<=$count; $i++) 
        $this->_elementCollection[] = new PHPWord_Section_TextBreak();
    

y en Base.php en el _writeTextRun método al final de este método agregue esta condición:

elseif($element instanceof PHPWord_Section_TextBreak) 
    $objWriter->writeElement('w:br');

Agregar una nueva línea en phpword me ha molestado, y finalmente encontré la solución, por accidente, así que aquí está: Y esto justifica el texto.

$PHPWord->addParagraphStyle('pJustify', array('align' => 'both', 'spaceBefore' => 0, 'spaceAfter' => 0, 'spacing' => 0));
//add this style then append it to text below
$section->addText('something', 'textstyle', 'pJustify');
//the text behind this will be justified and will be in a new line, not in a new paragraph
$section->addText('behind', 'textstyle', 'pJustify');

Esto generará:

algo

detrás

Si te gusta la programación, puedes dejar un escrito acerca de qué te ha impresionado de este ensayo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *