2014-04-01 67 views
2

我正在使用Ruby 1.9.3 & Rails 3.2。我使用wicked_pdf從html生成pdf。 現在,這些文檔有一個頁眉和一個頁腳,但是,除了第一頁/封面之外,我想在頁面的所有頁面上顯示頁眉和頁腳。隱藏頁眉/頁腳在PDF中

這是從我的控制器剪斷代碼:

render pdf: 'lorem',           
    page_size: 'A4',                
    layout: false,                
    orientation: @document.landscape ? 'Landscape' : 'Portrait',     
    encoding: 'UTF8',               
    no_background: false,              
    header: {html: {template: 'documents/_header'}, spacing: 35 },    
    footer: {html: {template: 'documents/_footer'}, spacing: 0 },    
    margin: {top: 30, bottom: 20, left: 0, right: 0},       
    show_as_html: params[:html].present? 

這是JS代碼,我使用隱藏標題嘗試:

function() {                 
var x=document.location.search.substring(1).split('&');      
for (var i in x) {               
    if(x[i] == "page=1"){              
    document.getElementById("header").style.display = "none";     
    document.getElementsByTagName('body')[0].style.marginTop = "-100px";       
    }                        
    }                   
}(); 

正如你可以在上面看到,在控制器操作我將頂部邊距設置爲30(像素,我認爲?)。因此,我希望頂部邊距,頁眉和頁腳不會顯示在第一頁上,而是顯示在其他文檔頁面上。

我在哪裏卡住了,當我試圖訪問該文檔的創建,當JavaScript的HTML &評估的「中間狀態」,所以,我發現調試JavaScript是很難

那麼,有沒有一種方法來實現所需的功能?

謝謝!

+0

您無法擺脫的頂部邊距,但我知道您可以的頁眉和頁腳。在正常的命令行wkhtmltopdf中,您實際上需要手動將它們設置爲出現在封面上,所以wikced必須做一些額外的添加操作,您可能需要直接聯繫問題跟蹤器(如果有的話)。 – Nenotlep

+0

您是否嘗試過使用'cover'選項?不確定邊距,但不會顯示頁眉和頁腳。 –

回答

1

我使用類似的Header JS技巧來改變頭三頁的頁眉/頁腳。同樣的可以用來隱藏這兩個元素,所以它們不會出現。 sob您無法擺脫保證金。要獲得該功能,我建議在wkhtmltopdf Github問題跟蹤器中將其添加爲建議。

<html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <script> 
     function subst() { 
     var vars = {}; 
     var valuePairs = document.location.search.substring(1).split('&'); 
     for (var i in valuePairs) { 
      var valuePair = valuePairs[i].split('=', 2); 
      vars[valuePair[0]] = decodeURIComponent(valuePair[1]); 
     } 

     var replaceClasses = [ 
      'frompage', 
      'topage', 
      'page', 
      'webpage', 
      'section', 
      'subsection', 
      'subsubsection', 
     ]; 

     for (var i in replaceClasses) { 
      var hits = document.getElementsByClassName(replaceClasses[i]); 

      // Show "Hider" on pages 3 and over 
      if (replaceClasses[i] == 'page' && vars[replaceClasses[i]] > 2) { 
       document.getElementById('hider').style.display = ""; 
      } else if (replaceClasses[i] == 'page' && vars[replaceClasses[i]] == 1) { 
       document.getElementById('hider2').style.display = ""; 
      } 

      var tmp; 
      for (var j = 0; j < hits.length; j++) { 
       tmp = vars[replaceClasses[i]]; 
       if(typeof tmp !== 'undefined' && tmp) { 
        hits[j].textContent = tmp; 
       } 
      } 
     } 
     } 
    </script> 
    </head> 
    <body onload="subst()" style="margin: 0; padding:0;"> 
     <table style="width: 100%; border-top:1pt solid black;"> 
      <tr id="hider" style="display:none;"> 
      <td></td> 
      <td class="" style="">FOO</td> 
      <td style="text-align:right">ASDASD</td> 
      </tr> 
     </table> 
     <div id="hider2" style="display:none;">BAR</div> 
    </body> 
</html> 
+0

是的,你的解決方案確實有效,但是(就像你說的)它不會消除邊距。我們通過生成兩個文檔(封面+文檔的其餘部分)並使用wkhtmltopdf和ghostscript將它們合併爲一個文件來解決此問題。 –