public BlockPage Process(BlockPage page2) { var page = page2 as BlockPage2; if (page == null) { PdfReaderException.AlwaysThrow("BlocksetData must execute AFTER OrganizePageLayout"); } var blocksetInfo = new BlockPage2(); foreach (var segment in page.Segments) { var segmentInfo = new BlockPageSegment(blocksetInfo, segment.NumberOfColumns); foreach (var column in segment.Columns) { var columnInfo = CopyColumnMetadata(blocksetInfo, column); segmentInfo.AddColumn(columnInfo); } blocksetInfo.AddSegment(segmentInfo); } this._blocksetInfo = blocksetInfo; return(page); }
public BlockPage Process(BlockPage page2) { var page = page2 as BlockPage2; if (page == null) { PdfReaderException.AlwaysThrow("ResizeSequentialLayout must execute AFTER OrganizePageLayout"); } var result = new BlockPage2(); foreach (var segment in page.Segments) { BlockPageSegment newsegment = new BlockPageSegment(result, segment.NumberOfColumns); foreach (var column in segment.Columns) { BlockColumn newcolumn = new BlockColumn(result, column.ColumnType, column.X1, column.W); float minX = column.Min(b => b.GetX()); float maxX = column.Max(b => b.GetX() + b.GetWidth()); foreach (var block in column) { var bset = block as IBlockSet <IBlock>; if (block is TableSet || block is ImageBlock) { newcolumn.Add(block); continue; } if (bset == null) { PdfReaderException.AlwaysThrow("not expected"); } var resizeBset = ResizeBlockSet(bset, minX, maxX); newcolumn.Add(resizeBset); } newsegment.AddColumn(newcolumn); } result.AddSegment(newsegment); } return(result); }
public BlockPage Process(BlockPage page2) { var page = page2 as BlockPage2; if (page == null) { PdfReaderException.AlwaysThrow("MergeSequentialLayout must execute AFTER OrganizePageLayout"); } var result = new BlockPage2(); foreach (var segment in page.Segments) { BlockPageSegment newsegment = new BlockPageSegment(result, segment.NumberOfColumns); foreach (var column in segment.Columns) { BlockColumn newcolumn = new BlockColumn(result, column.ColumnType, column.X1, column.W); IBlock last = null; var orderedColumns = column.OrderByDescending(b => b.GetH()); foreach (var block in orderedColumns) { if (last != null) { var b1 = last as IBlockSet <IBlock>; var b2 = block as IBlockSet <IBlock>; if (block is TableSet || block is ImageBlock || last is TableSet || last is ImageBlock) { newcolumn.Add(last); last = block; continue; } if (b1 == null || b2 == null) { PdfReaderException.AlwaysThrow("not expected"); } if (Block.SameHeight(b1, b2)) { last = Merge(b1, b2); // merge continue; } newcolumn.Add(last); } last = block; } if (last != null) { newcolumn.Add(last); } newsegment.AddColumn(newcolumn); } result.AddSegment(newsegment); } return(result); }