/// <summary>
        /// Paginates a printable into papers of the specified size.
        /// </summary>
        /// <param name="printable"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public IEnumerable Paginate(IDataGridPrintable <TItem> printable, Size pageSize)
        {
            var allItems = printable.Items.ToArray();

            return(new PaginateFunction(printable, allItems, pageSize).Paginate());
        }
 public PaginateFunction(IDataGridPrintable <TItem> printable, TItem[] allItems, Size pageSize)
 {
     this.printable = printable;
     this.pageSize  = pageSize;
     this.allItems  = allItems;
 }