Слияние кода завершено, страница обновится автоматически
Всем привет! Не знаю, сталкивался ли кто-нибудь с такой же проблемой, как у меня: при вставке изображения оно всегда вставляется дважды. Также бывает, что изображение смещается при вставке в текстовое поле. Я сам недавно начал работать с этим открытым фреймворком. На данный момент я вижу два способа решения этой проблемы.
Первое решение — это проверка рендеринга изображения на нижнем уровне с добавлением контроля. Если вы посмотрите фрагмент кода, то найдёте метод ReplaceText фреймворка и внутри него — метод для рендеринга изображений else if (tag.Value is MiniWordPicture).
else if (tag.Value is MiniWordPicture)
{
// Новый контроль, чтобы предотвратить повторную вставку изображения
if (di.Keys.Contains(tag.Key))
{
continue;
}
var pic = (MiniWordPicture)tag.Value;
byte[] l_Data = null;
if (pic.Path != null)
{
l_Data = File.ReadAllBytes(pic.Path);
}
if (pic.Bytes != null)
{
l_Data = pic.Bytes;
}
var mainPart = docx.MainDocumentPart;
var imagePart = mainPart.AddImagePart(pic.GetImagePartType);
using (var stream = new MemoryStream(l_Data))
{
imagePart.FeedData(stream);
AddPicture(run, mainPart.GetIdOfPart(imagePart), pic);
}
t.Remove();
// Сохранение
di[tag.Key] = 0;
}
Не забудьте добавить var di = new Dictionary<string, object>(); вне цикла. Это решит проблему с повторной вставкой изображений.
2. Второе решение касается проблемы смещения изображения при вставке его в текстовое поле. Сейчас я не могу решить эту проблему на нижнем уровне, но нашёл обходной путь: можно вставить изображение в таблицу, тогда оно не будет смещаться.
В будущем я буду дополнять информацию, если возникнут новые вопросы. Буду рад, если у вас есть более эффективные решения. Также надеюсь, что автор этого открытого фреймворка сможет улучшить его на основе моих идей. Мне очень нравится этот фреймворк, и я хочу, чтобы он становился всё лучше и лучше!