wkhtmltopdf页眉顶部的标题高度和定位标题
在我的应用程序中,允许用户定义自己的页眉和页边空白进行打印。 对于报头,用户可以提供以下两个字段:wkhtmltopdf页眉顶部的标题高度和定位标题
- (一)页上边距在毫米(从页面顶部)
- (b)中页眉边距以毫米(从顶部页)
的字段的(a)和(b)作为显示在下面的图中:
例如,如果用户为10毫米提供了(a)和(b)为100mm时,那么“标题区域”的高度将是90mm。
现在标题内的内容需要在标题区域的顶部对齐。
有没有办法设置标题区域的高度,并在这个标题区域内的顶部对齐内容。
目前,我做为报头HTML选项如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<style type="text/css">
body
{
border:0;
margin: 0;
padding: 0;
height: 90mm; //in actual program, this is set dynamically in PHP
}
</style>
<script type="text/javascript">
function subst()
{
//process the GET parameters and accordingly set the Header Region text info
}
</script>
</head>
<body onload="subst()">
<div>
//text
</div>
</body>
</html>
的边距选项被设置为100毫米。
我已经尝试设置垂直对齐:顶部为身体 CSS,但同样没有工作。
我实现的最终输出似乎没有标题区域内容在顶部或中部垂直对齐。它位于标题区域中间的某处。
编辑:此修复程序似乎只有当wkhtmltopdf安装在基于Windows的系统是必要的。
大量的试验和错误之后,我观察到下面的逻辑似乎是工作:
- HTML头的体元素需要被设置为一个高度的1.33倍实际标题区域的高度。 (为什么?我不知道,这可能是由于某种QT或wkhtmltopdf渲染方式引起的,但它实际上适用于所有情况,无论标题区域内容中的行如何)。
- 立即(以及只)身体的子元素被设置为100%的高度,并隐藏HTML头溢出内容
所以,改变后的代码(上面的例子)看起来像这样:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<style type="text/css">
body
{
border:0;
margin: 0;
padding: 0;
height: 120mm;
/*
In the actual program this height is calculated dynamically in PHP as
($headerMargin - $topMargin) * 1.33
*/
}
#master-div
{
overflow: hidden;
height: 100%;
}
</style>
<script type="text/javascript">
function subst()
{
//process the GET parameters and accordingly set the Header Region text info
}
</script>
</head>
<body onload="subst()">
<div id="master-div">
//The actual content goes here
</div>
</body>
</html>
我已经检查此为atleast 7〜8不同的纸张大小(包括设置定制页面宽度和页面高度。还用不同的标题区域内容大小(从1行到20行)进行检查。
唯一的问题是,只有页眉边距(b)/页边距小于或等于纸高度的三分之一时,标题区高度的1.33倍的逻辑似乎才起作用。如果边距高度超出了边界高度增加时内容被剪切的程度。但是,我想,通常不需要拥有如此大的标题高度。
我能够对付使用你提供的知识的PDF,但我还是有点困惑的利润和定位。此外,我的PDF已经生成空白页面(只有标题),这导致我相信内容推动下一页的东西。 – marquito 2013-09-05 21:04:52
你能详细说明你的问题吗?另请注意,只有在Windows计算机上运行wkhtmltopdf时,问题和解决方案才会生效。如果最后的主机将在Linux机器上完成,则不会发生上述问题。在这种情况下(在Windows上进行开发并在Linux上进行托管),您必须单独处理两种情况,即针对每种情况都有不同的PHP/CSS。至少这是我所做的。 – mohitp 2013-09-06 06:33:17
我正在使用Windows,因为我们的解决方案是基于ASP.NET的。尽管我还没有弄清楚数字(我可以在经过一些试验和错误之后做到这一点),但我仍然能够管理正确的标题。使用以下命令http://bit.ly/1acl3DW这是从ASP.NET产生:你可以在这里看到一个PDF例如http://pastebin.com/KdMCv8VB – marquito 2013-09-06 13:26:19
尝试使用用于'spacing'的wkhtmltopdf标志除了'余量-top' – Unixmonkey 2013-03-08 19:11:09
@Unixmonkey:头标区的内容不具有固定的大小。用户可以*提供任何不。标题内容的行数。所以间距不能预先固定。另外,我之前没有提到,即使纸张大小是用户定义的。 – mohitp 2013-03-08 19:28:40