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

时间:2014-06-25 13:36:16

标签: php html css tcpdf html2pdf

我正在使用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 :(得分: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)

编辑1:

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

说明:

 

  

 是实际引用的HTML字符引用   Unicode的字符160(以及ISO-8859-1又名Latin-1)。它是   完全不同的空间特征 - “不间断的空间”。甚至   虽然他们看起来几乎一样,但他们是不同的角色   并且您的服务器不太可能以同样的方式对待它们。

%20

  

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

编辑2:

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

$html2pdf->SetMargins(20,18);

编辑3:

在某些Adobe论坛上发现,他们建议使用sapce:

 

说明:

  

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

答案 1 :(得分:0)

几天前解决了这个问题:发现并使用了" mpdf"。这个真棒:)

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

答案 2 :(得分:0)

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