Я считаю, что DOMPDF использует довольно ограниченный набор символов для определения того, как разделить строку. Прямо сейчас он разделяет строку только на тире или пробеле. Так что что-то вроде URL-адреса, который у вас есть в вашем образце, будет выходить за пределы ширины контейнера. DOMPDF просто не знает, как его разбить.
Начиная с dompdf v0.6.0, вы можете стилизовать текст так, чтобы слова прерывались на любом символе, например:
<span style="word-wrap: break-word;">http://example.com/really/long/.../url</span>
Это не так чисто, как разбиение на определенный символ (например, /
). Если вам удобно взламывать код, вы можете решить проблему более элегантно. Откройте класс преобразования текста и измените регулярное выражение, которое разбивает строку. Регулярное выражение выглядит следующим образом:
preg_split('/([\s-]+)/u', $text, -1, PREG_SPLIT_DELIM_CAPTURE)
Измените этот код, чтобы включить любые дополнительные символы, которые, по вашему мнению, будут хорошим разрывом строки. Вы можете, например, разбить URL-адреса на ?, & или даже /, если вы ожидаете, что в вашем тексте будут очень длинные URL-адреса:
$words = preg_split('/([\s-\?\&\/]+)/u', $text, -1, PREG_SPLIT_DELIM_CAPTURE);
В dompdf 0.6.1 RegEx можно найти в dompdf/include/text_frame_reflower.cls.php, строки 86 и 371. В следующей версии 0.7.0 RegEx можно найти в dompdf/src/FrameReflower/Text.php, строки 106 и 402. .
Недостатком изменения RegEx является то, что это повлияет на весь текст (а не только на URL-адреса).
person
BrianS
schedule
26.02.2010