现在我已经:header => {:html => {:template => "layouts/pdf_header.html.erb"}}
设置好了。有什么我可以传递的只会在文档第一页显示标题的东西吗?
我也可以为页脚执行此操作吗?这在这里几乎更重要,因为我真的想不出任何其他方法来让页脚动态地粘在页面底部,因为它每次都会有不同的长度和不同的页面数量。
现在我已经:header => {:html => {:template => "layouts/pdf_header.html.erb"}}
设置好了。有什么我可以传递的只会在文档第一页显示标题的东西吗?
我也可以为页脚执行此操作吗?这在这里几乎更重要,因为我真的想不出任何其他方法来让页脚动态地粘在页面底部,因为它每次都会有不同的长度和不同的页面数量。
一些快速的 javascript 可以解决这个问题。遵循wkhtmltopdf上“页脚和页眉”下列出的样板文件
这些分别是您的页眉和页脚模板。要跟踪的关键变量是 URL 哈希中可用的“页面”。您的标题将如下所示:
<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>
渲染pdf时添加布局
format.pdf do
render :pdf => "my_pdf",
:layout => 'pdf
end
视图/布局/pdf.haml
%html
%head
%body
= render "layouts/header"
= yield
= render "layouts/footer"