powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
17 сообщений из 17, страница 1 из 1
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
    #37496354
MSSQLAndDotNet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может завалялись у кого исходники?
вот тут
http://msdn.microsoft.com/en-us/library/bb497430.aspx
объясняется как добавить изображение в текст документа,
помогите переделать для добавления изображения в верхний колонтитул.
Заранее спасибо.
...
Рейтинг: 0 / 0
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
    #37496411
MSSQLAndDotNet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
    #37496437
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каким боком это относится к форуму? Может, перенести куда?
...
Рейтинг: 0 / 0
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
    #37496643
MSSQLAndDotNet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge,
Куда?
...
Рейтинг: 0 / 0
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
    #37496803
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
    #37496845
MSSQLAndDotNet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаю так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
        public static void InsertAPicture(string document, string fileName)
        {
            using (WordprocessingDocument wordprocessingDocument =
                WordprocessingDocument.Open(document, true))
            {
                MainDocumentPart mainPart = wordprocessingDocument.MainDocumentPart;

                ImagePart imagePart = mainPart.AddImagePart(ImagePartType.Jpeg);

                using (FileStream stream = new FileStream(fileName, FileMode.Open))
                {
                    imagePart.FeedData(stream);
                }

                AddImageToBody(wordprocessingDocument, mainPart.GetIdOfPart(imagePart));
            }
        }

        private static void AddImageToBody(WordprocessingDocument wordDoc, string relationshipId)
        {
            // Define the reference of the image.
            var element =
                 new Drawing(
                     new DW.Inline(
                         new DW.Extent() { Cx = 990000L, Cy = 792000L },
                         new DW.EffectExtent()
                         {
                             LeftEdge = 0L,
                             TopEdge = 0L,
                             RightEdge = 0L,
                             BottomEdge = 0L
                         },
                         new DW.DocProperties()
                         {
                             Id = (UInt32Value)1U,
                             Name = "Picture 1"
                         },
                         new DW.NonVisualGraphicFrameDrawingProperties(
                             new A.GraphicFrameLocks() { NoChangeAspect = true }),
                         new A.Graphic(
                             new A.GraphicData(
                                 new PIC.Picture(
                                     new PIC.NonVisualPictureProperties(
                                         new PIC.NonVisualDrawingProperties()
                                         {
                                             Id = (UInt32Value)0U,
                                             Name = "New Bitmap Image.jpg"
                                         },
                                         new PIC.NonVisualPictureDrawingProperties()),
                                     new PIC.BlipFill(
                                         new A.Blip(
                                             new A.BlipExtensionList(
                                                 new A.BlipExtension()
                                                 {
                                                     Uri =
                                                       "{28A0092B-C50C-407E-A947-70E740481C1C}"
                                                 })
                                         )
                                         {
                                             Embed = relationshipId,
                                             CompressionState =
                                             A.BlipCompressionValues.Print
                                         },
                                         new A.Stretch(
                                             new A.FillRectangle())),
                                     new PIC.ShapeProperties(
                                         new A.Transform2D(
                                             new A.Offset() { X = 0L, Y = 0L },
                                             new A.Extents() { Cx = 990000L, Cy = 792000L }),
                                         new A.PresetGeometry(
                                             new A.AdjustValueList()
                                         ) { Preset = A.ShapeTypeValues.Rectangle }))
                             ) { Uri = "http://schemas.openxmlformats.org/drawingml/2006/picture" })
                     )
                     {
                         DistanceFromTop = (UInt32Value)0U,
                         DistanceFromBottom = (UInt32Value)0U,
                         DistanceFromLeft = (UInt32Value)0U,
                         DistanceFromRight = (UInt32Value)0U,
                         // EditId = "50D07946"
                     });

            // Append the reference to body, the element should be in a Run.
            // wordDoc.MainDocumentPart.Document.Body.AppendChild(new Paragraph(new Run(element)));

            IDictionary<String, BookmarkStart> bookMarkMap = new Dictionary<String, BookmarkStart>();
            //foreach (BookmarkStart bookMarkStart in wordDoc.MainDocumentPart.RootElement.Descendants<BookmarkStart>())
            foreach (BookmarkStart bookMarkStart in wordDoc.MainDocumentPart.RootElement.Descendants<BookmarkStart>())
            {
                bookMarkMap[bookMarkStart.Name] = bookMarkStart;
            }
                                     
        
            Run runImg = new Run();
            runImg.Append(element);

            Paragraph parImg = new Paragraph();
            parImg.Append(runImg);

            foreach (BookmarkStart bookmarkStart in bookMarkMap.Values)
            {
                if (bookmarkStart.Name.Value == "www")
                {
                    // 555 bookmarkStart.FirstChild.PrependChild(parImg);
                    bookmarkStart.Parent.InsertAfterSelf<Paragraph>(parImg);
                }
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            string document = @"L:\Word9.docx";
            string fileName = @"L:\MyPic.jpg";
            InsertAPicture(document, fileName);
        }

Не видит закладку "www"
Значит не правильно сформирована bookMarkMap
Как сформировать правильно?
...
Рейтинг: 0 / 0
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
    #37496851
MSSQLAndDotNet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
закладка "www" находиться в колонтитуле
если поместить закладку в основной текст документа, то все работает нормально: и закладку видит, и изображение вставляется на место закладки

Модератор: Тема перенесена из форума "ASP.NET".
...
Рейтинг: 0 / 0
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
    #37497089
MSSQLAndDotNet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как получить закладку из логотипа
...
Рейтинг: 0 / 0
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
    #37497091
MSSQLAndDotNet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MSSQLAndDotNetкак получить закладку из логотипа
http://www.legalcube.de/post/Word-openxml-sdk-bookmark-handling.aspx

Модератор: Тема перенесена из форума "Вопрос-Ответ".
...
Рейтинг: 0 / 0
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
    #37500585
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MSSQLAndDotNet,

Пардон, почту плохо смотрел. UP, в качестве компенсации.
...
Рейтинг: 0 / 0
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
    #37500931
MSSQLAndDotNet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeMSSQLAndDotNet,

Пардон, почту плохо смотрел. UP, в качестве компенсации.
:) Спасибо.
Делаю так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
        /// <summary>
        /// добавляем изображение в логотип документа по закладке
        /// </summary>
        /// <param name="wordDoc"></param>
        /// <param name="imageFileStream"></param>
        /// <param name="bookMarkName"></param>
        public static void InsertAPictureInHeaderToBookMark(WordprocessingDocument wordDoc, MemoryStream imageFileStream, string bookMarkName)
        {
            using (wordDoc)
            {
                HeaderPart mainPart = (HeaderPart)wordDoc.MainDocumentPart.HeaderParts.First(); // надо не первое
                if (wordDoc.MainDocumentPart.HeaderParts != null)
                {
                    foreach (var header2 in wordDoc.MainDocumentPart.HeaderParts)
                    {
                        ImagePart imagePart = header2.AddImagePart(ImagePartType.Jpeg);
                        using (imageFileStream)
                        {
                            imagePart.FeedData(imageFileStream);
                        }
                        AddImageToHeader(wordDoc, mainPart.GetIdOfPart(imagePart), bookMarkName);
                    }
                }
            }
        }
        /// <summary>
        /// вспомогательная процедура для InsertAPictureInHeaderToBookMark
        /// </summary>
        /// <param name="wordDoc"></param>
        /// <param name="relationshipId"></param>
        /// <param name="bookMarkName"></param>
        private static void AddImageToHeader(WordprocessingDocument wordDoc, string relationshipId, string bookMarkName)
        {
            #region Define the reference of the image.
            var element =
                 new Drawing(
                     new DW.Inline(
                         new DW.Extent() { Cx = 990000L, Cy = 792000L },
                         new DW.EffectExtent()
                         {
                             LeftEdge = 0L,
                             TopEdge = 0L,
                             RightEdge = 0L,
                             BottomEdge = 0L
                         },
                         new DW.DocProperties()
                         {
                             Id = (UInt32Value)1U,
                             Name = "Picture 1"
                         },
                         new DW.NonVisualGraphicFrameDrawingProperties(
                             new A.GraphicFrameLocks() { NoChangeAspect = true }),
                         new A.Graphic(
                             new A.GraphicData(
                                 new PIC.Picture(
                                     new PIC.NonVisualPictureProperties(
                                         new PIC.NonVisualDrawingProperties()
                                         {
                                             Id = (UInt32Value)0U,
                                             Name = "New Bitmap Image.jpg"
                                         },
                                         new PIC.NonVisualPictureDrawingProperties()),
                                     new PIC.BlipFill(
                                         new A.Blip(
                                             new A.BlipExtensionList(
                                                 new A.BlipExtension()
                                                 {
                                                     Uri =
                                                       "{28A0092B-C50C-407E-A947-70E740481C1C}"
                                                 })
                                         )
                                         {
                                             Embed = relationshipId,
                                             CompressionState =
                                             A.BlipCompressionValues.Print
                                         },
                                         new A.Stretch(
                                             new A.FillRectangle())),
                                     new PIC.ShapeProperties(
                                         new A.Transform2D(
                                             new A.Offset() { X = 0L, Y = 0L },
                                             new A.Extents() { Cx = 990000L, Cy = 792000L }),
                                         new A.PresetGeometry(
                                             new A.AdjustValueList()
                                         ) { Preset = A.ShapeTypeValues.Rectangle }))
                             ) { Uri = "http://schemas.openxmlformats.org/drawingml/2006/picture" })
                     )
                     {
                         DistanceFromTop = (UInt32Value)0U,
                         DistanceFromBottom = (UInt32Value)0U,
                         DistanceFromLeft = (UInt32Value)0U,
                         DistanceFromRight = (UInt32Value)0U,
                         // EditId = "50D07946"
                     });
            #endregion
            BookmarkStart bmstart = null;
            if (wordDoc.MainDocumentPart.HeaderParts != null)
            {
                foreach (var header2 in wordDoc.MainDocumentPart.HeaderParts)
                {
                    bmstart = (from b in header2.RootElement.Descendants<BookmarkStart>()
                               where b.Name.ToString().StartsWith(bookMarkName)
                               select b).FirstOrDefault();
                }
            }
            Run runImg = new Run();
            runImg.Append(element);
            Paragraph parImg = new Paragraph();
            parImg.Append(runImg);
            bmstart.Parent.InsertBeforeSelf<Paragraph>(parImg);
        }
        

