外部コンテンツのアンカーを使用して、RTF
ドキュメントのコンテンツをOpenXMLDOCX
ファイルに埋め込むことができます。AltChunk
(AltChunk
)w:altChunk
要素は、ドキュメントなどの外部コンテンツを挿入するためのOpenXMLWordprocessingMLドキュメント内の場所を指定します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();
}
RTF
Unicode文字列をファイルに埋め込む場合は、Unicode文字DOCX
をエスケープする必要があります。例については、次のstackoverflowの回答を参照してください。
「ファイルが壊れています」というエラーが発生した場合は、自分Dispose()
または。ドキュメントをClose()しないと、の関連性はDocument.xml.relsファイルに保存されません。Close()
WordprocessingDocument
w:altchunk