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

Код: 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
25.10.2011, 13:25
    #37496851
MSSQLAndDotNet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
закладка "www" находиться в колонтитуле
если поместить закладку в основной текст документа, то все работает нормально: и закладку видит, и изображение вставляется на место закладки

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

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

Пардон, почту плохо смотрел. UP, в качестве компенсации.
...
Рейтинг: 0 / 0
27.10.2011, 15:48
    #37500931
MSSQLAndDotNet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
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
28.10.2011, 08:09
    #37501900
MSSQLAndDotNet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
Проблема описанная в предыдущем посте решена
Код: plaintext
imageMemoryStream.position=0;

но, :) изображение выводится в левом верхнем углу логотипа, а нужен вывод в верхнем правом.
...
Рейтинг: 0 / 0
19.04.2012, 11:23
    #37760641
ildar323
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
Код: 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
19.04.2012, 13:11
    #37760852
MSSQLAndDotNet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
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
19.04.2012, 22:50
    #37762055
ildar323
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
На ваш вопрос я натолкнулся в поисках решения способов вставки рисунка в колонтитул.
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
19.04.2012, 22:52
    #37762058
ildar323
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
На ваш вопрос я натолкнулся в поисках решения способов вставки рисунка в колонтитул.
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
14.11.2012, 10:13
    #38037451
xfido
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ?
MSSQLAndDotNet, вот есть примеры рееализации различных механизмов на OpenXML здесь
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# OpenXML Как вставить изображение в верхний колонтитул Word-a 2007, 2010 ? / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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