Вызываю так:
Код: plaintext
1.
// загружаем изображение в memoryStream...
InsertAPictureInHeaderToBookMark(wordDoc, imageMemoryStream, "Logotip");
результат видите на скрине.

Если изображение передавать как fileStreame, то все работает нормально.
...
Рейтинг: 0 / 0
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
    #37501900
MSSQLAndDotNet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема описанная в предыдущем посте решена
Код: plaintext
imageMemoryStream.position=0;

но, :) изображение выводится в левом верхнем углу логотипа, а нужен вывод в верхнем правом.
...
Рейтинг: 0 / 0
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
    #37760641
ildar323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: c#
1.
2.
3.
                                             
new A.Offset() { X = 0L, Y = 0L },
new A.Extents() { Cx = 990000L, Cy = 792000L })



Offset - смещение
Extents - размеры
Оба значения в EMUs (English Metric Unit). Inserting Image into DocX using OpenXML and setting the size
...
Рейтинг: 0 / 0
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
    #37760852
MSSQLAndDotNet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ildar323
Код: c#
1.
2.
3.
                                             
new A.Offset() { X = 0L, Y = 0L },
new A.Extents() { Cx = 990000L, Cy = 792000L })



Offset - смещение
Extents - размеры
Оба значения в EMUs (English Metric Unit). Inserting Image into DocX using OpenXML and setting the size
Спасибо, уже решил проблему
Вы вовремя))
...
Рейтинг: 0 / 0
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
    #37762055
