我正在尝试使用dompdf渲染文本。它看起来应该与浏览器完全一样。这是有效的,只要单词的字符没有格式化:
使用HTML:
<span style="color: #000000; font-family:'opensans'">
<p style="font-size: 30.57465524239px;">
This Text is a test to show the different behaviour!
</p>
</span>
无格式的浏览器文字
没有格式的dompdf文字
但是,如果我想给字符赋予不同的样式,请使用HTML:
<span style="color: #000000; font-family:'opensans'">
<p style="font-size: 30px;">
This Text is a test to
<span style="color: #800080;">s</span>
<span style="color: #ff0000;">h</span>
<span style="color: #000080;">o</span>
<span style="color: #003300;">w</span>
<span style="color: #000080;">t</span>
<span style="color: #ff00ff;">h</span>
<span style="color: #ff0000;">e
<span style="color: #000000;">different behaviour!</span>
</span>
</p>
</span>
浏览器仍然按预期显示:
但是dompdf显示它会像word-break: break-all;
一样活跃。
我已尝试将word-break: keep-all;
添加到周围的<span>
或<p>
。我还试图用另一个<span>
或<nobr>
元素包围这些单词,但这并没有改变任何内容。
所以,我的问题是,如何让dompdf对带有格式化字符的单词保持正常word-break
规则?
答案 0 :(得分:0)
现在我已经找到了一个PHP函数,它使用dompdf来测量格式化的文本宽度,并在需要的地方添加必要的<br>
。
这不是最佳解决方案,我希望有人能找到更好的解决方案。 但是现在它适用于我,我会在这里发布,也许它会帮助别人。
它采用以下格式的HTML代码:
<span style="color: #000000; font-family:'opensans'">
<p style="font-size: 30.57465524239px;">
This Text is a test to show the different behaviour!
</p>
</span>
并以以下格式返回HTML代码:
<span style="color: #000000; font-family: opensans; font-weight: normal; font-size: 30.57px;">T</span>
<span style="color: #000000; font-family: opensans; font-weight: normal; font-size: 30.57px;">h</span>
...
<span style="color: #000000; font-family: opensans; font-weight: normal; font-size: 30.57px;">t</span>
<br>
<span style="color: #000000; font-family: opensans; font-weight: normal; font-size: 30.57px;">t</span>
...
它对我来说非常可靠,因为我的输入文本总是形成完全相同的。
它采用内联样式标记中的大多数样式信息以及周围<strong>