我是一家大公司的实习生,他的任务是处理以前的实习生项目,该项目显然在某些时候有效,但现在它坏了。该程序的作用是从文档中取出一堆文本和图像并将它们插入到模板文档中。问题是,大约一半的图像没有形成关系,我得到了红色的 X“图像无法显示”空框。我一直在使用生产力工具进行一些挖掘,我发现有几个重复的 ID,以及很多不存在的关系,尽管查看他的代码我不确定可能是什么原因造成的. 这是他复制图像的两种方法:
internal static void CopyImages(OpenXmlElement oldTable, OpenXmlElement newTable,
WordprocessingDocument testData, WordprocessingDocument testReport)
{
List<Blip> sourceBlips = DocumentHelper.GetAllBlips(oldTable);
List<Blip> targetBlips = DocumentHelper.GetAllBlips(newTable);
foreach (Blip sourceBlip in sourceBlips)
{
foreach (Blip targetBlip in targetBlips)
{
if (targetBlip.Embed.Value == sourceBlip.Embed.Value)
{
if (testData.MainDocumentPart.GetPartById(sourceBlip.Embed.Value) is ImagePart imagePart)
{
ImagePart newImagePart = testReport.MainDocumentPart.AddPart(imagePart);
targetBlip.Embed.Value = testReport.MainDocumentPart.GetIdOfPart(newImagePart);
break;
}
}
}
}
}
internal static void CopyEmbeddedVisioImages(OpenXmlElement oldTable, OpenXmlElement newTable,
WordprocessingDocument testData, WordprocessingDocument testReport)
{
List<EmbeddedObject> sourceObjects = oldTable.Descendants<EmbeddedObject>().ToList();
List<EmbeddedObject> targetObjects = newTable.Descendants<EmbeddedObject>().ToList();
foreach (EmbeddedObject targetobj in targetObjects)
{
foreach (EmbeddedObject sourceObj in sourceObjects)
{
}
}
}
}
我试过在文档上调用 Save() 和 Close() 。我什至尝试调用 Dispose()。using(WordprocessingDocument foo = WordprocessingDocument.Open(bar, false){}似乎也没有帮助。我现在不太担心重复的 ID,但我不知道为什么只形成了一些关系,而其他关系则没有。这是一个庞大的项目,因此浏览其中的一些项目可能非常棘手。
相关分类