我正在使用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()
,但由于我不允许使用的几个原因,我无法应用这些解决方案告诉这里。
所以我现在不知道在哪里看。
提前感谢您的帮助。
答案 0 :(得分:0)
Nicolas,您必须在不使用BOM的情况下检查是否保存了文件。例如,在用于Windows的 Notepad ++ 或用于Linux的 Geany 中,您可以轻松设置此选项。
确保将文件编码保持为UTF-8。
将根据您的 HTML2PDF 设置处理UTF-8字符:
$html2pdf = new HTML2PDF('P', 'A4', 'it', true, 'UTF-8', array(0, 0, 0, 0)
你使用空格' '
的方式 - 不是一个很好的做法,我希望问题来自这里。尝试将其替换为 
或%20
。我会选择第一个。
说明:
是实际引用的HTML字符引用 Unicode的字符160(以及ISO-8859-1又名Latin-1)。它是 完全不同的空间特征 - “不间断的空间”。甚至 虽然他们看起来几乎一样,但他们是不同的角色 并且您的服务器不太可能以同样的方式对待它们。
%20
%20
是转义为字节32的URL,对应于普通旧的 几乎任何你可能在URL中使用的编码空间。
可能使用保证金会有所帮助:
$html2pdf->SetMargins(20,18);
在某些Adobe论坛上发现,他们建议使用sapce:
 
说明:
是字符实体引用。 
是数字 实体参考。它们是相同的,除了事实 后者不需要另一个查找表来查找其实际值。
答案 1 :(得分:0)
几天前解决了这个问题:发现并使用了" mpdf"。这个真棒:)
答案 2 :(得分:0)
你应该使用< wbr>而不是长号中的零宽度空格,以允许在html2pdf中的单词内换行。