【问题标题】:dompdf - text wrap is not workingdompdf - 文本换行不起作用
【发布时间】:2014-06-07 08:57:48
【问题描述】:

我有创建 pdf 的动态 html 内容。所以我使用Dompdf

这里有两个快照可以帮助理解我到底想要什么。

我的 HTML 在浏览器中显示这样的快照

结果 PDF

现在你可以看到我的 html 文本和 pdf 文本了。 pdf文本应该和html一样。

我不知道为什么会这样。并且不用担心文本字体。但在我的 html 文本中,文本显示为两行,但在 pdf 中显示为一行。我也使用了word-wrap:break-word; css,但我认为Dompdf 不支持它。

这是我的代码:

<?php
require_once '/path/to/dompdf/dompdf_config.inc.php';

$dir          = __DIR__ . '/../public';
$pdfDirectory = $dir . '/testing-pdf';
$pdfFilename  = $pdfDirectory  . '/output.pdf';

$buffer = <<<HTML
<style>@page {
    margin: 36 50;
} </style>
<div style='width:400px;height:300px;background:#C0C0C0;position:relative;'>
    <div style='width:200px;height:100px;position:absolute;top:100px; left:90px;'>
        <p style='text-align:center;padding:0px;margin:2px 0;font-size:24pt;font-family:arial; word-wrap:break-word; border:1px solid black;'>
            Abcd abc ab a
        </p>
    </div>
</div>
HTML;

$dompdf = new DOMPDF();
$dompdf->load_html($buffer);
$dompdf->set_paper(array(0, 0, 400, 300), "portrait");
$dompdf->render();

file_put_contents($pdfFilename, $dompdf->output());

【问题讨论】:

  • 我没用过Dompdf,但是试试把你的div改成max-width看看能不能强制换行。
  • 尝试使用max-width,但结果相同..
  • Dompdf 不是一个适合精确 PDF 创建的库。这是一种解决方法,一种肮脏但有效的方法,一种domodf 因为你没有正确地做 PDF 创建方式。它可以很好地使用(只是说),但是我想知道你的期望这应该包含文本(因为实际上没有必要,它很适合一行)。
  • @ShailParas:这并不是在抨击DOMPdf,但是,您不能指望像您的浏览器(用于HTML 显示)这样专业设计和开发的产品与DOMPdf 一样。这只是我想强调的。尤其是 PDF 输出似乎适合我。我不认为它是“错误的”,它看起来非常适合该文本。您可能希望该框至少为两行高度(独立于文本换行)?
  • 是的。这就是我要找的。我想如果文本显示在两行中,那么它也应该在 pdf 中显示为两行。

标签: php html pdf dompdf


【解决方案1】:

好的..所以最后我得到了一些使它起作用的东西。实际上我只是在寻找换行文本,但我忘记了字体也是一个问题。我在我的html content 中使用Arial 字体,这对浏览器来说没问题。但我刚刚发现dompdf 本身并没有包含Arial 字体。每次我去创建 pdf 时,它都会更改字体 Arial to Times new RomanTimes new RomanArial 要薄一点。这就是为什么它将第二行文本与第一行一起使用。

【讨论】:

  • 感谢您发布此信息。我很惊讶我没有注意到字体差异。最后一个非常偷偷摸摸的问题:)
  • Helvetica 默认包含在内,与 Arial 相当。您可以将字体更改为 Helvetica 以解决 dompdf 的问题,但最好始终提供后备,例如font-family: Arial, Helvetica, sans-serif;
  • @BrianS - 是的,你是对的,我可以通过更改字体来解决问题。但我的要求是我有一个动态的 html 内容。这意味着我为我的用户添加了一个 tinymce 编辑器,所以我需要显示用户在编辑器中选择的字体。我还计划在 Dompdf 中安装更多字体,这样我的用户就不会再遇到这个问题了。
  • 我现在看到了您的问题。安装可供用户使用的字体绝对是个好主意。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-01
  • 2011-06-27
  • 1970-01-01
  • 2021-10-16
  • 1970-01-01
  • 2017-06-20
  • 1970-01-01
相关资源
最近更新 更多