2012-01-09 194 views
34

我正在使用ruby on rails(3.1)的項目中工作。我的要求是從html內容生成pdf。所以我使用pdfkit寶石。Wkhtmltopdf單行部分剪切在頁之間的字符

在一些頁面中,單行中的字符在頁面之間部分切割。當我轉換成html使用pdfkit寶石

版本wkhtmltopdf的轉換爲PDF:wkhtmltopdf - 0.11.0 RC1

操作系統:Linux的CentOS的5.5

在圖像下方顯示部分字符在頁面之間切換。

請提出解決方案。

實施例1

enter image description here

實施例2

enter image description here

+1

什麼是您正在使用生成PDF格式的完整的命令? – 2012-01-09 10:38:28

+0

命令從pdfkit寶石產生:\t wkhtmltopdf「--page大小」,「A4」,「--margin頂」「5毫米」「--margin右」,「5毫米」「--margin底」,「5毫米」 「--margin-left」「5mm」「--encoding」「UTF-8」「--quiet」「1011284.html」「test.pdf」 – amexn 2012-01-09 11:22:18

+0

如果更改頁邊距,會發生什麼情況?它仍然切斷它? – Matt 2012-01-09 11:38:10

回答

7

根據some documentation我發現(見頁斷裂),這是一個公知的問題,並且使用CSS表明分頁符插入分頁符(假設您正在使用補丁版本的QT):

WebKit的當前分頁算法很大程度上需要 。基本上,webkit將把所有東西都渲染成一個長頁面,然後將其剪切成頁面。這意味着如果你有兩列 的文字,其中一列垂直移動了半行。然後,webkit 將切成一行,在一頁上顯示上半部分。並在另一個頁面的下半部分 。它也將打破兩個圖像和 等。如果您使用QT的補丁版本,則可以使用CSS page-break-inside屬性對此進行補救。對此問題沒有簡單的 解決方案,直到解決此問題爲止,請嘗試組織您的HTML文檔,使其包含許多行,其中的頁面可以乾淨地切割成 。

參見:http://code.google.com/p/wkhtmltopdf/issues/detail?id=9http://code.google.com/p/wkhtmltopdf/issues/detail?id=33http://code.google.com/p/wkhtmltopdf/issues/detail?id=57

+1

這不再是這種情況。 @Besi下面的答案解決了任何分頁符問題,更不用說只是獲取最新版本的'wkhtmltopdf'(0.12.2.1)。將以下內容添加到您的CSS中: 'table,img,blockquote {page-break-inside:avoid;}' – craned 2015-05-08 16:14:12

+0

@craned不正確。這個問題只是部分解決了,它仍然存在。 'page-break-inside'只會幫助您添加到的整個塊。例如,如果1個段落/塊的長度超過一頁,那麼'page-break-inside'將不起作用,並且在某些情況下文本會被剪切。它可以修復它,如果它是靜態文本,但它是一個問題,動態生成的文本,當你不知道該特定的塊將多久。所以問題仍然存在,只能部分解決。 – Neel 2016-11-06 11:20:33

+0

@Neel,在這種情況下,我會說它大部分已經解決了。至少在我的特定情況下,1段/塊不會是一個問題。坦率地說,一個段落/塊的長度永遠不會超過正常頁面的長度,但在看起來很罕見的情況下,那麼是的,那將是一個問題依然存在的地方。 – craned 2016-11-16 03:10:37

9

我只是碰到了這個,發現了一些解決了我的問題。在我的情況下,有display: inline-block; margin-bottom: -20px;的div。一旦我改變它們以阻止並重置邊緣底部,線分裂消失。因人而異。

+0

謝謝,我對「文章」元素有同樣的問題。添加'display:block'後,它的功能就像一個魅力。 – nils 2013-01-31 16:15:45

+0

@nvahalik:你添加了哪個元素顯示:block?我有一個類似的問題,出口PDF格式的表。所以這裏的問題 - http://stackoverflow.com/questions/17046385/wicked-pdf-rendering-the-last-row-across-two-pages – usha 2013-06-11 16:29:18

1

剪切文本問題是一個已知的webkit問題,它似乎開發人員發現wkhtmltopdf內的解決方案。更新到0.12.1將修復切割文本問題(如果您不想浪費時間進行編譯,可以從這裏獲取二進制文件:https://github.com/h4cc/wkhtmltopdf-amd64)。

+1

我使用0.12.2.1,這是一個更新版本的wkhtmltopdf 。我似乎仍然有這個問題,所以我不認爲這是修復(因爲我懷疑他們在新版本中重新引入了這個bug)。 – rageandqq 2015-02-09 15:46:39

+0

我確認0.12.1此刻工作 - 此後沒有玩過。 – 2015-02-10 17:09:34

+0

使用wkhtmltopdf 0.12.2.1(補丁QT),仍然是問題。 – 2017-08-04 12:22:23

4

我確實有這個問題,一個表:

enter image description here

然後我說這我的CSS:

table, img, blockquote {page-break-inside: avoid;} 

這解決了這一問題:

enter image description here

+0

這不適合我。我試着設置這個屬性在封閉td,tr和div並且行仍然被裁剪。 – 2016-04-20 10:37:44

1

在我的情況下,問題是reso通過註釋掉以下CSS LVED:

html, body { 
    overflow-x: hidden; 
} 

一般情況下,檢查是否有標籤有overflow設爲hidden並刪除它或將它設置爲visible

順便說一句,我在Windows 8使用wkhtmltopdf version 0.12.2.1