2014-07-02 128 views
13

我想將HTML頁面轉換爲A4尺寸的PDF。phantomjs將內容合併到A4頁面

page.paperSize = { 
    format: 'A4', 
    orientation: 'portrait', 
    border: '1cm' 
}; 

有沒有辦法縮放網站以適應A4的寬度?

如果我有以下HTML:

<div style="width:1500px; text-align:right;"> 
    right 1500px 
</div> 

的div右端脫落的頁面。

我打與viewportSize屬性:

page.viewportSize = { 
    width: 480, 
    height: 800 
}; 

我本來期望的是一個更大的視口寬度結果頁面的較大部分被渲染成PDF。

page.zoom 

也沒有預期的效果。

PDF文件是報告。對於專業的外觀,他們應該是A4而不是任意大小。

或者phantomjs是我的問題的錯誤工具?

我在Ubuntu 12.04.4上使用phantomjs 1.9.7版本。


編輯:

看來,這裏有三個不同的維度:

  • vieportSize這是用來渲染大小,寫入文檔
  • paperSize這是PDF格式文檔的大小
  • 然後就是屏幕尺寸。幻象總是適合紙張大小的一個屏幕的寬度。我的phantomjs版本的屏幕尺寸爲1024 x 768像素。如果視圖端口大於屏幕尺寸,則不顯示1024像素以外的所有內容。

我還沒有找到方法來改變屏幕尺寸。我發現這個http://www.whatismyscreenresolution.com/爲PDF。

+0

您可以操縱元素/頁面的寬度,使其適合文檔。問題是這是否仍然看起來不錯。你使用哪個phantomjs版本和哪個操作系統? –

+1

我寧願不必設計我的網站圍繞phantomjs的要求... – pat

+0

這裏是另一個指針:你可以[模擬頁面縮放](http://stackoverflow.com/a/9441618/1816580),但這可能會讓你的頁面變得糟糕透頂。 –

回答

2

一種解決方案是創建一個與A4大小完全相同的元素,並將其中的內容放入其中。這工作在我的機器上:

.page{ 
    position:relative; 
    border: 0px; 
    width:calc(210mm * 1.25); 
    height:calc(297mm * 1.25); 
    padding:0 
} 

請注意,我使用的縮放因子爲1.25。這是由於this issue

+0

這似乎工作得很好。我使用「評估」功能動態地執行它,並且它工作正常,例如, document.querySelector('body')。style.height =「calc(297mm * 1.25)」 – Ian