Добавление HTML в Word с помощью Open XML, но не удается стилизовать содержимое (. Net Core) - PullRequest
0 голосов
/ 06 февраля 2020

Мне удалось добавить HTML (только текст) в документ Word после этого сообщения Добавить HTML Строка для открытия XML, используя уже существующий файл Word.

К сожалению, я не могу найти никакого решения использовать стиль из этого Word-шаблона для моего недавно добавленного текста. Это всегда "Times New Roman" размером 12px, хотя стандартный стиль используемого шаблона - "Arial" размером 9px.

Итак, я попробовал:

  1. Используя свойства ParagraphProperties, как я сделал бы для не HTML текстов.
 Paragraph para = body.AppendChild(new Paragraph());
 Run run = para.AppendChild(new Run());
 run.AppendChild(altChunk);                           
 para.ParagraphProperties = new ParagraphProperties(new ParagraphStyleId() { Val = "berschrift2" });
Turnig MatchSource off
 AltChunkProperties altChunkProperties = new AltChunkProperties();
 altChunkProperties.MatchSource = new MatchSource() { Val = new OnOffValue(false) };
 altChunk.AppendChild<AltChunkProperties>(altChunkProperties);

Есть предложения?

EDIT : я нашел обходной путь, который на самом деле не является решением для моего вопроса , но у меня работает. Я больше не пытаюсь использовать стиль из слова, но добавляю стили к моему html перед использованием altchunk.

Ответы [ 2 ]

1 голос
/ 08 февраля 2020

Некоторое объяснение: если вы посмотрите на определение altChunk в ISO 29500-1 17.17.2.1 и, в частности, в разделе A.1, схема показывает, что altChunk является элементом EG_BlockLevelElts, и это одноранговый узел с абзацами (то есть) , Технически некорректно добавлять в качестве дочерних элементов элементы или даже абзацы. Это должно быть добавлено на уровне тела. Тот факт, что Word не жалуется при добавлении в качестве дочернего элемента выполнения или абзаца, является непреднамеренным и на него не следует полагаться.

В результате Word использует свойство стиля по умолчанию для шрифтов для форматирования этого нового содержимого. Вы можете попробовать это, изменив значения документа по умолчанию в стилях. xml part. Если для свойства match source установлено значение false, нет способа указать шрифт, кроме значений по умолчанию для документа.

Сказав это, я думаю, что альтернатива Томаса - лучший путь к go.

0 голосов
/ 07 февраля 2020

Реальным решением для вашего вопроса является преобразование HTML в открытую XML разметку "самостоятельно", а не использование альтернативных частей импорта формата в сочетании с w:altChunk элементами. Это создает зависимость от того, как Microsoft Word обрабатывает импорт, часто с небольшим контролем с вашей стороны.

Как преобразовать HTML (или XML в целом) в открытую XML разметку? Лучший способ - написать так называемые рекурсивные чисто функциональные преобразования, которые переводят HTML элементы и атрибуты в Open XML элементы и атрибуты. Если у вас действительно простые HTML документы, это не большая задача. Тем не менее, делать это для «произвольных» HTML и CSS довольно сложно.

Хорошей новостью является то, что Open- XML -PowerTools , библиотека с открытым исходным кодом , содержат функциональные возможности для преобразования HTML в Open XML и наоборот. Поэтому я бы посоветовал вам взглянуть на эту библиотеку.

...