Как я могу прочитать значение из файла PDF с тегами?

Мой PDF-файл содержит список людей, и в настоящее время я ищу идеальное решение, чтобы привлечь этих людей, но в некоторых случаях я в конечном итоге прочитал это предложение:

Это невозможно, потому что PDF-файлы не имеют структуры.

Теперь дело в том, что есть PDF-файлы с тегами, которые показывают вам «структуру» вашего PDF-файла. В моем случае у меня есть PDF-файл с тегами, в котором каждое значение человека имеет свою собственную строку, а каждый человек находится в столбце. Это означает, что существует / должен быть простой способ проанализировать эту «таблицу» в моем PDF-файле, чтобы получить значение каждого человека, верно?

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

(Небольшой побочный вопрос: используют ли приложения PDF в Excel теги из PDF для создания файла Excel?)

ИЗМЕНИТЬ №1:

Это пример файла PDF:  введите описание изображения здесь

Я уже пробовал предложенный вами способ @Lara с SyncFusion, но проблема в строке, которую я получаю:

John Peter Smith Smithstrasse 1 0101 Smithikon am See 010 010 01 01 020 020 02 02

С таким выводом невозможно использовать Regex. Проблема в том, что вы никогда не узнаете, принадлежит ли Peter в данном случае имени или фамилии, а Smith может быть частью улицы. Вот почему я не могу его использовать, и поэтому я ищу решение, в котором я могу использовать теги в PDF. Все хорошо разделено, поэтому мне нужен только способ получить значения из тегов. введите здесь описание изображения

РЕДАКТИРОВАТЬ №2: Как пожелал @Balasubramanian, вот пример PDF-файла с тегами: http://www.sh.ch/fileadmin/Redaktoren/Dokumente/Aufsichtsbehoerde_ueber_das_Anwaltswesen/Verzeichnis_SH_pdfnwaelte

Этот PDF-файл с синхронизацией дает именно тот результат, который я добавляю в Edit # 1.

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


person SovietPanda    schedule 17.02.2017    source источник


Ответы (2)


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

public static string GetTextFromAllPages(String pdfPath)
{
    PdfReader reader = new PdfReader(pdfPath); 

    StringWriter output = new StringWriter();  

    for (int i = 1; i <= reader.NumberOfPages; i++) 
        output.WriteLine(PdfTextExtractor.GetTextFromPage(reader, i, new SimpleTextExtractionStrategy()));

    return output.ToString();
}

Вы можете получить библиотеку из https://sourceforge.net/projects/itextsharp/ или Nuget тоже . Просто скачайте и обратитесь в свое приложение и используйте приведенный выше фрагмент кода. Вы сможете извлекать PDF в текст.

Обновлять:

Ниже я предлагаю вам попробовать.

 string pDFExtract = "John Peter Smith Smithstrasse 1 0101 Smithikon am See 010 010 01 01 020 020 02 02";

 string[] arrpDFExtract = pDFExtract.Split(' ');

 string Name = arrpDFExtract[0] +" "+ arrpDFExtract[1];

Здесь вам нужно выяснить, каков размер массива строк, и на основе этого вы должны создать условия, при которых вы получите точные значения, которые вы хотите ... Анализ условия длины массива и его соответствующих значений, которые у вас есть to do..Post, который просто используйте вышеуказанный способ и извлекайте вещи из PDF.

Я проделал много работы с документами, используя такой алгоритм построения, и все работает как шарм.

person Lara    schedule 17.02.2017
comment
Не тот ответ, который я ищу. Я знаю, что это может сработать, но я думаю, это будет печататься строка за строкой, но мне нужно, чтобы значения были разделены. Из-за форматирования я не могу использовать Regex, чтобы получить их из строки. - person SovietPanda; 17.02.2017
comment
Какое у вас образование. Вышеупомянутое решение извлекает PDF-файл в String. Теперь у вас есть множество методов, доступных в строке, чтобы добавить свою логику и получить то, что вы хотите. - person Lara; 17.02.2017
comment
Для информации прочтите значения построчно в строке .. Затем разделите строку на основе некоторого разделителя, такого как (Пробел), и добавьте в массив строк .. Теперь выясните, какая информация доступна в каком месте строкового массива. Получите это и используйте в соответствии с вашими требованиями ... - person Lara; 17.02.2017
comment
Это проблема. У меня нет разделителя, который я мог бы использовать. Я редактирую свой вопрос - person SovietPanda; 17.02.2017

В настоящее время Syncfusion не поддерживает извлечение текста из документа PDF с тегами. Однако не могли бы вы предоставить ожидаемую структуру вывода из документа PDF с тегами, а также документа PDF, с помощью которого вы пытаетесь извлечь из него тексты.

person Balasubramanian    schedule 21.02.2017