2014-03-05 96 views
0

我正在使用wkhtmltopdf生成一個用於打印出HTML代碼的.pdf文件。我的問題是,當我生成pdf時,HTML元素會移動並且不會保持原來的位置。wkhtmltopdf - 元素不保留原始位置

我對生成的PDF的代碼是:

 $address = 'http://www.example.com/sendpdf/' . $card . '/'; 

     $snappy = new Pdf('/usr/bin/wkhtmltopdf'); 
     $snappy->setOption('lowquality', null); 
     $snappy->setOption('dpi', 100); 
     $snappy->setOption('disable-smart-shrinking', true); 
     $snappy->setOption('page-width', 127); 
     $snappy->setOption('page-height', 178); 
     $snappy->setOption('margin-left', 0); 
     $snappy->setOption('margin-top', 0); 
     $snappy->setOption('margin-right', 0); 
     $snappy->setOption('margin-bottom', 0); 
     $snappy->setOption('stop-slow-scripts', null); 
     $snappy->setOption('enable-javascript', true); 

     $pdf_content = array($card, $snappy->getOutput($address)); 

我也試着看HTML版本既火狐,Safari和Chrome。在所有版本中,元素似乎都被正確定位。它似乎只是PDF版本中的一個問題。

任何人有任何想法如何解決這個問題?

+0

有時候會發生這種情況。你所能做的就是製作一個pdf版本的前期版本,並將其更多地轉換爲下一個版本,以便在轉換爲pdf時正確顯示。 – Peon

+0

但正如你所看到的,並不是所有元素都被推下來。例如,名稱「Ashlyn」與兩個版本的背景氣泡距離相同。所以很難自動檢測哪些位置不同。 –

+0

不幸的是,這發生。你應該重新檢查你的元素如何定位。像「top」和「position」這樣的一些元素可能會顯示錯誤。要創建PDF,您應該使用另一個CSS重新編寫佈局以匹配PDF。 – Peon

回答

0

經過大量的調整和改進這個應用程序,使它像素完美的HTML,我發現了多種有助於解決這個問題的東西。我希望你們中的一些人可以使用它。

  1. 使用white-space: nowrap;。出於某種原因,我在PDF上獲得了在HTML中沒有任何換行符的文本的換行符。我做了很多這方面的測試,我找不到一個好的模式來重新創建這個問題,但似乎是在PDF中,它認爲div在HTML中的寬度較小,然後將內容壓縮到第二排。所以我用白色空間解決了這個問題:nowrap;

  2. 很顯然,PDF和您希望使用的HTML具有完全相同的CSS樣式非常重要。但要確保其他東西如<meta name="viewport">是相同的。

相關問題