1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/MiniWord

 / Детали:

Проблемы, возникающие при заполнении изображений, и способы их решения.

Предстоит сделать
Владелец
Создано  
26.09.2024

Всем привет! Не знаю, сталкивался ли кто-нибудь с такой же проблемой, как у меня: при вставке изображения оно всегда вставляется дважды. Также бывает, что изображение смещается при вставке в текстовое поле. Я сам недавно начал работать с этим открытым фреймворком. На данный момент я вижу два способа решения этой проблемы.

  1. Первое решение — это проверка рендеринга изображения на нижнем уровне с добавлением контроля. Если вы посмотрите фрагмент кода, то найдёте метод 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. Второе решение касается проблемы смещения изображения при вставке его в текстовое поле. Сейчас я не могу решить эту проблему на нижнем уровне, но нашёл обходной путь: можно вставить изображение в таблицу, тогда оно не будет смещаться.

В будущем я буду дополнять информацию, если возникнут новые вопросы. Буду рад, если у вас есть более эффективные решения. Также надеюсь, что автор этого открытого фреймворка сможет улучшить его на основе моих идей. Мне очень нравится этот фреймворк, и я хочу, чтобы он становился всё лучше и лучше!

Комментарий (0)

GitLife Service Account Задача создана

Вход Перед тем как оставить комментарий

Статус
Ответственный
Контрольная точка
Pull Requests
Связанные запросы на слияние могут быть закрыты после их объединения
Ветки
Дата начала   -   Крайний срок
-
Закрепить/Открепить
Приоритет
Участники(1)
1
https://api.gitlife.ru/oschina-mirror/MiniWord.git
git@api.gitlife.ru:oschina-mirror/MiniWord.git
oschina-mirror
MiniWord
MiniWord