Как вставить изображение / текстовую метку в определенных координатах в документе Word 2007 с помощью C #? - PullRequest
3 голосов
/ 21 сентября 2011

Я могу сделать это, чтобы вставить изображение и текст в местоположение по умолчанию:

        private static object objTrue = true;
        private static object objFalse = false;
        private static object objMissing = Missing.Value;
        private static object objEndOfDoc = @"\endofdoc"; // \endofdoc is a predefined bookmark.

        ...

        this.WordApp = new Word.Application();
        this.WordDoc = new Word.Document();
        this.WordApp.Visible = true;
        this.WordDoc = this.WordApp.Documents.Add(ref objMissing, ref objMissing, ref objMissing, ref objMissing);

        this.WordDoc.Content.InlineShapes.AddPicture(
        FileName: @"C:\MyLogo.png",
        LinkToFile: ref objMissing,
        SaveWithDocument: ref objTrue,
        Range: objMissing);

        // Insert a paragraph at the beginning of the document.
        var paragraph1 = this.WordDoc.Content.Paragraphs.Add(ref objMissing);
        paragraph1.Range.Text = "Heading 1";
        paragraph1.Range.Font.Bold = 1;
        paragraph1.Format.SpaceAfter = 24;    //24 pt spacing after paragraph.
        paragraph1.Range.InsertParagraphAfter();

Как я могу переместить его в любое место, которое я хочу? Когда я создаю PowerPoint (вручную), я могу расположить вещи в любом месте. Когда я вручную вставляю фигуру, я могу расположить ее где угодно. Как можно добиться аналогичного результата при программной вставке изображений и текстовых меток с помощью c #? Мне не удалось выяснить это с помощью поиска Google.

1 Ответ

5 голосов
/ 21 сентября 2011

Класс Range используется в слове, чтобы определить, где почти все идет в документе.Если вы замените параметр Range в this.WordDoc.Content.InlineShapes.AddPicture на действительный объект Range, он вставит картинку в это место в текстовом документе, и то же самое касается абзацев.

Согласно MSDN дляметод AddPicture для InlineShapes:

Диапазон: необязательный объект.Место, где изображение будет размещено в тексте.Если диапазон не свернут, изображение заменяет диапазон;в противном случае изображение вставляется.Если этот аргумент пропущен, картинка помещается автоматически.

Другой способ - использовать элемент документа Shapes вместо InlineShapes.Метод AddPicture в классе Shapes позволяет указать координаты:

this.WordDoc.Content.Shapes.AddPicture(
    [In] string FileName, 
    [In, Optional] ref object LinkToFile, 
    [In, Optional] ref object SaveWithDocument, 
    [In, Optional] ref object Left, 
    [In, Optional] ref object Top, 
    [In, Optional] ref object Width, 
    [In, Optional] ref object Height, 
    [In, Optional] ref object Anchor
);

InlineShapes.AddPicture

Shapes.AddPicture

...