Saltar al contenido

Html2pdf no admite salto de palabras: romper todo css

Solución:

Bueno, eso es complicado. Su cadena de prueba es demasiado larga, pero no está compuesta por varias palabras. Eso significa que el salto de palabras no funcionará, porque no hay palabras para romper. Obviamente, esto podría ser solo un ejemplo, en cuyo caso podría ser que html2pdf simplemente no admita anchos relativos y word-break, por lo que podría intentar tener un ancho absoluto y word-break.

Dicho esto, aquí hay algo que sé que funcionará: ajuste de palabras en PHP. Entonces, en lugar de echo $yourvar; podrías usar echo wordwrap($yourvar, 75, "n", true) en cambio, que siempre corte la cuerda, incluso si es solo una cuerda larga. Se necesita un poco de manipulación para lograr que la cantidad de caracteres coincida con el ancho que está buscando, pero funcionará.

<?php
$foo = str_repeat('test',12);
echo wordwrap($foo, 20, '<br />', true);

Producción:

testtesttesttesttest
testtesttesttesttest
testtest

prueba esto;

<td style="width:30%; word-wrap:break-word;">
   testtestetstetstetstetstettstetstetstetstetstetstetstetstetstetstets
</td>

no word-break está word-wrap ;

Si desea que las cadenas largas se envuelvan consistentemente dentro de un contenedor de límites, creo que debería poder lograr esto al insertar caracteres de espacio de ancho cero (&#8203; o xe2x80x8b) entre cada letra de la cadena original. Esto tendrá el efecto de envolver como si cada carácter fuera su propia palabra, pero sin mostrar los espacios al usuario final. Esto puede causarle problemas con las búsquedas de texto o la indexación del producto final, pero debería realizar la tarea de manera confiable desde una perspectiva estética.

Por lo tanto:

testtestetstetstetstetstettstetstetstetstetstetstetstetstetstetstets

Se convierte

t&#8203;e&#8203;s&#8203;t&#8203;t&#8203;e&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s

(que muestra: “t e s t t e s t e t s t e t s t e t s t e t s T e t t s t e t s t e t s t e t s t e t s t e t s T e t s t e t s t e t s t e t s t e t s “)

Entonces, si lo envuelve, se ajustará exactamente a los límites de su contenedor. Aquí hay un violín como ejemplo..

Simplemente escriba un script PHP para recorrer la cadena e inserte el espacio:

$string="testtestetstetstetstetstettstetstetstetstetstetstetstetstetstetstets";
$new_string = "";
for($i=0;$i<strlen($string);$i++){
   if ($string[$i]==' ' || $string[$i+1]==' '){ //if it is a space or the next letter is a space, there's no reason to add a break character
      continue;
   }
   $new_string .= $string[$i]."&#8203;";
}
echo $new_string

Esta es una solución particularmente agradable, porque a diferencia de wordwrap(), se ajusta automáticamente para fuentes de ancho no fijo (que es básicamente el 99% de las fuentes que se utilizan realmente).

Nuevamente, si necesita que el PDF resultante se pueda buscar, este no es un buen enfoque, pero lo hará Mira como quieres.

¡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 *