Конвертирование PDF в текст в C# - Блог ITVDN
ITVDN: курси програмування
Відеокурси з
програмування

    Обери свою IT спеціальність

    Почати безкоштовно

    Обери свою IT спеціальність

    Почати безкоштовно

      Конвертирование PDF в текст в C#

      advertisement advertisement

      Как интерпретировать PDF-файлы

      Существует несколько основных методов извлечения текста из PDF файлов в .NET:

      • Microsoft IFilter interface и Adobe IFilter implementation;
      • iTextSharp;
      • PDFBox.

      Эти методы PDF-интерпретации неидеальны. Ниже подробно рассмотрим каждый из них.


      1. Разбор PDF с помощью Adobe PDF IFilter

      Для того, чтобы разобрать PDF-файлы с помощью IFilter, Вам понадобится:

      Пример кода:

      using IFilter;

      // ...

      public static string ExtractTextFromPdf(string path) {

             return DefaultParser.Extract(path);

      }

      Загружаем пример проекта:

      Интерпретация PDF-файлов, используя IFilter

      Если Вы используете PDF IFilter, работующий с Adobe Acrobat Reader, Вам нужно переименовать процесс "filtdump.exe", иначе интерфейс IFilter вернёт код ошибки E_NOTIMPL. Детально смотрите на Parsing PDF Files using IFilter.

      Недостатки:

      1. Использование ненадежного COM Interop. Он обрабатывает интерфейс IFilter (сочетание IFilter COM и Adobe PDF IFilter может быть проблематичным).

      2. Раздельная установка Adobe IFilter на целевой системе. Неудобно распространять индексное решение другим пользователям.

      3. Нужно использовать имя файла "filtdump.exe" для Вашего приложения с последним PDF IFilter, прилагающимся к Acrobat Reader.

           2. Разбор PDF с помощью iTextSharp

      iTextSharp – .NET порт  iText, PDF библиотеки для Java. Его основная функция – создание, а не чтение PDF-файлов, но он также позволяет извлекать текст из PDF-файлов.

      Пример кода:

      using iTextSharp.text.pdf;

      using iTextSharp.text.pdf.parser;

      // ...

      public static string ExtractTextFromPdf(string path)

      {

             using (PdfReader reader = new PdfReader(path))

             {

                    StringBuilder text = new StringBuilder();

                    for (int i = 1; i <= reader.NumberOfPages; i++)

                    {

                           text.Append(PdfTextExtractor.GetTextFromPage(reader, i));

                    }

                    return text.ToString();

             }

      }

      Загружаем пример проекта:

      Интерпретация PDF-файлов с iTextSharp

      Вы можете использовать LocationTextExtractionStrategy, чтобы получить более высокую точность.

      public static string ExtractTextFromPdf(string path)

      {

             ITextExtractionStrategy its = new iTextSharp.text.pdf.parser.LocationTextExtractionStrategy();

             using (PdfReader reader = new PdfReader(path))

             {

                    StringBuilder text = new StringBuilder();

                    for (int i = 1; i <= reader.NumberOfPages; i++)

                    {

                           string thePage = PdfTextExtractor.GetTextFromPage(reader, i, its);

                           string[] theLines = thePage.Split('\n');

                           foreach(var theLine in theLines)

                           {

                                  text.AppendLine(theLine);

                           }

                    }

                    return text.ToString();

             }

      }

      Недостатки iTextSharp:

      Лицензирование, если Вы недовольны AGPL лицензией.

            3. Разбор PDF с помощью PDFBox

      PDFBox – другая Java PDF библиотека. Она может использоваться с оригинальной Java Lucene (LucenePDFDocument).

      К счастью, существует .NET версия PDFBox, созданная с помощью IKVM.NET (загрузите  PDFBox package).

      Для использования PDFBox в .NET требуется:

      1. Добавление ссылок:

      • IKVM.OpenJDK.Core.dll
      • IKVM.OpenJDK.SwingAWT.dll
      • pdfbox-1.8.7.dll

      2. Копирование таких файлов каталога Bin:

      • commons-logging.dll
      • fontbox-1.8.7.dll
      • IKVM.OpenJDK.Text.dll
      • IKVM.OpenJDK.Util.dll
      • IKVM.Runtime.dll

      Использование PDFBox для разбора файлов PDF достаточно простое:

      using org.apache.pdfbox.pdmodel;

      using org.apache.pdfbox.util;

      // ...

      private static string ExtractTextFromPdf(string path)

      {

             PDDocument doc = null;

             try {

                    doc = PDDocument.load(path)

                           PDFTextStripper stripper = new PDFTextStripper();

                    return stripper.getText(doc);

             }

             finally {

                    if (doc != null) {

                           doc.close();

                    }

             }

      }

      Загружаем пример проекта:

      Как конвертировать PDF в текст в C# (.NET)

      Как конвертировать PDF в текст VB (.NET)

      Размер требуемой сборки составит почти 18 Мбайт:

      • IKVM.OpenJDK.Core.dll (4 MB)
      • IKVM.OpenJDK.SwingAWT.dll (6 MB)
      • pdfbox-1.8.7.dll (4 MB)
      • commons-logging.dll (82 kB)
      • fontbox-1.8.7.dll (180 kB)
      • IKVM.OpenJDK.Text.dll (800 kB)
      • IKVM.OpenJDK.Util.dll (2 MB)
      • IKVM.Runtime.dll (1 MB)

      Недостатки:

      1. IKVM.NET Dependencies (18 MB).

      2. Скорость (особенно скорость IKVM.NET).

      Источник: http://www.codeproject.com/Articles/12445/Converting-PDF-to-Text-in-C

      КОМЕНТАРІ ТА ОБГОВОРЕННЯ
      advertisement advertisement

      Пакети підписки з доступом до всіх курсів та сервісів

      Стартовий
      • Усі відеокурси на 3 місяці
      • Тестування з 10 курсів
      • Перевірка 5 домашніх завдань
      • Консультація з тренером 30 хв
      49.99 $
      37.50 $
      Підписка
      Базовий
      • Усі відеокурси на 6 місяців
      • Тестування з 16 курсів
      • Перевірка 10 домашніх завдань
      • Консультація з тренером 60 хв
      89.99 $
      63.00 $
      Підписка
      Преміум
      • Усі відеокурси на 1 рік
      • Тестування з 24 курсів
      • Перевірка 20 домашніх завдань
      • Консультація з тренером 120 хв
      169.99 $
      102.00 $
      Підписка
      new
      Преміум Plus
      • Усі відеокурси на 1 рік
      • Тестування з 24 курсів
      • Перевірка 20 домашніх завдань
      • Консультація з тренером 120 хв
      • Завантаження відео уроків
      199.99 $
      120.00 $
      Підписка
      Notification success
      Ми використовуємо cookie-файли, щоб зробити взаємодію з нашими веб-сайтами та послугами простою та значущою.