/// <summary> /// This is the main method for extraction /// </summary> /// <param name="document"></param> /// <returns></returns> public TableResult GetTableContent(Document document) { TableResult result = new TableResult(this); // generate lines.. ArrayList lines = document.GenerateLines(DocumentArea); result.Init(lines); for (int i = 0; i < lines.Count; i++) { Line line = (Line)lines[i]; string s = line.Content; // iterate through all contained words and decide for each one, where it belongs to.. for (int j = 0; j < line.Words.Count; j++) { Word word = (Word)line.Words[j]; ColumnRequest column = GetContainingColumn(word.Bounds); if (column != null) { ColumnResult columnResult = result.GetColumnResult(line, column); if (columnResult != null) { // add word to the corresponding result element columnResult.Words.Add(word); } } } } return(result); }
public ColumnResult GetColumnResult(ColumnRequest column) { for (int i = 0; i < _ColumnResults.Count; i++) { ColumnResult result = (ColumnResult)_ColumnResults[i]; if (result.ColumnRequest == column) { return(result); } } return(null); }
public ColumnResult GetColumnResult(Line line, ColumnRequest column) { for (int i = 0; i < _lineResults.Count; i++) { LineResult lineResult = (LineResult)_lineResults[i]; if (lineResult.LineReference == line) { return(lineResult.GetColumnResult(column)); } } return(null); }
/// <summary> /// Evaluates the Columns X Positon refering to the current request area. /// As long as we dont use caching, we have to calculate it every time. /// </summary> /// <returns></returns> private float GetColumnOffset(int index) { if (index > _ColumnRequests.Count) { throw new Exception("Wrong parameter"); } float offset = 0; for (int i = 0; i < index; i++) { ColumnRequest colRequest = (ColumnRequest)_ColumnRequests[i]; offset += colRequest.Width; } return(offset); }