首页 文章

html2pdf - TCPDF:使用零宽度空间在表格单元格中自动换行(在PDF中替换为'?')

提问于
浏览
0

我正在使用html2pdf(本身使用TCPDF)将HTML表格元素转换为PDF文件 . 此表具有动态内容,这意味着其列数可以变化(有时为3,有时为11列等) .

一列包含一个非常长的数字(例如:BF8545498134587) . 我的问题是,当有很多列时,这个数字超过了列宽 . 我想把它包起来(比如在HTML / CSS中使用wrap-word) . 但是html2pdf不支持这些CSS属性 .

我找到了一个解决方案(那里:Html2pdf doesn't support word-break:break-all css),它包括在每个字符之间插入零宽度空格(HTML中为 ​ ,UTF-8为 \xE2\x80\x8B ) . 它在HTML中工作得很好,但在PDF文档中,这个零宽度空间被'?'取代 .

我试图改变TCPDF类中的font-family(发现这个:http://www.fileformat.info/info/unicode/char/200b/fontsupport.htm知道这个HTML实体使用哪种字体)但没有改变......

我看到其他答案告诉使用TCPDF函数,如 writeHTMLCell() 或使用 MultiCell() 而不是 Cell() ,但我不能在这里告诉我 .

所以我现在不知道在哪里看 .

在此先感谢您的帮助 .

3 回答

  • 0

    尼古拉斯,你必须检查你是否在保存文件而不使用BOM . 例如,在Windows的Notepad或Linux的Geany中,您可以轻松设置此选项 .

    确保将文件编码保持为UTF-8 .

    将根据您的HTML2PDF设置处理UTF-8字符:

    $html2pdf = new HTML2PDF('P', 'A4', 'it', true, 'UTF-8', array(0, 0, 0, 0)
    

    编辑1:

    你使用空间的方式 ' ' - 不是一个很好的做法,我希望问题来自这里 . 尝试用 &nbsp%20 替换它 . 我会选择第一个 .

    说明:

     

     是一个HTML字符引用,实际上是指Unicode的字符160(以及ISO-8859-1 aka Latin-1) . 它完全是一个不同的空间角色 - “不间断的空间” . 即使它们看起来几乎相同,但它们是不同的角色,您的服务器不太可能以同样的方式对待它们 .

    %20

    %20是转义为字节32的URL,它对应于普通旧空间,几乎可以在URL中使用任何编码 .

    编辑2:

    可能使用保证金会有所帮助:

    $html2pdf->SetMargins(20,18);
    

    编辑3:

    在一些Adobe论坛上找到,他们建议使用sapce:

     
    

    说明:

     是字符实体引用 . 是数字实体引用 . 它们是相同的,除了后者不需要另一个查找表来查找其实际值 .

  • 0

    几天前解决了这个问题:发现并使用了“mpdf” . 这个很棒:)

    http://www.mpdf1.com/mpdf/index.php

  • 0

    您应该在长号中使用<wbr>而不是零宽度空格,以允许html2pdf中的单词内的换行符 .

相关问题