Я считаю, что DOMPDF использует довольно ограниченный набор символов для определения того, как разбить строку. Прямо сейчас это только разделяет линию в тире или пробел. Таким образом, что-то вроде URL в вашем образце будет превышать ширину контейнера. DOMPDF просто не знает, как его разбить.
Начиная с dompdf v0.6.0, вы можете стилизовать ваш текст так, чтобы слова были разбиты на любой символ, например ::
<span style="word-wrap: break-word;">http://example.com/really/long/.../url</span>
Это не так чисто, как разбить на конкретного персонажа (например, /
). Если вам удобно взламывать код, вы можете обойти эту проблему немного более элегантно. Откройте текстовый класс reflower и измените регулярное выражение, которое разделяет строку. Регулярное выражение выглядит следующим образом:
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).