#c_sharp
Как понять начертание текста на c#? Мне нужно определить как написан текст: Курсивом Жирным Подчеркнутым Надчёркнутым Перечеркнутым Как собственно распознать начертание на c#, если текст берется из файла word? StreamReader readLorem = new StreamReader(@"lorem.docx"); StreamWriter writeEncrypt = new StreamWriter(@"encrypt.docx"); StreamWriter writeDecrypt = new StreamWriter(@"decrypt.docx"); public Bacon() { InitializeComponent(); } private void Bacon_Load(object sender, EventArgs e) { string lorem = readLorem.ReadToEnd(); } Такой код не сохраняет начертание.
Ответы
Ответ 1
Как ранее отмечали, можно воспользоваться библиотекой OpenXML от Microsoft, которую можно скачать тут. Итак после установки в Ваш проект нужно подключить следующие сборки: DocumentFormat.OpenXml WindowsBase Для работы с текстом нужно подключить пространства имён: using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Wordprocessing; Я создал для демонстрации небольшое консольное приложение для примера, ниже расположена функция, которая разбирает форматирование текста, который содержится в файле по пути path. Эта функция отображает текст из документа и параметры форматирования каждого участка текста: static void ReadDocx(string path) { try { using (var doc = WordprocessingDocument.Open(path, false)) { foreach (var p in doc.MainDocumentPart.Document.Body.Elements()) { foreach (var r in p.Elements ()) { Console.WriteLine(r.InnerText); Console.WriteLine("Является:"); if (r.RunProperties.Bold != null) Console.WriteLine("Жирный"); if (r.RunProperties.Italic != null) Console.WriteLine("Курсив"); if (r.RunProperties.Underline != null) Console.WriteLine("Подчёркнутый"); if (r.RunProperties.Strike != null) Console.WriteLine("Перечеркнутый"); if (r.RunProperties.VerticalTextAlignment != null) { if (r.RunProperties.VerticalTextAlignment.Val == VerticalPositionValues.Subscript) Console.WriteLine("Подстрочный"); if (r.RunProperties.VerticalTextAlignment.Val == VerticalPositionValues.Superscript) Console.WriteLine("Надстрочный"); } } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
Комментариев нет:
Отправить комментарий