iTextSharp页眉与文档内容重叠问题排查求助
页眉与内容表格重叠的原因分析
页眉绘制位置侵入内容区域
你在OnOpenDocument中绘制页眉的代码:header.WriteSelectedRows(0, -1, document.Left+20, writer.PageSize.GetTop(document.TopMargin + 10), writer.DirectContent);这里的Y坐标计算逻辑错误:iText中,文档内容区域的顶部边界是
writer.PageSize.Top - document.TopMargin,内容会从这个位置向下(Y值减小的方向)排版。而writer.PageSize.GetTop(document.TopMargin + 10)等价于writer.PageSize.Top - (document.TopMargin +10),这个位置比内容区域顶部更靠下(Y值更小),直接进入了内容的可编辑区域。当你通过document.Add(table)添加内容时,内容从内容区域顶部开始向下排列,自然会和页眉重叠。错误选择了页眉绘制的事件方法
OnOpenDocument仅在文档首次打开时执行一次,只有第一页会生成页眉,根本无法实现「每页固定页眉」的需求。正确的做法是将页眉绘制逻辑移至OnStartPage方法,该方法会在每一页创建时触发,确保每页都能生成页眉。上边距未考虑页眉表格的实际高度
你设置的文档上边距为35f(doc.SetMargins(15f, 15f, 35f, 35f);),如果页眉表格的实际高度超过35f,即使调整了绘制位置,内容区域的顶部空间也不足以容纳页眉,依然会出现重叠。
内容的提问来源于stack exchange,提问作者Dnyati
相关产品推荐
相关产品推荐

