Я извлекаю текст из pdfs с iTextSharp в пределах определенных прямоугольников.Откорректируйте TextextSharp Text Extraction Newline Threshold
RenderFilter renderfilter = new RegionTextRenderFilter(pdfRect);
ITextExtractionStrategy strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), renderfilter);
var text = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy);
Некоторые из линий имеют текст, который изменяется в вертикальном выравнивании, так что я получаю новые строки, где не должно быть новой строки. Как я могу переопределить обнаружение новой строки, чтобы увеличить пороговое значение для обработки текста как находящегося на одной строке? Я посмотрел на метод SameLine, но не вижу, как я могу это использовать, даже если я переопределяю LocationTextExtractionStrategy или если это вообще необходимо сделать?
Если отклонение в вертикальном выравнивании идет строго вниз, необходимо изменить 'SameLine'. Боюсь, однако, было бы проще всего скопировать всю «LocationTextExtractionStrategy» и манипулировать копией из-за многих частных членов. Если изменение также может быть в направлении вверх, вам также придется заменить вызов 'filtTextChunks.Sort()'. – mkl
Спасибо за быстрый ответ. Можете ли вы рассказать об этом подробнее? Итак, SameLine вызывается для каждой буквы, чтобы узнать, находится ли она в одной строке? И тогда, что именно я должен был бы изменить в вызове Сортировка? – bzap16
* SameLine вызывается для каждой буквы, чтобы определить, находится ли она в одной строке * - Нет, для каждого фрагмента. Но куски действительно могут состоять из отдельных букв (обычно, хотя они длиннее). – mkl