У меня много текстовых документов (более 10 тыс.), В которых есть изображения (логотип).Я хочу заменить логотип, который у меня есть в слове doc, на другое изображение.Некоторые из этих файлов слов могут даже не содержать изображений, а некоторые могут содержать несколько изображений.Изображения не обязательно находятся в разделе заголовка документа.
Я рассмотрел некоторые вопросы по этому вопросу в Stackoverflow. В основном это
Но, будучи новичком в OpenXML
, в настоящее время я даже не могу заменить изображения внутри одного слова doc.Проблема, с которой я сталкиваюсь, заключается в попытке заменить изображение в моем word doc, кажется, что оно работает нормально, но в Word Doc нет никаких изменений.Любая помощь будет принята.
Это код, который я пробовал до сих пор
byte[] docBytes = File.ReadAllBytes(_myFilePath);
using (MemoryStream ms = new MemoryStream())
{
ms.Write(docBytes, 0, docBytes.Length);
using (WordprocessingDocument wpdoc = WordprocessingDocument.Open(ms, true))
{
MainDocumentPart mainPart = wpdoc.MainDocumentPart;
Document doc = mainPart.Document;
IEnumerable<Drawing> drawings = mainPart.Document.Descendants<Drawing>().ToList();
foreach (Drawing drawing in drawings)
{
DocProperties dpr = drawing.Descendants<DocProperties>().FirstOrDefault();
if (dpr != null && dpr.Name == "Picture 1")
{
foreach (DocumentFormat.OpenXml.Drawing.Blip b in drawing.Descendants<DocumentFormat.OpenXml.Drawing.Blip>().ToList())
{
OpenXmlPart imagePart = wordDoc.MainDocumentPart.GetPartById(b.Embed);
using (var writer = new BinaryWriter(imagePart.GetStream()))
{
writer.Write(File.ReadAllBytes(Path to my image with which to replace));
}
}
}
}
}
}
Это не приводит к изменениям в одном документе, для которого я его пробую.Кроме того, мне было интересно, как это можно сделать для документов с несколькими изображениями в приведенном выше случае, я открыл файл XML и увидел, что имя файла в свойствах документа было "Изображение 1", но для документов Word с несколькими изображениями это не будетвозможный.Любая помощь будет оценена.Спасибо