List <string> getPdfTextLines() { if (ActualRectangle == null) { return(null); } RectangleF ar = (RectangleF)ActualRectangle; TextAutoInsertSpace textAutoInsertSpace = ActualField.TextAutoInsertSpace != null ? ActualField.TextAutoInsertSpace : page.PageCollection.ActiveTemplate.TextAutoInsertSpace; if (ActualField.ColumnOfTable == null) { return(Pdf.GetTextLinesSurroundedByRectangle(page.PdfCharBoxs, ar, textAutoInsertSpace)); } List <string> ls = new List <string>(); List <Pdf.CharBox> cbs = (List <Pdf.CharBox>)TableFieldActualInfo.GetValue(Template.Field.Types.PdfCharBoxs); foreach (Line <Pdf.CharBox> l in GetLines(cbs, textAutoInsertSpace, null)) { StringBuilder sb = new StringBuilder(); foreach (Pdf.CharBox cb in l.CharBoxs) { if (cb.R.Left >= ar.Left && cb.R.Right <= ar.Right && cb.R.Top >= ar.Top && cb.R.Bottom <= ar.Bottom) { sb.Append(cb.Char); } } ls.Add(sb.ToString()); } return(ls); }
object getValue(Template.Field.ValueTypes valueType) { RectangleF r = (RectangleF)ActualRectangle; switch (valueType) { case Template.Field.ValueTypes.PdfText: case Template.Field.ValueTypes.PdfTextLines: List <string> ls; if (ActualField.ColumnOfTable == null) { ls = Pdf.GetTextLinesSurroundedByRectangle(page.PdfCharBoxs, r, page.pageCollection.ActiveTemplate.TextAutoInsertSpace); } else { ls = getTextLinesAsTableColumn(); } if (valueType == Template.Field.ValueTypes.PdfText) { return(string.Join("\r\n", ls)); } return(ls); case Template.Field.ValueTypes.PdfCharBoxs: return(Pdf.GetCharBoxsSurroundedByRectangle(page.PdfCharBoxs, r)); case Template.Field.ValueTypes.OcrText: return(Ocr.This.GetTextSurroundedByRectangle(page.ActiveTemplateBitmap, r)); case Template.Field.ValueTypes.OcrTextLines: throw new Exception("To be implemented."); case Template.Field.ValueTypes.OcrCharBoxs: return(Ocr.GetCharBoxsSurroundedByRectangle(page.ActiveTemplateOcrCharBoxs, r)); case Template.Field.ValueTypes.Image: using (Bitmap b = page.GetRectangleFromActiveTemplateBitmap(r.X / Settings.Constants.Image2PdfResolutionRatio, r.Y / Settings.Constants.Image2PdfResolutionRatio, r.Width / Settings.Constants.Image2PdfResolutionRatio, r.Height / Settings.Constants.Image2PdfResolutionRatio)) { return(Page.GetScaledImage2Pdf(b)); } default: throw new Exception("Unknown option: " + valueType); } }
Dictionary <Template.Field.ValueTypes, object> valueTypes2cachedValue = new Dictionary <Template.Field.ValueTypes, object>();//!!!cache Table field values for internal reuse only!!! object getValue_(Template.Field.ValueTypes valueType) { if (ActualRectangle == null || TableFieldActualInfo?.Found == false) { return(null); } RectangleF r = (RectangleF)ActualRectangle; switch (valueType) { case Template.Field.ValueTypes.PdfText: List <string> ls; if (ActualField.ColumnOfTable == null) { ls = Pdf.GetTextLinesSurroundedByRectangle(page.PdfCharBoxs, r, page.PageCollection.ActiveTemplate.TextAutoInsertSpace); } else { ls = getPdfTextLinesAsTableColumn(); } return(string.Join("\r\n", ls)); case Template.Field.ValueTypes.PdfTextLines: if (ActualField.ColumnOfTable == null) { return(Pdf.GetTextLinesSurroundedByRectangle(page.PdfCharBoxs, r, page.PageCollection.ActiveTemplate.TextAutoInsertSpace)); } return(getPdfTextLinesAsTableColumn()); case Template.Field.ValueTypes.PdfCharBoxs: return(Pdf.GetCharBoxsSurroundedByRectangle(page.PdfCharBoxs, r)); case Template.Field.ValueTypes.OcrText: if (ActualField.ColumnOfTable == null) { return(Ocr.This.GetTextSurroundedByRectangle(page.ActiveTemplateBitmap, r)); } throw new Exception("This code has to be debugged!"); return(string.Join("\r\n", getOcrTextLinesAsTableColumn())); case Template.Field.ValueTypes.OcrTextLines: throw new Exception("This code has to be debugged!"); if (ActualField.ColumnOfTable == null) { return(Regex.Split(Ocr.This.GetTextSurroundedByRectangle(page.ActiveTemplateBitmap, r), "$", RegexOptions.Multiline)); } return(getOcrTextLinesAsTableColumn()); case Template.Field.ValueTypes.OcrCharBoxs: return(Ocr.GetCharBoxsSurroundedByRectangle(page.ActiveTemplateOcrCharBoxs, r)); case Template.Field.ValueTypes.Image: using (Bitmap b = page.GetRectangleFromActiveTemplateBitmap(r.X / Settings.Constants.Image2PdfResolutionRatio, r.Y / Settings.Constants.Image2PdfResolutionRatio, r.Width / Settings.Constants.Image2PdfResolutionRatio, r.Height / Settings.Constants.Image2PdfResolutionRatio)) { return(Page.GetScaledImage2Pdf(b)); } default: throw new Exception("Unknown option: " + valueType); } }
object getValue(Template.Field field /*, int fieldDefinitionIndex*/, ValueTypes valueType = ValueTypes.Default) { RectangleF?r_ = GetFieldActualRectange(field); if (r_ == null) { return(null); } RectangleF r = (RectangleF)r_; switch (field.Type) { case Template.Field.Types.PdfText: Template.Field.PdfText pt = (Template.Field.PdfText)field; switch (valueType) { case ValueTypes.Default: List <string> ls; if (pt.ColumnOfTable == null) { ls = Pdf.GetTextLinesSurroundedByRectangle(PdfCharBoxs, r, pageCollection.ActiveTemplate.TextAutoInsertSpace); } else { ls = GetTextLinesAsTableColumn(pt, r); } return(string.Join("\r\n", ls)); case ValueTypes.TextLines: if (pt.ColumnOfTable == null) { ls = Pdf.GetTextLinesSurroundedByRectangle(PdfCharBoxs, r, pageCollection.ActiveTemplate.TextAutoInsertSpace); } else { ls = GetTextLinesAsTableColumn(pt, r); } return(ls); case ValueTypes.CharBoxs: return(Pdf.GetCharBoxsSurroundedByRectangle(PdfCharBoxs, r)); default: throw new Exception("Unknown option: " + valueType); } case Template.Field.Types.OcrText: Template.Field.OcrText ot = (Template.Field.OcrText)field; switch (valueType) { case ValueTypes.Default: return(Ocr.This.GetTextSurroundedByRectangle(ActiveTemplateBitmap, r)); case ValueTypes.TextLines: throw new Exception("To be implemented."); case ValueTypes.CharBoxs: return(Ocr.GetCharBoxsSurroundedByRectangle(ActiveTemplateOcrCharBoxs, r)); default: throw new Exception("Unknown option: " + valueType); } case Template.Field.Types.ImageData: switch (valueType) { case ValueTypes.Default: using (Bitmap rb = GetRectangleFromActiveTemplateBitmap(r.X / Settings.Constants.Image2PdfResolutionRatio, r.Y / Settings.Constants.Image2PdfResolutionRatio, r.Width / Settings.Constants.Image2PdfResolutionRatio, r.Height / Settings.Constants.Image2PdfResolutionRatio)) { return(ImageData.GetScaled(rb, Settings.Constants.Image2PdfResolutionRatio)); } case ValueTypes.TextLines: case ValueTypes.CharBoxs: throw new Exception("Option " + valueType + " cannot be used this Field type."); default: throw new Exception("Unknown option: " + valueType); } default: throw new Exception("Unknown option: " + field.Type); } }