Вы можете встроить содержимое документа RTF
в файл OpenXML DOCX
, используя якорь AltChunk
для внешнего содержимого.Элемент AltChunk
(w:altChunk
) указывает местоположение в документе OpenXML WordprocessingML для вставки внешнего содержимого, такого как документ RTF
.Приведенный ниже код использует класс AltChunk
в сочетании с классом AlternativeFormatImportPart
для встраивания содержимого документа RTF
в файл DOCX
после последнего абзаца:
using (WordprocessingDocument wordDocument = WordprocessingDocument.Open(@"your_docx_file.docx", true))
{
string altChunkId = "AltChunkId5";
MainDocumentPart mainDocPart = wordDocument.MainDocumentPart;
AlternativeFormatImportPart chunk = mainDocPart.AddAlternativeFormatImportPart(
AlternativeFormatImportPartType.Rtf, altChunkId);
// Read RTF document content.
string rtfDocumentContent = File.ReadAllText("your_rtf_document.rtf", Encoding.ASCII);
using (MemoryStream ms = new MemoryStream(Encoding.ASCII.GetBytes(rtfDocumentContent)))
{
chunk.FeedData(ms);
}
AltChunk altChunk = new AltChunk();
altChunk.Id = altChunkId;
// Embed AltChunk after the last paragraph.
mainDocPart.Document.Body.InsertAfter(
altChunk, mainDocPart.Document.Body.Elements<Paragraph>().Last());
mainDocPart.Document.Save();
}
Если вы хотитечтобы встроить строку Unicode RTF
в файл DOCX
, вам необходимо экранировать символы Unicode.В качестве примера, пожалуйста, обратитесь к следующему ответу stackoverflow .
При возникновении ошибки «файл поврежден », убедитесь, что вы Dispose()
или Close()
1024 *.Если вы не закроете () документ, то выпуск для w:altchunk
не будет сохранен в файле Document.xml.rels .