Заголовок 1, заголовок 2 не выделяется на ленте стиля документа после объединения файла docx

Я объединяю несколько файлов docx, эти файлы были созданы с использованием openxml и wordml через C#. Эти файлы имеют тег заголовка 1, заголовок 2 и т. Д. Вместе с текстом с этими тегами. Когда эти файлы создаются индивидуально, тогда, если мы щелкнем или выделим текст, который помечен заголовком 1 и заголовком 2, тогда будут выделены заголовок 1, заголовок 2 и т. Д., И панель навигации также будет отображаться на фоне тегов заголовка 1, заголовка 2., но после объединения этих документов, когда мы щелкаем или выделяем этот текст, заголовок 1 и заголовок 2 не выделяются. в стиле ленты. Код для этого слияния приведен здесь,

        MemoryStream ms = new MemoryStream();

        using (WordprocessingDocument myDoc =
WordprocessingDocument.Create(ms, WordprocessingDocumentType.Document))
        {
            MainDocumentPart mainPart = myDoc.AddMainDocumentPart();
            mainPart.Document = new Document { Body = new Body() };
            int counter = 1;
            foreach (var sectionOutput in sectionOutputs)
            {
                foreach (var outputFile in sectionOutput.Files)
                {
                    Paragraph sectionBreakPara = null;
                    if (!sectionOutput.SectionType.Equals(sectionOutputs[sectionOutputs.Count - 1].SectionType))
                    {
                        if (outputFile == sectionOutput.Files.Last())
                        //check whether this is the last file in this section
                        {
                            using (
                                WordprocessingDocument pkgSourceDoc =
                                    WordprocessingDocument.Open(outputFile.OutputStream, true))
                            {
                                var sourceBody = pkgSourceDoc.MainDocumentPart.Document.Body;

                                SectionProperties docSectionBreak =
                                    sourceBody.Descendants<SectionProperties>().LastOrDefault();
                                if (docSectionBreak != null)
                                {
                                    var clonedSectionBreak = (SectionProperties)docSectionBreak.CloneNode(true);
                                    clonedSectionBreak.RemoveAllChildren<FooterReference>();
                                    clonedSectionBreak.RemoveAllChildren<HeaderReference>();
                                    sectionBreakPara = new Paragraph();
                                    ParagraphProperties sectionParaProp = new ParagraphProperties();
                                    sectionParaProp.AppendChild(clonedSectionBreak);
                                    sectionBreakPara.AppendChild(sectionParaProp);
                                }
                            }
                        }
                    }

                    string altChunkId = string.Format("altchunkId{0}", counter);
                    AlternativeFormatImportPart chunk = mainPart.AddAlternativeFormatImportPart(
                        AlternativeFormatImportPartType.WordprocessingML, altChunkId);
                    outputFile.OutputStream.Seek(0, SeekOrigin.Begin);

                    chunk.FeedData(outputFile.OutputStream);
                    AltChunk altChunk = new AltChunk(new AltChunkProperties(new MatchSource { Val = new OnOffValue(true) })) { Id = altChunkId };

                    mainPart.Document.Body.AppendChild(altChunk);

                    if (sectionBreakPara != null)
                    {
                        mainPart.Document
                           .Body
                           .AppendChild(sectionBreakPara);
                    }

                    counter++;
                }
            }


            mainPart.Document.Save();
        }

        return ms;

1 ответ

Решение

В общем, этот симптом возникает, когда определение стиля отсутствует в части styles.xml. Если во время процесса слияния содержимое документа переносится, а части стилей - нет, это может вызвать эту проблему.

В новом документе Word только несколько базовых стилей, таких как Normal. Определение стиля, такого как заголовок 1, не добавляется в файл styles.xml до тех пор, пока вы не назначите этот стиль абзацу. Когда элемент абзаца содержит назначение стиля для стиля, отсутствующего в пакете, стиль игнорируется.

Это также может возникнуть в ячейках таблицы, где настройка таблицы переопределяет стиль. Например, в таблице можно сказать, что первая строка (например, заголовки) должна отображаться с определенным шрифтом и цветом, и это заменит настройку стиля.

Если ни одна из этих работ не работает, если вы публикуете небольшое количество сгенерированного XML, прямо вокруг одного из абзацев и его непосредственного контекста, это может дать некоторые подсказки.

Другие вопросы по тегам