Kalpesh Bhadra Ответов: 1

Как извлечь форматированный текст из PDF в C#


Здравствуйте Эксперты,
Я разрабатываю веб-приложение, через которое пользователь будет загружать свой PDF-документ, мне нужно извлечь несколько деталей из этого PDF-файла и после анализа данных я покажу результат на веб-странице. Я много гуглил и нашел несколько статей, которые помогли мне извлечь текст с помощью iTextSharp, PDFBox и еще много подобных вопросов задавали по этому поводу Codeproject и сайте StackOverflow
Каким-то образом я получил текст постранично, но он не был отформатирован, поэтому я не мог выполнить операцию с данными, извлеченными из pdf. Есть ли какой - нибудь способ извлечь текст , например, строка за строкой, столбец за столбцом?

Спасибо

Sergey Alexandrovich Kryukov

http://www.whathaveyoutried.com так далеко?
—СА

David_Wimbley

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

Kalpesh Bhadra

Привет Дэвид,
Клиент загружает свою "форму 16" - документ, выданный компанией своему сотруднику, который содержит информацию о персональных данных сотрудника, TDS, HRA, надбавках и других деталях, связанных с подачей декларации по налогу на прибыль. Все эти сведения отформатированы в табличном виде. Мне нужно получить все эти данные программно и сохранить их в базе данных, а также выполнить некоторые математические операции.

David_Wimbley

Разве вы не можете сделать что-то регулярное выражение мудрое?

Скажем, у них есть форма, которая выглядит так внутри PDF-файла

Имя: Дэвид
Фамилия: Уимблдон
Адрес: Главная Улица, 100
Город: Ваш Город
Состояние: FL

Но когда вы идете, чтобы извлечь текст из PDF-файла, он выглядит так

Имя: Дэвид фамилия: Уимбли адрес: 100 Main Street город: Ваш город штат: Флорида

Не могли бы вы сделать какое-нибудь регулярное выражение, чтобы дать вам весь текст от/между именем: и фамилией: для того, чтобы получить имя заявителя?

Затем повторите то же самое, чтобы получить все необходимые поля из PDF-файла.

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

Kalpesh Bhadra

Спасибо Дэвид,
Я понял. Я могу сделать это с помощью regex, так как это болезненно, но как-то попытаюсь справиться с этим. Аганин большое вам спасибо. :)

1 Ответов

Рейтинг:
1

Member 11346579

public string ReadPdfFile(string path)
        {
            string result = "";
            StringBuilder text = new StringBuilder();

            PdfReader pdfReader = new PdfReader(path);

            for (int page = 1; page <= pdfReader.NumberOfPages; page++)
            {
                ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
                result += PdfTextExtractor.  GetTextFromPage(pdfReader, page, strategy);

                //  result = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.UTF8.GetBytes(result)));
                // text.Append(result);

            }

            pdfReader.Close();
            txtInput.Text = result;
            return result;
        }


Richard MacCutchan

Опоздал на четыре года.