예제 #1
0
        public List <Page> Build(Text text)
        {
            var line  = new Line();
            var page  = new Page(_pageSize);
            var pages = new List <Page>(0);

            // дописывание целых строк к странице
            text.Sentences
            .ForEach(x => x.SentenceItems
                     .ForEach(delegate(ISentenceItem item)
            {
                if (!line.AddItem(item))
                {
                    return;
                }

                if (!page.AddLine(line))
                {
                    pages.Add(page);
                    page = new Page(_pageSize);
                    page.AddLine(line);
                }
                else
                {
                    line = new Line();
                }
            }));
            // дописывание остатка строки к странице
            if (line.Items.Count != 0)
            {
                if (!page.AddLine(line))
                {
                    pages.Add(page);
                    page = new Page(_pageSize);
                    page.AddLine(line);
                }
            }
            // запись последней страницы в список
            pages.Add(page);
            return(pages);
        }