1. 程式人生 > 其它 >C#給Word頁首新增圖片

C#給Word頁首新增圖片

public void AddHeader(string docPath)

    {

      var document = WordprocessingDocument.Open(docPath, true);

      var mainDocumentPart = document.MainDocumentPart;

      mainDocumentPart.DeleteParts(mainDocumentPart.HeaderParts);

      var newHeaderPart = mainDocumentPart.AddNewPart<HeaderPart>();

      // try this instead

      var imgPart = newHeaderPart.AddImagePart(ImagePartType.Jpeg, "rId999");

      var imagePartID = newHeaderPart.GetIdOfPart(imgPart);

using(FileStream fsD =newFileStream("D:\\header.png", FileMode.Open)) { imgPart.FeedData(fsD); }

      var rId = mainDocumentPart.GetIdOfPart(newHeaderPart);

      var headerRef = new HeaderReference { Id = rId };

      var sectionProps = mainDocumentPart.Document.Body.Elements<SectionProperties>().LastOrDefault();

      if (sectionProps == null)

      {

        sectionProps = new SectionProperties();

        mainDocumentPart.Document.Body.Append(sectionProps);

      }

      sectionProps.RemoveAllChildren<HeaderReference>();

      sectionProps.Append(headerRef);

      newHeaderPart.Header = GeneratePicHeader(imagePartID);

      newHeaderPart.Header.Save();

    }



private Header GeneratePicHeader(string relationshipId)

    {

      var element =

        new Drawing(

          new DW.Inline(

            //Cx ,Cy 控制圖片大小,還得修改下面的

            new DW.Extent() { Cx = 1990000L, Cy = 562000L },

            new DW.EffectExtent()

            {

              LeftEdge = 0L,

              TopEdge = 0L,

              RightEdge = 0L,

              BottomEdge = 0L

            },

            new DW.DocProperties()

            {

              Id = (UInt32Value)1U,

              Name = "NIS Logo"

            },

            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 = "nis.png"

                    },

                    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 = 1990000L, Cy = 562000L }),

                    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"

          });

      var header = new Header();

      var paragraph = new Paragraph();

      var run = new Run();

      run.Append(element);

      paragraph.Append(run);

      header.Append(paragraph);

      return header;

    }

作者:玥月鳥飛
連結:https://www.jianshu.com/p/42b11dc59165
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。