wicked_pdf: Is it possible to have the header only show on the first page & the footer only on the last?

前端 未结 2 516
慢半拍i
慢半拍i 2020-12-18 14:37

Right now I have :header => {:html => {:template => \"layouts/pdf_header.html.erb\"}} setting things up. Is there something I can pass in that will on

相关标签:
2条回答
  • 2020-12-18 15:04

    Some quick javascript can take care of this. Follow the boilerplate laid out under 'Footers And Headers' on wkhtmltopdf

    These are your header and footer templates respectively. The key variable to keep track of is 'page' which is available from URL hash. Your header will look something like this:

    <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>
    

    Similarly for your footer the code will look something like this:

    <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 讨论(0)
  • 2020-12-18 15:11

    Add layout when rendering pdf

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

    views/layouts/pdf.haml

    %html
      %head
    
      %body
        = render "layouts/header"
        = yield
        = render "layouts/footer"
    
    0 讨论(0)
提交回复
热议问题