iTextSharp 4.1.6 Cyrilli c извлечение текста - PullRequest
0 голосов
/ 01 апреля 2020

Я использую iTextSharp 4.1.6-LGPL. Логика извлечения текста c такая же, как описано в этом ответе .

            var path = @"D:\ru.pdf";

            var reader = new PdfReader(path);

            StringBuilder sb = new StringBuilder();

            try
            {
                for (int page = 1; page <= reader.NumberOfPages; page++)
                {
                    var cpage = reader.GetPageN(page);
                    var content = cpage.Get(PdfName.CONTENTS);

                    var ir = (PRIndirectReference)content;

                    var value = reader.GetPdfObject(ir.Number);

                    if (value.IsStream())
                    {
                        PRStream stream = (PRStream)value;

                        var streamBytes = PdfReader.GetStreamBytes(stream);

                        var tokenizer = new PRTokeniser(new RandomAccessFileOrArray(streamBytes));

                        try
                        {
                            while (tokenizer.NextToken())
                            {
                                if (tokenizer.TokenType == PRTokeniser.TK_STRING)
                                {
                                    string str = tokenizer.StringValue;
                                    sb.Append(str);
                                }
                            }
                        }
                        finally
                        {
                            tokenizer.Close();
                        }
                    }
                }
            }
            finally
            {
                reader.Close();
            }

            var res= sb.ToString();

Входной файл PDF содержит только одно слово: Слово

Фактический результат для извлечения: ru-RU \ u0002Á \ u0003 # \ u0003 (\ u0003 \ u000f \ u0003 (

) Я пробовал разные приемы кодирования безуспешно.

Кроме того, новейшая версия вывода iTextSharp корректна с использованием PdfTextExtractor, которого нет в 4.6.1

Кто-нибудь знает, как получить правильный вывод?

...