/// <summary> /// Ejecuta patrones los extracción de textos /// almacenados. /// </summary> /// <param name="pdf"></param> /// <returns></returns> public PdfTagExtractionResult Extract(PdfUnstructuredDoc pdf) { PdfTagExtractionResult result = new PdfTagExtractionResult() { Pdf = pdf, MetadataType = Type.GetType(MetadataName) }; _Converters = new Dictionary <Type, object>(); IHierarchySet hierarchySet = GetHierarchySet(); foreach (var page in pdf.PdfUnstructuredPages) { ExtractFromRectangles(page.WordGroups, result.MetadataType, hierarchySet, result); ExtractFromRectangles(page.Lines, result.MetadataType, hierarchySet, result, "LinesInfos"); ExtractFromText(result.MetadataType, result, page, hierarchySet); ExtractFromTextStrings(page.TextStringGroups, result.MetadataType, hierarchySet, result); } result.Converters = _Converters; result.GetMetadata(); return(result); }
/// <summary> /// Ejecuta los patrones de extracción de textos /// almacenados. /// </summary> /// <param name="pdf">Archivo PDF sobre el que extraer.</param> /// <returns></returns> public PdfTagExtractionResult Extract(PdfUnstructuredDoc pdf) { PdfTagExtractionResult result = new PdfTagExtractionResult() { Pdf = pdf, MetadataType = Type.GetType(MetadataName) }; _Converters = new Dictionary <Type, object>(); IHierarchySet hierarchySet = GetHierarchySet(); PdfPatternsPage = new Dictionary <int, List <PdfTagPattern> >(); foreach (PdfTagPattern pattern in PdfPatterns) // Evitar que los bucles de extracción recorran siempre todos los patrones idependientemente del número de página. { if (PdfPatternsPage.ContainsKey(pattern.PdfPageN)) { PdfPatternsPage[pattern.PdfPageN].Add(pattern); } else { PdfPatternsPage[pattern.PdfPageN] = new List <PdfTagPattern>() { pattern } }; } foreach (var page in pdf.PdfUnstructuredPages) { ExtractFromRectangles(page.WordGroups, result.MetadataType, hierarchySet, result, page.PdfPageN); ExtractFromRectangles(page.Lines, result.MetadataType, hierarchySet, result, page.PdfPageN, "LinesInfos"); ExtractFromText(result.MetadataType, result, page, hierarchySet); ExtractFromColorFontText(page.ColorFontWordGroups, result.MetadataType, hierarchySet, result, page.PdfPageN); } result.Converters = _Converters; result.GetMetadata(); return(result); }