public void Wrap(IElement element)
{
var count = 0;
float l = 0;
var columnsWidth = PageSetup.MultipleColumnsPerPage.ColumnsWidth;
var columnsMargin = PageSetup.MultipleColumnsPerPage.ColumnsGap;
var columnsPerPage = PageSetup.MultipleColumnsPerPage.ColumnsPerPage - 1;
var r = columnsWidth;
var isRtl = PageSetup.MultipleColumnsPerPage.IsRightToLeft;
var startNewPage = false;
if (PageSetup.PagePreferences.RunDirection == null)
PageSetup.PagePreferences.RunDirection = PdfRunDirection.LeftToRight;
var ct = new ColumnText(PdfWriter.DirectContent)
{
RunDirection = (int)PageSetup.PagePreferences.RunDirection
};
ct.AddElement(element);
var top = PdfDoc.Top - CurrentRowInfoData.HeaderHeight - PageSetup.MultipleColumnsPerPage.TopMargin;
var status = 0;
// render the column as long as it has content
while (ColumnText.HasMoreText(status))
{
if (startNewPage) PdfDoc.NewPage();
if (isRtl)
{
ct.SetSimpleColumn(
PdfDoc.Right - l, PdfDoc.Bottom,
PdfDoc.Right - r, top
);
}
else
{
ct.SetSimpleColumn(
PdfDoc.Left + l, PdfDoc.Bottom,
PdfDoc.Left + r, top
);
}
l += columnsWidth + columnsMargin;
r += columnsWidth + columnsMargin;
// render as much content as possible
status = ct.Go();
// go to a new page if you've reached the last column
if (++count > columnsPerPage)
{
count = 0;
l = 0;
r = columnsWidth;
startNewPage = true;
}
else
{
startNewPage = false;
}
}
}