예제 #1
0
            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);
            }
예제 #2
0
            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);
                }
            }
예제 #3
0
            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);
                }
            }
예제 #4
0
        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);
            }
        }