【发布时间】: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 中显示为两行。