HTML2PDF不支持的字符:打破,所有的CSS(Html2pdf doesn't supp

2019-08-01 04:44发布

海大家我使用HTML2PDF,它不支持文字休息:休息,所有的CSS什么想法?

   <td style="width:30%;word-break:break-all ;">
      testtestetstetstetstetstettstetstetstetstetstetstetstetstetstetstets
    </td>

输出概率取上述像字符串的长度尺寸的30%宽度

输出概率:测试测试密封密封密封紧密地密封密封密封密封密封密封密封密封密封的Tet

我想输出:

testtestetstetstetstetstettstets
tetstetstetstetstetstetstetstets

Answer 1:

嗯,这是复杂的。 你的TestString太长,但它不是由多个单词。 这意味着,字突破将无法工作,因为没有任何言语来打破。 显然,这很可能只是一个例子,在这种情况下,它可能是HTML2PDF只是不支持相对宽度和word-break ,所以你可以尝试有一个绝对的宽度和word-break

这就是说,这里是我知道会一起想: 换行的PHP。 所以,与其echo $yourvar; 你可以使用echo wordwrap($yourvar, 75, "\n", true)代替,这将始终把绳剪断,哪怕它只是一个很长的字符串。 这需要一些时间摆弄得到的字符数与您所寻找的宽度相同,但是它会奏效。

<?php
$foo = str_repeat('test',12);
echo wordwrap($foo, 20, '<br />', true);

输出:

testtesttesttesttest
testtesttesttesttest
testtest


Answer 2:

试试这个;

<td style="width:30%; word-wrap:break-word;">
   testtestetstetstetstetstettstetstetstetstetstetstetstetstetstetstets
</td>

没有word-break它是word-wrap ;



Answer 3:

如果你想长字符串的边界容器内始终包裹,我认为你应该能够通过插入做到这一点零宽空格字符 ( &#8203;\xe2\x80\x8b )的orignial字符串的每个字母之间 。 这将有捆绑的效果,就好像每一个角色是自己的话,但没有显示的空间给最终用户。 这可能会导致你对最终产品的文本搜索索引或麻烦,但它应该从审美的角度来看可靠地完成任务。

从而:

testtestetstetstetstetstettstetstetstetstetstetstetstetstetstetstets

t&#8203;e&#8203;s&#8203;t&#8203;t&#8203;e&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s

(其显示:“T E式T吨(E S)T E吨式T(E T)式T(E T)式T(E T)小号T E T T [式T(E T)式T(E T)式T(E T)式T(E T)式T(E T)小号T E吨式T(E T)式T(E T)式T(E T)式T(E T)的“)

所以,如果你把它包起来就恰好换到其容器的边界。 这里是作为一个例子它的小提琴

只要写一个PHP脚本循环尽管字符串和插入的空间:

$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]."&#8203;";
}
echo $new_string

这是一个特别好的解决方案,因为不像wordwrap()它会自动对非固定宽度的字体调整(这是字体的基本上99%实际使用)。

同样,如果你需要生成的PDF可搜索,这是不是一个好方法,但它会使它看起来像你想它。



Answer 4:

在您的测试字突破将无法工作,因为这个词打破只在特定的句子中词与词之间的作品。 所以哟可以使用多字的句子,然后用分词尝试



Answer 5:

你只需要使用SUBSTR功能在你的代码。 我把一个例子这一点。 首先把你的输出变量。

$get_value = "testtestetstetstetstetstettstetstetstet";
$first = substr("$get_value",0,3);
$second = substr("$get_value",4,7);

等等。



Answer 6:

您可以使用"\r\n"打印换行符。 请确定使用双引号使用它。 如果你的字符串是在变量,那么你需要使用字数统计功能,并追加此字符串。 您还可以使用PHP_EOL避免平台的依赖。



Answer 7:

HTML2PDF不支持此字突破:突破,所有的CSS

参考: http://www.yaronet.com/en/posts.php?sl=&h=0&s=151321#0



Answer 8:

您可以使用此方法。

<?php
$get_value = "testtestetstetstetstetstettstetstetstet";
$first = substr("$get_value",0,3);
$second = substr("$get_value",4,7);
$third = substr("$get_value",8,11);
?>


Answer 9:

我想补充的与HTML2PDF和表自己的经验点点。

我用这个解决方案产生含有充满发货确认(产品清单)表中的PDF。 这些列表可能包含上千种产品(行)。

我遇到的格式和长串细胞中的一个问题。 第一个问题是,该表是越来越太广,即使我设置表格的宽度为100%和头部的宽度( <th> )列(HTML2PDF不支持<colgroup>所以我不能在全球范围定义它) -一些列出炉可见区域。 我用wordwrap()<br />作为分隔符来分解长字符串看起来像它的工作。 不幸的是,事实证明,如果在第一个和最后一个行整个表被预先计划 ,并与空页附加这样长的字符串。 不是一个真正的管不着,但并不好看无论是。 最终溶液是(适用于该宽度可以外展的可见区域表):

  • 设定表的固定宽度和以像素为单位的每一
    • 为A4尺寸的信,我使用550像素的默认页边距的总宽度,但你必须围绕一个小玩到分发列之间的宽度
  • wordwrap使用空的空间或&#8203; / \xe2\x80\x8b作为分隔符

对于您想传播的可视面积的100%,小表宽度它是确定使用中所表达的宽度%



Answer 10:

我觉得这个功能是一瘸一拐的解决方案。

function String2PDFString($string,$Length)
    {
    $Arry=explode(" ",$string);
    foreach($Arry as $Line)
        {
        if(strlen($Line)>$Length)
            $NewString.=wordwrap ($Line,$Length," ",true);
        else
            $NewString.=" ".$Line;
        }
    return $NewString;
    }


文章来源: Html2pdf doesn't support word-break:break-all css