ildar323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На ваш вопрос я натолкнулся в поисках решения способов вставки рисунка в колонтитул.
element as Draw формирую как у вас описано, а внедряю в header по другому:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
            
'mainPart As MainDocumentPart

Dim header As New Header()
header.Append(New Paragraph(
            New ParagraphProperties(New Justification() With {.Val = JustificationValues.Right}),
            New Run(element)))


Dim headerPart As HeaderPart = mainPart.AddNewPart(Of HeaderPart)()
Dim rId As String = mainPart.GetIdOfPart(headerPart)

Dim headerRef As New HeaderReference()
headerRef.Id = rId

sectionProps.RemoveAllChildren(Of HeaderReference)()
sectionProps.Append(headerRef)

headerPart.Header = header
headerPart.Header.Save()
...
Рейтинг: 0 / 0
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
    #37762058
ildar323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На ваш вопрос я натолкнулся в поисках решения способов вставки рисунка в колонтитул.
element as Draw формирую как у вас описано, а внедряю в header по другому:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
            
'mainPart As MainDocumentPart

Dim header As New Header()
header.Append(New Paragraph(
            New ParagraphProperties(New Justification() With {.Val = JustificationValues.Right}),
            New Run(element)))


Dim headerPart As HeaderPart = mainPart.AddNewPart(Of HeaderPart)()
Dim rId As String = mainPart.GetIdOfPart(headerPart)

Dim headerRef As New HeaderReference()
headerRef.Id = rId

sectionProps.RemoveAllChildren(Of HeaderReference)()
sectionProps.Append(headerRef)

headerPart.Header = header
headerPart.Header.Save()



Не подскажете, как правильно внедрять?
...
Рейтинг: 0 / 0
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
    #38037451
xfido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MSSQLAndDotNet, вот есть примеры рееализации различных механизмов на OpenXML здесь
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]