2014-06-07 249 views
0

我有动态html内容来创建pdf。所以我使用Dompdfdompdf - 文字换行不起作用

这是两个快照,这将有助于了解我到底想要什么。

我的HTML SHOWING喜欢这个SNAP浏览器

enter image description here

结果PDF

enter image description here

现在你可以看到我的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()); 
+0

我没有使用Dompdf,但尝试改变你的div使用最大宽度,看看你是否可以强制换行。 –

+0

尝试使用'max-width',但结果相同。 –

+0

Dompdf不是适用于精确PDF创建的库。这是一个解决方法,一个肮脏,但很有用,一个*做它domodf,因为你没有做到正确的PDF创建的方式。它可以很好地使用(只是说),但我想知道你的期望,这应该包装文本(因为实际上没有必要,它适合于一行)。 – hakre

回答

1

OK ..所以最后我得到的东西,这使得它的工作。其实我只是在寻找包装文字,但我忘了字体也是一个问题。我在我的html content中使用Arial字体,这与浏览器无关。但我只是发现dompdf本身没有包含Arial字体。每次当我去创建pdf时,它改变了字体Arial to Times new RomanTimes new RomanArial稍微更薄。这就是为什么它将第一行的第二行文本。

+0

感谢您发布此信息。我很惊讶,我没有注意到字体的差异。最后一个非常鬼鬼祟祟的问题:) –

+0

默认包含Helvetica,并且与Arial相当。您可以将字体更改为Helvetica以解决dompdf的问题,但最好总是提供回退,例如'font-family:Arial,Helvetica,sans-serif;' – BrianS

+0

@BrianS - 是的你是对的,我可以通过改变字体来解决问题。但我的要求是,我有一个动态的HTML内容。这意味着我为我的用户添加了一个tinymce编辑器,所以我需要显示用户在编辑器中选择的字体。而且我也计划在Dompdf中安装更多字体,这样我的用户就不会再遇到这个问题。 –