ITextSharp 4.1.6 извлекает содержимое PDF как текст - PullRequest
0 голосов
/ 28 марта 2019

Компания хотела бы использовать версию Itextsharp 4.1.6 специально и не хочет покупать лицензию (версия 5/7).Итак, мы уже реализовали TextExtract из pdf, используя версию itextsharp 5.Поскольку мы понизили версию, этот метод не поддерживается в версии 4.1PL LGPL.

Итак, я посмотрел многие StackOverflow и другие сайты для ответа.Похоже, что не найдена пользовательская реализация, кроме приведенного ниже кода, который существует в версии AGPL.

PdfTextExtractor.GetTextFromPage(reader, i, new SimpleTextExtractionStrategy())

И byte[] pageContent = reader.GetPageContent(i); дает содержимое байта, при преобразовании в строку не даетнам точный текст файла.

Так как, мы не хотим покупать версию AGPL и должны реализовать textextractor pdf, любая идея, если какой-либо другой инструмент поддерживает это / кто-либо имеет реализацию textextractor.

Буду признателен за любые предложения.

Редактировать: Ссылка на ответ @ jgoday: enter image description here

1 Ответ

0 голосов
/ 28 марта 2019

С iText 4.1 вы можете использовать PdfContentParser (https://github.com/schourode/iTextSharp-LGPL/blob/f75cdad88236d502af42458a420d48be2a47008f/src/core/iTextSharp/text/pdf/PdfContentParser.cs), для анализа содержимого каждой страницы.

using System;
using System.Text;
using iTextSharp.text.pdf;

namespace PdfExtractor
{
    class Program
    {
        static void Main(string[] args)
        {
            var reader = new PdfReader(@"D:\Tmp\sample.pdf");

            try
            {
                var parser = new PdfContentParser(new PRTokeniser(reader.GetPageContent(2)));

                var sb = new StringBuilder();

                while (parser.Tokeniser.NextToken())
                {
                    if (parser.Tokeniser.TokenType == PRTokeniser.TK_STRING)
                    {
                        string str = parser.Tokeniser.StringValue;
                        sb.Append(str);
                    }
                }

                Console.WriteLine(sb.ToString());
            }
            finally {
                reader.Close();
            }
        }
    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...