您可以使用以下命令初始化文档创建
Document pdfDoc = new Document(new Rectangle(288f, 144f), 10f, 10f, 30f, 30f);
这尤其意味着您要在左侧和右侧保留 10 个单位,在顶部和底部保留 30 个单位作为保证金。整个剩余的内部空间可以由自动内容布局机制使用。
因此,标题材料必须绘制在该边距区域中,否则它可能与页面内容重叠。
另一方面,您的代码创建一个包含两行的段落,第一行设置为 20 单位字体,第二行设置为 10 单位字体,并将其包装在表格中。因此,该表格的高度超过 30 个单位(这两行的组合高度加上一些行间空间以及可能的一些表格单元格边距开销)。然后就画成这样了
headerTbl.WriteSelectedRows(0, -1, 0, (doc.PageSize.Height - 10), writer.DirectContent);
因此它从页面顶部下方 10 个单位开始。不过,您将顶页边距定义为仅为 30。因此,标题和页面内容在超过 10 个单位高的条带中重叠。
因此,我建议您将顶部边距增加 20 (十多个 plus 看起来有些距离):
Document pdfDoc = new Document(new Rectangle(288f, 144f), 10f, 10f, 50f, 30f);
第一页看起来没问题的原因很可能是您的 HTML 以一些空白区域开头(至少直到HTMLWorker
被关注到)。
附加说明:
添加内容于OnStartPage
感到气馁。你应该使用OnEndPage
对于内容、页眉、页脚、背景图像等的所有此类操作
HTMLWorker
已弃用。你应该使用XMLWorker
.
是否有理由不从一开始就设置最终页面大小(在new Document
)而是分开?