2010-02-05 34 views
3

alt text http://i45.tinypic.com/j6tmdl.png文本四溢表與DOMPDF

生成PDF時,我產生了一些PDF文件與DOMPDF,其中包含在一個表中的一些文字和圖片。但是,如果文本中包含大量URL,則URL會一直包裝到行尾。所有的文本和URL都被封裝在一個固定寬度和高度的div中,但URL仍然溢出。

在瀏覽器中呈現的相同HTML似乎沒問題。

有什麼想法?

回答

2

我相信DOMPDF正在使用相當有限的字符集來確定如何分割一條線。現在它只能在短劃線或空間分割線。因此,您樣本中的URL就會超過容器的寬度。 DOMPDF只是不知道如何分解它。

與DOMPDF v0.6.0,你可以風格你的文字,這樣的話在任何字符打破,例如:

<span style="word-wrap: break-word;">http://example.com/really/long/.../url</span> 

它並不像打破一個特定的字符(例如/)作爲清潔開始。如果你很自在地竊聽代碼,你可以更加優雅地解決問題。打開文本重排列類並修改拆分該行的正則表達式。正則表達式如下所示:

preg_split('/([\s-]+)/u', $text, -1, PREG_SPLIT_DELIM_CAPTURE) 

修改代碼以包括任何額外的字符,你認爲可以使一個良好的換行符。您可能,例如,在向上突破的URL,&,甚至/如果你希望在你的文字很長的URL:

$words = preg_split('/([\s-\?\&\/]+)/u', $text, -1, PREG_SPLIT_DELIM_CAPTURE); 

在DOMPDF 0.6.1正則表達式可以DOMPDF找到/包括/text_frame_reflower.cls.php第86和371行。在即將到來的0.7.0中,RegEx可以在dompdf/src/FrameReflower/Text.php第106和402行中找到。

修改RegEx的缺點是,會影響所有文字(不只是網址)。

+0

替換下面的行

$words = array_flip(preg_split("/[\s-]+/u",$str, -1, PREG_SPLIT_DELIM_CAPTURE)); 

你回答非常有用 – user367134 2011-01-06 11:50:07

+0

[匿名道具](http: //stackoverflow.com/a/32864169/264628)的額外RegEx位置。 – BrianS 2015-09-30 13:47:36

1

打開文件DOMPDF /包括/ text_frame_reflower.cls.php和細看起來像行:

$words = preg_split('/([\s-]+)/u', $text, -1, PREG_SPLIT_DELIM_CAPTURE); 

修改正則表達式包含任何額外的字符,你認爲會爲一個好越線。例如,您可能會破壞上的URL?&,或者如果你希望在你的文字很長的URL甚至/

$words = preg_split('/([\s-\?\&\/]+)/u', $text, -1, PREG_SPLIT_DELIM_CAPTURE); 

還與

$words = array_flip(preg_split('/([\s-\?\&\/]+)/u', $str, -1, PREG_SPLIT_DELIM_CAPTURE)); 
+0

不知道你的編輯被拒絕的原因。看起來像一個可以接受的修改。 – BrianS 2015-09-30 13:26:03