【问题标题】:html2pdf - TCPDF : word wrap in table cell using zero width space (replaced by '?' in PDF)html2pdf - TCPDF:使用零宽度空间在表格单元格中自动换行(在 PDF 中替换为“?”)
【发布时间】:2014-08-16 02:37:42
【问题描述】:

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

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

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

我试图更改 TCPDF 类中的字体系列(找到了这个:http://www.fileformat.info/info/unicode/char/200b/fontsupport.htm 以了解该 HTML 实体使用哪种字体)但没有任何改变...

我看到其他答案告诉我要使用诸如 writeHTMLCell() 或使用 MultiCell() 而不是 Cell() 之类的 TCPDF 函数,但我无法应用这些解决方案,原因有几个,我在这里不能说。

所以我现在不知道去哪里找。

提前感谢您的帮助。

【问题讨论】:

    标签: php html css tcpdf html2pdf


    【解决方案1】:

    您应该在长数字中使用 而不是零宽度空格,以允许在 html2pdf 中的单词中换行。

    【讨论】:

    • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post。 - From Review
    • 嗨@GeraldVersluis,我将答案的措辞改为更面向解决方案,现在答案是否更容易接受?感谢您的反馈。
    • 在 td 内的文本中生成 HTTP 500
    【解决方案2】:

    几天前解决了这个问题:找到并使用了“mpdf”。这个太棒了:)

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

    【讨论】:

      【解决方案3】:

      Nicolas,您必须检查是否在不使用 BOM 的情况下保存文件。例如,在 Windows 的 Notepad++ 或 Linux 的 Geany 中,您可以轻松设置此类选项。

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

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

      $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 是 byte 32 的 URL 转义,对应普通 old 几乎任何您可能在 URL 中使用的编码中的空格。

      编辑 2:

      可能使用边距会有所帮助:

      $html2pdf->SetMargins(20,18);
      

      编辑 3:

      在一些 Adob​​e 论坛上找到,他们建议将其用于 sapce:

       
      

      解释:

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

      【讨论】:

      • 感谢您的回答。我在以 UTF-8 编码的文件中用 PHP(所以表是 PHP 字符串)创建 HTML 表格元素(我在 Mac OSX 上使用 Coda 2,我认为它总是没有 BOM(在某处读到))。尝试更改文件编码,仍然没有成功。这是我插入 ZWSP 的位置:viper-7.com/0HcgL3
      • 对于您的编辑 1:感谢您的提示,它增强了我 PDF 中的一些内容。但是“?”还在那里...我不明白  是如何工作的(甚至是等效的 )但不是​...
      •   - 牢不可破的空间。如果您输入___,您将不会在 HTML 页面上获得 3 个空间,而只会获得 1 个空间。如果你输入    - 在这种情况下你会的。只需使用 ,而不是纯空格。它应该可以解决您的问题。
      • 尝试改用 
      • 感谢您的帮助,但就像您说的,  是一个牢不可破的空间,我要插入的是“零宽度空间”(en.wikipedia.org/wiki/Zero-width_space),这样的话太长的PDF文档中的表格单元格将被剪切以正确填充单元格并避免文本离开它......我不明白,为什么html实体​被替换为“? "在我的 PDF 文档中,尽管我进行了所有编码测试......
      猜你喜欢
      • 2014-09-16
      • 2015-01-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-02
      • 1970-01-01
      • 2010-09-29
      • 2011-03-29
      • 2016-02-23
      相关资源
      最近更新 更多