Как использовать ABCPdf.NET для извлечения текстов со всех страниц файла PDF?

Как использовать инструмент ABCPdf.NET для извлечения текстов содержимого из файла PDF?

Я пробовал метод GetText, но не извлекал содержимое:

var doc = new Doc();    

        var url = @".../FileName.pdf";

        doc.Read(url);

        string xmlContents = doc.GetText("Text");
        Response.Write(xmlContents);
        doc.Clear();
        doc.Dispose();

В моем pdf почти 1000 слов, но GetText возвращает только 4-5 слов. Я понял, что он возвращает только тексты первой страницы.

Таким образом, вопрос должен быть "как извлечь текст со всех страниц pdf-файла?" - (изменил заголовок, чтобы было понятнее).

Спасибо,


person The Light    schedule 12.06.2012    source источник
comment
вы должны опубликовать то, что вы пробовали до сих пор ....   -  person Parv Sharma    schedule 12.06.2012
comment
хорошо, добавил больше деталей! сними свой негатив!   -  person The Light    schedule 12.06.2012
comment
@Thelight Это не негатив, и голосование против не является личным. Первоначально я проголосовал против, потому что это был однострочный вопрос, в котором не было много мыслей, кроме самого базового требования - на самом деле задать вопрос. Сейчас я удалил свой отрицательный голос, поскольку очевидно, что вы работаете над этим и отвечаете, и добавил больше к самому вопросу.   -  person Adam Houldsworth    schedule 13.06.2012


Ответы (3)


Для вашей пользы, да вы!

 public string ExtractTextsFromAllPages(string pdfFileName)
    {
        var sb = new StringBuilder();

        using (var doc = new Doc())
        {
            doc.Read(pdfFileName);

            for (var currentPageNumber = 1; currentPageNumber <= doc.PageCount; currentPageNumber++)
            {
                doc.PageNumber = currentPageNumber;
                sb.Append(doc.GetText("Text"));
            }
        }

        return sb.ToString();
    }

если у вас нет URL-адреса, но есть байты, то:

public string ExtractTextsFromAllPages(Byte[] pdfBytes)
    {
        var sb = new StringBuilder();

        using (var doc = new Doc())
        {
            doc.Read(pdfBytes);

            for (var currentPageNumber = 1; currentPageNumber <= doc.PageCount; currentPageNumber++)
            {
                doc.PageNumber = currentPageNumber;
                sb.Append(doc.GetText("Text"));
            }
        }

        return sb.ToString();
    }
person The Light    schedule 12.06.2012
comment
Какой тип данных у doc? Строка var doc = new Doc() не работает. Не могли бы вы сказать мне, что такое необходимая директива использования? - person Michael Hutter; 29.01.2019

Пробовали ли вы метод GetText?

person John Koerner    schedule 12.06.2012

person    schedule
comment
Обратите внимание, что это не будет работать в предыдущих версиях Abcpdf, таких как версия 8. Похоже, что класс TextOperation мог быть добавлен в версии 10 или около того. - person clamum; 27.04.2017