-1
Open XMLを使用して文書のフォントを変更するのに問題があります。 PrependChildを使って新しいフォントを段落に適用しようとしました。ただし、 "OpenXmlElement" newChild "はツリーの一部であるため挿入できません"という例外が投げられました。 "いくつかの研究の後、私は別々のオブジェクトにその要素のクローンを作成し、そこに変更を加える必要があることが分かったので、私はOpen XMLを使用して文書のフォントを変更する
clonedRun = (Run)runList[j].CloneNode(true);
clonedRun.PrependChild(runProp);
runList[j] = clonedRun;
このアプローチをしたが、その例外のメッセージはまだ出てきます。その実行の親要素を削除してツリーの一部にしないようにしましたが、その親はnullです(もちろん)。
static void Main(string[] args)
{
using (var doc = WordprocessingDocument.Open(@"mydoc.docx", true))
{
RunProperties runProp = new RunProperties(); // Create run properties.
RunFonts runFont = new RunFonts(); // Create font
runFont.Ascii = "Arial"; // Specify font family
FontSize size = new FontSize();
size.Val = new StringValue("48"); // 48 half-point font size
runProp.Append(runFont);
runProp.Append(size);
var clonedParagraph = new Paragraph();
var clonedRun = new Run();
var paragraphList = doc.MainDocumentPart.RootElement.Descendants<Paragraph>()
.ToList<Paragraph>();
for (int i = 0; i < paragraphList.Count; i++)
{
clonedParagraph = (Paragraph)paragraphList[i].CloneNode(true);
var runList = clonedParagraph.Elements<Run>().ToList();
for (int j = 0; j < runList.ToList().Count; j++)
{
clonedRun = (Run)runList[j].CloneNode(true);
clonedRun.PrependChild(runProp);
runList[j] = clonedRun;
}
paragraphList[i] = clonedParagraph;
}
doc.MainDocumentPart.Document.Save();
}
}
は、ここで私は私のコードの問題を発見したclonedNode
<w:r w:rsidRPr="00E474DB" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:rPr>
<w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:eastAsia="MS Pゴシック" w:cs="Calibri" />
<w:sz w:val="48" />
<w:szCs w:val="48" />
<w:lang w:eastAsia="ja-JP" />
</w:rPr>
<w:t>Curriculum Vitae</w:t>
</w:r>