2009-10-12 81 views
9

我有一個寬的頁面(比如說3000px左右),通常是可滾動的水平圖。html在幾張A4紙上打印很寬的頁面

在打印版本中,我渲染整個圖形(實際上我有一個單獨的JAvascript/HTML代碼用於打印版本),因此屏幕上需要說明三個A4寬度(風景)。

在這種situtation我看到(在這種情況下FF3)的瀏覽器不允許我打印幾紙寬頁(基於打印預覽)。

似乎打印整個文檔的唯一方法是讓用戶將縮放級別設置爲30%,然後將整個圖形放在單個A4上。

我必須失去一些CSS指令存在,但無法在任何地方google一下。

會欣賞指針/想法。

謝謝。在多個頁面像這樣

+0

Thankyou,我一直堅信一段時間沒有人關心HTML打印如何 – 2009-10-12 23:00:15

+0

是PDF的選項? – 2009-10-12 23:01:00

+0

我不假設在FF3中有自動的屏幕到pdf的實現... 我可能在服務器端繪製PDF,這本身就很糟糕。 – gnosis 2009-10-12 23:21:24

回答

0

打印HTML不是一件很好的事必須做

你可能想起來打入頁面大小的塊圖形(例如,對於每一個頁面一個div),所以當他們旁邊浮動每個其他圖表看起來是按需要的。然後使用CSS page-break-beforepage-break-after確保打印的頁面正確分解,並且不會丟失頁面旁邊的任何內容。

還要確保爲您使用的打印版本的CSS的media類型指定打印。

0

您無法控制如何以任何實際方式打印HTML --HTML/CSS/JS無法訪問打印驅動程序或瀏覽器打印設置。 唯一的選擇是將您的可打印輸出轉換爲PDF(或一些其他以打印爲中心的格式)並代之。

2

您可以向打印樣式表添加旋轉轉換。作爲一個長期臺的部分解決方案現在將過寬......

.rotated-when-printed { 
    -moz-transform:rotate(90deg); 
    -webkit-transform:rotate(90deg); 
    -o-transform:rotate(90deg); 
    filter:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand',M11=6.123233995736766e-17,M12=-1,M21=1,M22=6.123233995736766e-17) 
} 

<!-- some very wide table --> 
<table class="rotated-when-printed"> 
    ... 
</table> 
1

(我對這個問題的一個以前的答案被刪除,不知道爲什麼我再試)

很長一段時間我在這個問題上尋找了一個基於CSS的解決方案,我認爲不可能通過CSS來實現HTML表格的垂直分頁符(至少不是HTML表格數據在HTML TABLE標記中的分頁符,但它應該可以用表格數據以DIV組織)。

我認爲唯一的解決辦法是讓JavaScript做分裂。 加載頁面時,javascript可以檢查表是否比所需的頁面寬度更寬:在這種情況下,可以動態創建一個新表並僅複製超出允許寬度的列,然後從原始表中刪除它們表。 所有的過程都有點棘手,但結果令人滿意。

也可以讓javascript代碼僅用於打印,而不用於屏幕上顯示的表格:頁面上的打印按鈕可以安排運行服務器端代碼,例如php,它可以生成pdf認爲圖書館wkhtmltopdf,傳遞給它的HTML頁面在哪裏是表,包括JavaScript代碼。實際上,wkhtmltopdf會生成一個模擬瀏覽器的pdf,並且javasript代碼將被正確執行。

現在,這個javascrpt庫已經存在,我寫它並且工作得很好(至少對於我的需要),並且它可以在Internet上免費獲得:我不想鏈接它,因爲已經刪除了以前的答案,我不知道是否是這個原因。但如果有人有興趣,你可以在評論中提問,我會給它。

相關問題