我正在使用最新版本的 iTextSharp (5.4.3)。在定义一个更简单的页眉时,如果文档包含不适合一页的大表格,则页眉会失去垂直对齐。显示大表格的第一页上的对齐方式很好,但在后续页面上,标题会进一步向下显示并覆盖表格。
我的代码如下。很高兴获得解决方法或想法可能出了什么问题。
顺便说一句:当添加导致自动分页符的段落时,我得到了预期的页眉。
这是我的测试代码:
const string pdfFileName = "iTestSharp Table Split Test.pdf";
using (var pdfFileStream = File.Create(pdfFileName))
{
using (Document document = new Document(PageSize.A4, 25, 25, 30, 30))
{
PdfWriter pdfWriter = PdfWriter.GetInstance(document, pdfFileStream);
pdfWriter.PageEvent = new PageEventHelper();
document.Open();
// When adding a large table the page heading for pages automatically created
// by the table are out of alignment
const int numberOfRows = 50;
PdfPTable table = new PdfPTable(1)
{
TotalWidth = document.PageSize.Width - document.LeftMargin - document.RightMargin,
LockedWidth = true
};
for (int i = 1; i <= numberOfRows; i++)
{
table.AddCell(i.ToString());
}
document.Add(table);
// Adding more paragraphs than fit on one page creates page headers as expected
document.NewPage();
for (int i = 1; i <= numberOfRows; i++)
{
document.Add(new Paragraph("Line " + i));
}
}
}
这是(非常简单的)PageEventHelper 类:
public class PageEventHelper : PdfPageEventHelper
{
public override void OnStartPage(PdfWriter writer, Document document)
{
base.OnStartPage(writer, document); // Does actually nothing
document.Add(new Paragraph("Page Heading"));
}
}
结果第 1 页:
结果第 2 页: 编辑:
LineSeparator
PdfPageEventHelper.OnStartPage
只要添加的 s不在 a 中,它们就会正确显示Chunk
。Chunk
并且Paragraph
对象不对齐(即使 aLineSeparator
在它们之前和/或之后)。看起来段落已正确添加(行在标题中),但只有其中的文本打印在错误的位置。