Syncfusion DocIO - как вставить изображение (локальный файл) в закладку с помощью BookmarksNavigator - PullRequest
0 голосов
/ 21 июня 2009

Я использую Syncfusion DocIO для создания документов MS Word из моих приложений .net (winforms). До сих пор я имел дело с простым текстом, и довольно просто вставить текст в шаблон текстового документа, где закладки служат опорными точками для вставки текста.

Я перемещаюсь по закладкам с помощью BookmarksNavigator.MoveToBookmark (). Теперь мне нужно вставить изображение в закладку, но я не знаю, как это сделать.

Пожалуйста, помогите ...

Спасибо.

Ответы [ 3 ]

2 голосов
/ 23 ноября 2011

Специально для добавления в закладки:

            //Move to the specified bookmark
            bk.MoveToBookmark(bookmark);

            //Insert the picture into the specified bookmark location
            bk.DeleteBookmarkContent(true);

            // we assume the text is a full pathname for an image file
            // get the image file
            System.Drawing.Image image = System.Drawing.Image.FromFile(sText);

            IWParagraph paragraph = new WParagraph(document);
            paragraph.AppendPicture(image);
            bk.InsertParagraph(paragraph);
1 голос
/ 23 августа 2009
private System.Drawing.Image LoadSignature(string sFileName)
{
    string sImagePath = sFileName;
    System.Drawing.Image image = System.Drawing.Image.FromFile(sImagePath);
    return image;
}

private void MergeSignature(WordDocument doc, string sFile, string sBalise)
{
    System.Drawing.Image iSignature = LoadSignature(sFile);
    WordDocument ImgDoc = new WordDocument();
    ImgDoc.AddSection();
    ImgDoc.Sections[0].AddParagraph().AppendPicture(iSignature);

    if (iSignature != null)
    {
        TextSelection ts = null ;
        Regex pattern = new Regex(sBalise);
        ts = doc.Find(pattern);

        if (ts != null)
        {
            doc.ReplaceFirst = true;
            doc.Replace(pattern, ImgDoc, false);
        }
    }
    iSignature.Dispose();
}
0 голосов
/ 18 октября 2018

Смотрите здесь: https://help.syncfusion.com/file-formats/docio/working-with-mailmerge

1) Вам следует создать файл docx с именем «Template.docx». Этот файл будет использоваться в качестве шаблона. В вашем файле docx создайте поле типа MergeField. enter image description here

2) Создать MergeFiled с именем Изображение: Кришна enter image description here

3)

using Syncfusion.DocIO.DLS;
using System.Drawing;

public class Source
{
    public Image Krishna { get; set; } = Image.FromFile(@"C:\1.png");
}

и генерация кода:

public static void Generate()
{
  WordDocument doc = new WordDocument("Template.docx");

  Source data = new Source();
  var dataTable = new MailMergeDataTable("", new Source[] { data });

  doc.MailMerge.ExecuteGroup(dataTable);

  doc.Save("result.docx");
  doc.Close();
}
...