public void GenerateFixedDocument(bool InPrintMode)
{
PrintDocument = new FixedDocument();
int RowsOnPage = 100;
PageSupplemental oSupplemental = new PageSupplemental(Configuration);
PageDefinition def = definition;
//Verteilung auf mehreren Seiten?
GenerateRanges();
int RowsOnFirstPage = CalculateRowsOnPage(ref RowsOnPage, def);
UpdatePages();
int from = PageSelectionFrom;
int until = PageSelectionUntil;
if (AllPages | !InPrintMode)
{ from = 1; until = maxPages; }
ProgressContext.Init(Properties.Resources.prgSeiten, (until - from + 1));
PrintDocument.DocumentPaginator.PageSize = def.PageSize;
for (int i = from; i <= until; i++)
{
for (int x = 1; x <= ColRanges.Count; x++)
{
oTable = new Grid();
oTable.BeginInit();
ProgressContext.UpdateProgress(i - from + x);
if (ProgressContext.Canceled)
{
ProgressContext.Finish();
return;
}
offset = x - 1;
PageContent oPage = new PageContent();
FixedPage oFixed = CreatePage();
int RowsUntil = Math.Min((i - 1) * RowsOnPage + RowsOnFirstPage, oData.Rows.Count);
int RowsFrom = (i - 2) * RowsOnPage + RowsOnFirstPage;
if (RowsFrom < 0)
RowsFrom = 0;
GenerateRows(RowsFrom, RowsUntil);
oTable.Width = def.ContentSize.Width;
oTable.Margin = new Thickness(def.ContentOrigin.X, def.ContentOrigin.Y, 0, 0);
oTable.EndInit();
oFixed.Children.Add(oTable);
FrameworkElement oHeader = oSupplemental.PageHeader();
oHeader.Width = def.ContentSize.Width;
oHeader.Margin = new Thickness(def.HeaderRect.Left, def.HeaderRect.Top, 0, 0);
oFixed.Children.Add(oHeader);
string currentpage = Convert.ToString(((int)i));
if (ColRanges.Count > 1)
currentpage = currentpage.AddLetter(x);
FrameworkElement oFooter = oSupplemental.PageFooter(currentpage, Maximum);
oFooter.Margin = new Thickness(def.FooterRect.Left, def.FooterRect.Top, 0, 0);
oFooter.Width = def.ContentSize.Width;
oFixed.Children.Add(oFooter);
oFixed.Measure(def.PageSize);
oFixed.Arrange(new Rect(new Point(), def.PageSize));
oFixed.UpdateLayout();
((IAddChild)oPage).AddChild(oFixed);
PrintDocument.Pages.Add(oPage);
}
}
ticket.PageBorderless = PageBorderless.Borderless;
oTable = null;
ProgressContext.Finish();
NotifyPropertyChanged("PrintDocument");
NotifyPropertyChanged("Maximum");
NotifyPropertyChanged("PageSelectionFrom");
NotifyPropertyChanged("PageSelectionUntil");
}