Добавить изображение в заполнитель шаблона Word

#c# #image #ms-word #office-interop

#c# #изображение #ms-word (ms-word) #офис-взаимодействие #ms-word #office-взаимодействие

Вопрос:

Привет всем, у меня есть код с открытым XML SDK для поиска полей слияния в документах Microsoft Word и замены их предоставленными данными, это работает хорошо, но теперь я хочу заменить предоставленную строку изображением.

Код по ссылке:

https://www.codeproject.com/Articles/38575/Fill-Mergefields-in-docx-Documents-without-Microso

     using (WordprocessingDocument docx = WordprocessingDocument.Open(stream, true))
                    {
                        //  2010/08/01: addition
                        ConvertFieldCodes(docx.MainDocumentPart.Document);

                        // first: process all tables
                        foreach (var field in docx.MainDocumentPart.Document.Descendants<SimpleField>())
                        {
                            string fieldname = GetFieldName(field, out switches);
                           // I will get fieldname "ImgLogo" and then I want to add an Image at this position. 
                        }
                    }
  

Я получу имя поля «ImgLogo», как показано выше, а затем я хочу добавить изображение в эту позицию. Полный код показан по ссылке выше.

Помогите мне здесь, заранее спасибо.

Ответ №1:

Вы можете использовать операторы mergefield if. Напишите свое утверждение и после того, как вы закончите, вставьте изображение в сегмент else инструкции if.

https://wordmvp.com/FAQs/MailMerge/MMergeIfFields.htm

Нажмите Alt F9, чтобы отобразить коды полей слияния в Word / Excel. If следует редактировать документ шаблона, а не конечный продукт. Поскольку вы не можете видеть поля после их объединения.

Когда вы объедините свое изображение, оно перезапишет оба поля {MERGEFIELD Изображение слияния }. Когда он перезаписывает их, значение { MERGEFIELD MergeImage } = «» не будет истинным и вместо заполнителя будет отображаться ваше изображение. Как указано, изображение-заполнитель должно быть вставлено в = «Вставить заполнитель здесь».

Это работает так же, как и до объединения вашего изображения, { MERGEFIELD MergeImage } равно пустой строке.

Например.

 { IF { MERGEFIELD MergeImage } = "" "Paste Placeholder here" "{ MERGEFIELD MergeImage }" }
  

разбейте вышесказанное:

 { IF CONDITION "TRUE" "FALSE" }
  

Если ничего не было объединено, вы получите заполнитель, в противном случае вы получите объединенное изображение.

Комментарии:

1. Спасибо за ответ, но я работаю на c #, и шаблон word содержит <<Img_String>> этот заполнитель. Итак, как я могу технически ввести изображение (заменив заполнитель) в документе, а затем сохранить его. Пожалуйста, укажите контекст на указанную выше ссылку.

2. Когда вы выполняете слияние из в C #, оно перезаписывает поля слияния. Таким образом, вы просто вносите изменения в рассматриваемый документ Word. Нажмите Alt F9, чтобы вместо серых полей увидеть поля слияния.

3. Не забудьте нажать Alt F9 после того, как закончите, чтобы вернуться к нормальному режиму… Я был очень смущен раньше, когда я все еще был в режиме, который отображает полное поле слияния в word

4. Спасибо за ответ, я не хочу вносить изменения в документ, в документе это <<Imglogo>> теперь, когда я получаю поле в коде, а затем я хочу вставить изображение в документ, а затем сохранить его.