itextsharp columntext与表重叠

时间:2013-09-27 17:24:21

标签: c# itextsharp

我在pdftable之前有一个columntext,如何阻止两个元素重叠?

ColumnText addressHeader = new ColumnText(cb);
Phrase addressText = new Phrase("Lorem ipsum");
addressHeader.SetSimpleColumn(addressText, 34, 750, 580, 317, 15, Element.ALIGN_LEFT);
addressHeader.FollowingIndent = 10f;
addressHeader.Go();
PdfPTable contactTable = new PdfPTable(2);
float[] contactWidths = new float[] { 1f, 1f };
contactTable.TotalWidth = 400f;
contactTable.LockedWidth = true;
contactTable.SpacingBefore = 10f;
contactTable.SetWidths(contactWidths);
PdfPCell contactInfoCell = new PdfPCell();
contactInfoCell.AddElement(new Chunk("Date Requested));
doc.Add(contactTable);

1 个答案:

答案 0 :(得分:3)

ColumnText.SetSimpleColumn()用于绝对定位事物,而Document.Add()方法用于相对定位事物。绝对和相对的对象彼此不了解,这只是他们的本性。

因此,如果你可以使用相对定位,那么摆脱ColumnText并正常地将Phrase添加到文档中。

如果你需要绝对定位,那么你也需要绝对定位桌子。这可以使用表的WriteSelectedRows()方法来完成,您可以在其中指出要写入的行数以及开始绘制的左上角是什么。

第三种可能的选择是,如果您使用ColumnText.SetSimpleColumn()绘制页眉,则只需更改文档的边距即可。你仍然可以绝对定位边距以外的东西,但是当你使用Document.Add()时,它会尊重这些边距。