2014-06-07 203 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中安裝更多字體,這樣我的用戶就不會再遇到這個問題。 –