Как прочитать информацию о шрифте при чтении текста из PDF с использованием itext? - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть несколько отдельных PDF-файлов, и я хочу прочитать текст из них 1 на 1, и записать его в новый PDF-файл, чтобы они все были в одном документе. Я не хочу использовать PdfMerger, потому что это будет включать в себя все пустое пространство. Вот почему я хочу прочитать и скопировать текст.

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

Спасибо.

 byte[] result;                     

        using (var ms = new MemoryStream())
        {
            var writer = new PdfWriter(ms);                
            PdfDocument outPdf = new PdfDocument(writer);
            //PdfMerger merger = new PdfMerger(outPdf);
            Document outDocument = new Document(outPdf);

            foreach (var clause in clauses)
            {
                //Add pages from the first document
                var sourceReader = new PdfReader(new MemoryStream(clause.ClauseBytes));
                var sourcePdf = new PdfDocument(sourceReader);

                for (int i = 0; i < sourcePdf.GetNumberOfPages(); i++)
                {
                    var sourcePage = sourcePdf.GetPage(i+1);
                    var strategy = new SimpleTextExtractionStrategy();                        
                    var text = PdfTextExtractor.GetTextFromPage(sourcePage, strategy);
                    var currentText = Encoding.
                        UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(text)));

                    outDocument.Add(new Paragraph(currentText));                                              

                    //merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
                    //sourcePdf.Close();
                }
            }
            outDocument.Close();
            //merger.Close();                
            result = ms.GetBuffer();
        }

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