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 (​
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​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
(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]."​";
}
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.