我們有一個基於客戶端INCLUDETEXT
條件頁腳:複製OpenXML的圖像從一個文檔到另一個
IF $CLIENT = "CLIENT1" "{INCLUDETEXT "CLIENT1HEADER.DOCX"}" ""
根據我們的文件,有可能是IF/ELSE
一個變化的量,而這些都正常工作用於在正確的位置合併正確的文件。
但是,其中一些文檔可能具有客戶端特定的圖像/品牌,也需要從INCLUDETEXT
文件中複製。
以下是調用方法,用於替換從源文檔複製到目標文檔的IEnumerable<Run>
中存在的所有Picture
元素。
圖像複製正常,但它似乎沒有更新我的Picture
中的RID或將記錄添加到.XML.Rels文件中。 (我甚至嘗試添加ForEach
添加到所有頁眉和頁腳,看看本作的任何區別。
private void InsertImagesFromOldDocToNewDoc(WordprocessingDocument source, WordprocessingDocument target, IEnumerable<Picture> pics)
{
IEnumerable<Picture> imageElements = source.MainDocumentPart.Document.Descendants<Run>().Where(x => x.Descendants<Picture>().FirstOrDefault() != null).Select(x => x.Descendants<Picture>().FirstOrDefault());
foreach (Picture pic in pics) //the new pics
{
Picture oldPic = imageElements.Where(x => x.Equals(pic)).FirstOrDefault();
if (oldPic != null)
{
string imageId = "";
ImageData shape = oldPic.Descendants<ImageData>().FirstOrDefault();
ImagePart p = source.MainDocumentPart.GetPartById(shape.RelationshipId) as ImagePart;
ImagePart newPart = target.MainDocumentPart.AddPart<ImagePart>(p);
newPart.FeedData(p.GetStream());
shape.RelId = target.MainDocumentPart.GetIdOfPart(newPart);
string relPart = target.MainDocumentPart.CreateRelationshipToPart(newPart);
}
}
}
有沒有人?
它出現的OpenXML的SDK文檔之前碰到過這樣的問題一個「小」疏...
你有沒有解決這個問題? –