private ExtractOption CombineOptions(ExtractOption[] options) { ExtractOption extractOption = 0; if (options != null && options.Length != 0) { ExtractOption[] extractOptionArray = options; extractOption = extractOptionArray.Aggregate(extractOption, (current, t) => current | t); } return(extractOption); }
/// <summary> /// Extracts all entries to directory. /// </summary> /// <param name="outputDirectory">Directory to extract files.</param> /// <param name="options">Specifies extracting options. </param> public void ExtractFiles(string outputDirectory, ExtractOption options) { var entries = _vdfsReader.ReadEntries(true).ToArray(); if (options == ExtractOption.Hierarchy) { var tree = new VdfsEntriesTreeGenerator(entries).Generate(); saveFiles(tree, outputDirectory); } else { saveFiles(entries, outputDirectory); } }
public OperateResult <ExtractedResult> Extract(string path, ExtractOption[] options) { OperateResult <ExtractedResult> operateResult = new OperateResult <ExtractedResult>(); ExtractOption extractOption = CombineOptions(options); string extension = Path.GetExtension(path); ICollection <DocumentExtractor> extractors = ExtractorFactory.GetExtractors(extension); if (extractors == null || extractors.Count == 0) { operateResult.Status = OperateStatus.Failure; operateResult.Description = "没有对应的处理程序"; return(operateResult); } bool flag = false; if (!File.Exists(path)) { operateResult.Status = OperateStatus.Failure; operateResult.Description = string.Concat("不存在该文件:", path); return(operateResult); } byte[] numArray = File.ReadAllBytes(path); try { foreach (DocumentExtractor extractor in extractors) { operateResult.Data = extractor.Extract(extension, numArray, extractOption); if (operateResult.Data == null) { continue; } flag = true; break; } } catch (Exception exception) { operateResult.Status = OperateStatus.Failure; operateResult.Description = string.Concat("抽取出错:", exception.Message, Environment.NewLine, exception.StackTrace); LoggerWrapper.Logger.Error("ExtractText", exception); } if (!flag) { operateResult.Status = OperateStatus.Failure; operateResult.Description = "抽取出错"; } return(operateResult); }
public ExtractedResult Extract(string extensionName, byte[] data, ExtractOption extractOptions) { if (!CanBeExtracted(extensionName, data)) { return(null); } ExtractedResult extractedResult1 = new ExtractedResult(); if ((extractOptions & ExtractOption.Text) == ExtractOption.Text) { try { extractedResult1.Text = ExtractText(extensionName, data); if ((extractOptions & ExtractOption.Image) == ExtractOption.Image) { try { extractedResult1.Images = ExtractAndCompressImages(extensionName, data); } catch (Exception exception) { LoggerWrapper.Logger.Error("抽取图片", exception); } } ExtractedFilterFactory.Filter(extractedResult1); return(extractedResult1); } catch (Exception exception1) { LoggerWrapper.Logger.Error("抽取文本", exception1); } return(null); } if ((extractOptions & ExtractOption.Image) == ExtractOption.Image) { try { extractedResult1.Images = ExtractAndCompressImages(extensionName, data); } catch (Exception exception) { LoggerWrapper.Logger.Error("抽取图片", exception); } } ExtractedFilterFactory.Filter(extractedResult1); return(extractedResult1); }