private void OnPageTextRequested(object sender, PageTextRequestedEventArgs pageTextRequestedEventArgs) { var serverPath = HttpContext.Current.Server.MapPath(pageTextRequestedEventArgs.FilePath); if (File.Exists(serverPath)) { using (var stream = File.OpenRead(serverPath)) { try { var decoder = RegisteredDecoders.GetDecoder(stream) as ITextFormatDecoder; if (decoder != null) { using (var extractor = new SegmentedTextTranslator(decoder.GetTextDocument(stream))) { // for documents that have comlicated structure, i.e. consist from the isolated pieces of text, or table structure // it's possible to configure nearby text blocks are combined into text segments(text containers that provide // selection isolated from other document content) extractor.RegionDetection = TextRegionDetectionMode.BlockDetection; // each block boundaries inflated to one average character width and two average character height // and all intersecting blocks are combined into single segment. // Having vertical ratio bigger then horizontal behaves better on column-layout documents. extractor.BlockDetectionDistance = new System.Drawing.SizeF(1, 2); pageTextRequestedEventArgs.Page = extractor.ExtractPageText(pageTextRequestedEventArgs.Index); } } } catch (ImageReadException imagingException) { Debug.WriteLine("Text extraction: image type is not recognized. {0}", imagingException); } } } }
protected override void OnPageTextRequested(PageTextRequestedEventArgs e) { base.OnPageTextRequested(e); }