私はWord(.docx)ドキュメントを生成していますが、そこに既に存在するドキュメントにカスタムタグの代わりに図、イメージを挿入する方法の問題が発生しています。しかし、最初はいくつかの.RTFファイルからドキュメントを作成し、 "Altchunk"アプローチを使用して.RTFをテンプレートdocのコンテンツコントロールに挿入します。これらの.RTFファイルには、カスタムタグが含まれています。「< ElementType = "Diagram" Name = "Somename" > "のように表示され、次のような新しい行がドキュメントに表示されます(そして、ドキュメントにどのように多くのこれらのタグになります) .......Openxml sdk。
<のElementType = "ダイアグラム" NAME = "図のいくつかの名前を" >
....... ググそれはタグをイメージで置き換える方法の良いアプローチを見つけることができません。 最初にイメージの名前を認識するためにタグを読み取る必要があるので、タグの代わりにどのイメージが表示されるのかを知ってから、ドキュメントからタグ(テキストのみ)を削除し、その場所に、画像の名前。だからかなり複雑ですが、誰かが分かち合う良いアイデアを持っていることを願っています。おかげ
私はもう少し具体的なこの問題を説明したいと思い:
1)altchunk方法については、私はちょうど私がテンプレートとして使用し、私はワード文書に入れたコンテンツコントロールを見つけ、そして私をrtf文字列を持っている、私はそのCCの後にaltchunkを挿入する。
private void ReplaceContentControlWithRTF(MainDocumentPart mainPart, string tagName, string rtfString)
{
SdtBlock sb = mainPart.Document.Body.Descendants<SdtBlock>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == tagName).Single();
string altChunkId = "altChunkId" + altChunkIdNumber++;
AlternativeFormatImportPart chunk = mainPart.AddAlternativeFormatImportPart(AlternativeFormatImportPartType.Rtf, altChunkId);
MemoryStream s = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(rtfString));
chunk.FeedData(s);
AltChunk altChunk = new AltChunk();
altChunk.Id = altChunkId;
DocumentFormat.OpenXml.OpenXmlElement parent = sb.Parent;
parent.InsertAfter(altChunk, sb);
sb.Remove();
mainPart.Document.Save();
}
「コンテンツコントロールをドキュメントのプレースホルダとして使用する」はい、私のイメージがどこに表示されるのかを知ることはいいですが、このドキュメントはさまざまな入力データ(rtfファイル)を使って何度も生成されるはずです。幾つ、どこに画像が配置されるかを知ることはできません。しかし、すべてのrtfファイルを挿入すると、新しい段落のテキストのように見えるカスタムタグで.docxファイルが作成されます。だから私はそれらを見つけなければなりません、私はその名前を読みました。 –
Sergio
あなたの問題は何か分かりません。あなたは質問に記載されているようにそれをする必要があります;)。 http://msdn.microsoft.com/en-us/library/ee342530%28v=office.12%29.aspxでチュートリアルを読む。ドキュメントにイメージを挿入する方法について説明します。あなたのカスタムタグを見つけたらそれを削除し、親のpagargaphノードを取得してそこに画像タグを挿入し、画像部分を文書に挿入します。リンクには、画像を挿入する方法を説明するかなり詳細な説明が含まれていると思います。 –
これでほぼ終わりですが、ページの使用可能なスペースの幅を取得する方法に関する最後のヒントを教えてくれますか?私はそれがピクセルではなく、いくつかの単位であると思います。 – Sergio