我们有一个基于客户端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文档之前碰到过这样的问题一个“小”疏...
你有没有解决这个问题? –