Страницы

Поиск по вопросам

суббота, 20 апреля 2019 г.

Как понять начертание текста внутри docx файла используя c#?

Как понять начертание текста на 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(); }
Такой код не сохраняет начертание.


Ответ

Как ранее отмечали, можно воспользоваться библиотекой 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); } }

Комментариев нет:

Отправить комментарий