alt text http://i45.tinypic.com/j6tmdl.png
我正在使用dompdf生成一些PDF,其中包含表格中的一些文本和图像.但是如果文本中有一个大的URL,则URL会一直包装到行尾.所有文本和URL都包含在具有固定宽度和高度的div中,但URL仍然溢出.
在浏览器中呈现的相同HTML似乎没问题.
有什么想法吗?
最佳答案
我相信DOMPDF使用相当有限的字符集来确定如何分割线.现在它只在破折号或空格处分割一条线.因此,类似于示例中的URL将会超出容器的宽度. DOMPDF只是不知道如何分解它.
从dompdf v0.6.0开始,您可以设置文本的样式,以便在任何字符处都可以删除单词,例如:
@H_403_18@
它不像打破特定角色(例如/)那样干净.如果你习惯于破解代码,你可以更优雅地解决问题.打开文本reflower类并修改分割行的正则表达式.正则表达式如下所示:
@H_403_18@preg_split('/([\s-]+)/u',$text,-1,PREG_SPLIT_DELIM_CAPTURE)
修改该代码以包含您认为可以为良好的换行符添加的任何额外字符.例如,如果您希望文本中包含极长的网址,则可能会在?,&或甚至/上打开网址:
@H_403_18@$words = preg_split('/([\s-\?\&\/]+)/u',PREG_SPLIT_DELIM_CAPTURE);
在dompdf 0.6.1中,可以在dompdf / include / text_frame_reflower.cls.PHP第86和371行中找到RegEx.在即将推出的0.7.0中,可以在dompdf / src / FrameReflower / Text.PHP第106和402行中找到RegEx. .
修改RegEx的缺点是这会影响所有文本(而不仅仅是URL).