У меня следующая проблема:
Текст необходимо скопировать из одного текстового редактора в другой текстовый документ.Исходный документ не всегда доступен при вставке текста в целевую часть.Текст сериализуется и извлекается позже.
В настоящее время я делаю это путем копирования элементов параграфа и добавления их в другой документ.Это работает нормально, если пули не участвуют. Пули не копируются из исходного документа в целевой.
Вот пример кода:
Public Sub SerializeParagraphsBetweenBookmark(ByVal stream As Stream)
Dim wordDoc = WordprocessingDocument.Open(_fileLocation, True)
Dim paragraphsFromBookmarks As IEnumerable(Of Paragraph)
Using (wordDoc)
paragraphsFromBookmarks = GetAllParagraphFromBookmarks(wordDoc)
End Using
SerializeParagraphsToFile(paragraphsFromBookmarks, stream)
End Sub
Private Sub SerializeParagraphsToFile(ByVal paragraphsFromBookmarks As IEnumerable(Of Paragraph), stream As Stream)
' the IEnumerable of paragraphs must be converted to an IEnumerable of strings before it can be converted
Dim serializableIEnumerable = paragraphsFromBookmarks.Select(Function(x) x.OuterXml).ToList()
Dim binSerializer As New BinaryFormatter()
binSerializer.Serialize(stream, serializableIEnumerable)
End Sub
Затем, когда я их получаю, я добавляю их вцелевой файл выглядит так:
Public Sub InsertParagraphsInDocument(paragraphs As IEnumerable(Of Paragraph))
Dim wordDoc = WordprocessingDocument.Open(_fileLocation, True)
Using (wordDoc)
Dim rootElement = wordDoc.MainDocumentPart.RootElement
Dim bookmark = rootElement.Descendants(Of BookmarkStart).FirstOrDefault(Function(x) x.Name.Value.Equals(_pasteBookmark))
Dim paragraphsList = paragraphs.ToList()
For i As Integer = paragraphsList.Count - 1 To 0 Step -1
bookmark.Parent.InsertAfterSelf(paragraphsList(i))
Next
End Using
End Sub
Код ничего особенного, и любые предложения по улучшению приветствуются.
Я знаю, что маркеры хранятся в NumberingDefinitionsPart Часть MainDocument, но моя проблема в том, как узнать, какие AbstractNum и NumberingInstance вставить в этот NumberingDefinitionsPart?