Aspose PDF - получить текст со страницы, которая имеет совпадающую строку

Я работаю с существующей библиотекой - цель библиотеки - извлечь текст из PDF-файлов, чтобы сверить его с ожидаемыми значениями и проверить качество записанных данных по сравнению с данными в pdf.

Я ищу способ кратко вытащить конкретную страницу текста с учетом строки, которая должна попадать только на эту конкретную страницу.

var pdfDocument = new Document(file.PdfFilePath);

var textAbsorber = new TextAbsorber{
    ExtractionOptions = {
        FormattingMode = TextExtractionOptions.TextFormattingMode.Pure
    }
};

pdfDocument.Pages.Accept(textAbsorber);
foreach (var page in pdfDocument.Pages)
{

}

Я застрял внутри части foreach(var page in pdfDocument.Pages)... или это правильная область для поиска?


person WernerCD    schedule 12.03.2018    source источник
comment
Чтобы извлечь текст с определенной страницы, вы вызываете метод Accept() конкретной страницы, передавая в нем TextAbsorber, то есть pdfDocument.Pages[1].Accept(textAbsorber); Кроме того, если вы все еще сталкиваетесь с какой-либо проблемой, поделитесь с нами своим образцом PDF-файла. Мы протестируем сценарий в нашей среде и примем соответствующие меры. Пожалуйста, убедитесь, что вы тестируете функциональность, используя последнюю версию API. Меня зовут Асад Али, и я работаю с Aspose в качестве разработчика-евангелиста.   -  person Asad Ali    schedule 12.03.2018
comment
Ах, черт... Кажется, я понял... У меня был поглотитель для всех страниц, и мне нужно принять поглотитель для одной страницы... Я думаю... Я опубликую обновление вопроса, как я думаю Я ближе, как только я проверю момент или два дольше.   -  person WernerCD    schedule 12.03.2018
comment
@AsadAli добавил ответ с моими краткими заметками. Кажется, работает.   -  person WernerCD    schedule 12.03.2018


Ответы (1)


Ответ: Text Absorber воссоздает каждую страницу внутри цикла foreach.

Если поглотитель не создается заново, он сохраняет текст из предыдущих циклов.

public List<string> ProcessPage(MyInfoClass file, string find)
{
    var pdfDocument = new Document(file.PdfFilePath);

    foreach (Page page in pdfDocument.Pages)
    {
        var textAbsorber = new TextAbsorber {
            ExtractionOptions = {
                FormattingMode = TextExtractionOptions.TextFormattingMode.Pure
            }
        };

        page.Accept(textAbsorber);
        var ext = textAbsorber.Text;
        var exts = ext.Replace("\n", "").Split('\r').ToList();
        if (ext.Contains(find))
            return exts;
    }

    return null;
}
person WernerCD    schedule 12.03.2018
comment
Вы правильно понимаете, что TextAbsorber сохраняет весь текст при каждом посещении, если вы не инициализируете его повторно. Тем не менее, приятно знать, что ваша проблема решена. Пожалуйста, не стесняйтесь, дайте нам знать в случае любой дополнительной помощи. Вы также можете размещать свои запросы на наших бесплатных форумах поддержки (forum.aspose.com/c/pdf). - person Asad Ali; 12.03.2018