2012-12-12 81 views
11

我已經有一個PDF生成的問題,目前我的系統使用dompdf將HTML轉換爲PDF,這一切工作正常。但是,如果用戶插入大於A4頁面的圖像,則PDF會嚴重歪斜,大圖像下方的所有內容會聚攏在一起或根本不顯示。dompdf圖像溢出問題

這裏有兩個PDF文件,顯示問題的例子

這一次是罰款

https://dl.dropbox.com/u/65878041/OK.pdf

這一個你可以與第一圖像是比A4頁的所有內容大見當它應該與前一個相同時,下面的內容會被搞砸。

https://dl.dropbox.com/u/65878041/Issue.pdf

我會非常喜歡做的是打破了圖像分爲部分和跨越它跨越多頁的要求。就像這個LaTeX solution完成的一樣。用dompdf做這件事有沒有可能?或任何其他PHP庫的HTML到PDF?

我已經研究過它自己,顯然如果它的大於A4頁面,我可以將圖像切碎。但問題出在那種需要知道頁面上是否存在文本的方法,或者是類似的東西,所以它不那麼簡單。

謝謝大家提前。任何有識之士將非常感激。

+2

這是不是一個直接的解決方案,但你可以考慮切換到另一個基於HTML的PDF生成器。我使用webkit的'wkhtmltopdf'祝你好運。這意味着您可以使用CSS甚至Javascript來處理正在呈現的頁面內容。例如,您可以根據預期的視口測量圖像,然後根據需要調整大小。我不會保證調整大小的質量,當然... – Charles

+0

什麼是DOMPDF版本?我有一個類似的問題,最新的測試版爲我做了竅門。 –

+0

這是0.6.0 beta 3這是最新的,但我會嘗試從github拉絕對最新版本。 –

回答

4

這將我更多,如果你發佈你有幫助的HTML和CSS ... 得到記住兩兩件事:

選項#1

嘗試來包裝你附加DIV中的圖像並明確設置寬度和溢出規則。

選項#2

我之前的dompdf但發現wkhtmltopdf後的大風扇永不回頭。 wkhtmltopdf是一款讓工作做得對的驚人工具。要嘗試此解決方案做到以下幾點:從project home page

  1. 下載靜態二進制,它是專用的,所以選擇一個正確的架構...你可以同時下載;在運行時檢測體系結構並加載適當的二進制文件
  2. 將文件放置在項目可訪問的某個目錄中,例如
    /path/to/my/proj/bin/wkhtmltopdf
  3. 運行你的腳本和生成html文件;它保存到某些tmp文件
    file_put_contents('/tmp/myfile.html', $html);
  4. 運行轉換命令
    shell_exec('/path/to/my/proj/bin/wkhtmltopdf /tmp/myfile.html /tmp/myfile.pdf')
  5. 獲取生成的PDF,變化的響應頭和服務器的文件的內容:
    header('Content-Type: application/pdf');

    echo file_get_contents('/tmp/myfile.pdf');

+0

交換到wkhtmltopdf的伎倆。感謝Alex。 –

1

我不知道如何顯示圖像,但可以告訴dompdf在某個元素之後或之前拆分頁面。例如:

<div style='page-break-after:always;'> 
    <img src="PATH_TO_IMAGE" /> 
</div> 
+0

當頁面會打破?如果包含100個圖像。如果溢出div或溢出A4紙,我需要打破。 – 151291