2012-11-14 58 views
1

現在我有:header => {:html => {:template => "layouts/pdf_header.html.erb"}}設置。有什麼我可以通過,只會顯示在文檔的第一頁上的標題?wicked_pdf:只能在最後一頁顯示頁眉和頁腳纔可以顯示頁眉?

我可以爲頁腳做這個嗎?在這裏幾乎更重要,因爲我不能想出任何其他方式來讓頁腳動態地粘貼到頁面的底部,因爲每次頁面的長度和頁數都不相同。

+0

也許如果你沒有提供標題,但在第一頁上執行'render:partial =>'/ path/to/my/header''? – MrYoshiji

+0

@MrYoshiji我意識到我可以做到這一點,但我希望不必在每個頁面中都包含頁眉和頁腳部分,這些頁面將被渲染爲pdf。除了pdf之外,我還使用其他內容的視圖,所以不希望在那裏粘貼邏輯。 – thatmiddleway

回答

3

一些快速的JavaScript可以照顧到這一點。請按照「頁腳和頁眉」下的樣板文件打印wkhtmltopdf

這些是您的頁眉和頁腳模板。 跟蹤的關鍵變量是可從URL哈希獲得的'page'。 你的頭看起來是這樣的:

<div class="headerContent" style="display:none"> 
    ...my awesome html 
    <hr /> 
</div> 
<script type="text/javascript"> 
    var headerCheck = function() { 
     var x=document.location.search.substring(1).split('&'); 
     for (var i in x) { 
     if(x[i] == "page=1") 
      document.getElementsByClassName("headerContent")[0].style.display = "block"; 
     } 
    }(); 
</script> 

同樣爲您的頁腳代碼將是這個樣子:

<div class="footerContent" style="display: none"> 
    ...awesome footer html 
</div> 
<script type="text/javascript"> 
    var footerCheck = function() { 
     var x=document.location.search.substring(1).split('&'); 
     var currentPage = 1; 
     for (var i in x) { 
     var z=x[i].split('=',2); 
     if(z[0] == "page") 
      currentPage = unescape(z[1]); 
     if(z[0] == "topage" && currentPage == unescape(z[1])) 
      document.getElementsByClassName("footerContent")[0].style.display = "block"; 
     } 
    }(); 
</script> 
+0

附加信息:https://gist.github.com/shamithc/812db92bc78d8525304a –

+0

這是偉大的,有點修改,它將工作爲偶數/奇數頁呈現不同的頁眉/頁腳:) – unmultimedio

0

添加布局渲染PDF

format.pdf do 
    render :pdf => "my_pdf", 
    :layout => 'pdf 
end 

的意見/佈局時/pdf.haml

%html 
    %head 

    %body 
    = render "layouts/header" 
    = yield 
    = render "layouts/footer"