2011-10-14 106 views

回答

0

你可以试试这个。您需要创建一个DocumentResource(Item-> Add new)并关联一个图像。

private static Footer BuildFooter(FooterPart hp, string title) 
     {     
      ImagePart ip = hp.AddImagePart(ImagePartType.Jpeg); 
      string imageRelationshipID = hp.GetIdOfPart(ip); 

      using (Stream imgStream = ip.GetStream()) 
      { 
       System.Drawing.Bitmap logo = DocumentResources._default; 
       logo.Save(imgStream, System.Drawing.Imaging.ImageFormat.Jpeg); 
      } 

      Footer h = new Footer(); 
      DocumentFormat.OpenXml.Wordprocessing.Paragraph p = new DocumentFormat.OpenXml.Wordprocessing.Paragraph(); 
      Run r = new Run(); 
      Drawing drawing = BuildImage(imageRelationshipID, "_default.jpg", 200, 30); 
      r.Append(drawing); 
      p.Append(r); 
      r = new Run(); 
      RunProperties rPr = new RunProperties(); 
      TabChar tab = new TabChar();    
      Bold b = new Bold(); 
      Color color = new Color { Val = "000000" }; 
      DocumentFormat.OpenXml.Wordprocessing.FontSize sz = new DocumentFormat.OpenXml.Wordprocessing.FontSize {Val = Convert.ToString("40")}; 
      Text t = new Text { Text = title }; 
      rPr.Append(b); 
      rPr.Append(color); 
      rPr.Append(sz); 
      r.Append(rPr); 
      r.Append(tab); 
      r.Append(t); 
      p.Append(r); 
      h.Append(p); 
      return h; 
     } 

,并建立图像

private static Drawing BuildImage(string imageRelationshipID, string imageName, int pixelWidth, int pixelHeight) 
     { 
      int emuWidth = (int)(pixelWidth * EMU_PER_PIXEL); 
      int emuHeight = (int)(pixelHeight * EMU_PER_PIXEL); 
      Drawing drawing = new Drawing(); 
      d.Wordprocessing.Inline inline = new d.Wordprocessing.Inline { DistanceFromTop = 0, DistanceFromBottom = 0, DistanceFromLeft = 0, DistanceFromRight = 0 }; 
      d.Wordprocessing.Anchor anchor = new d.Wordprocessing.Anchor(); 
      d.Wordprocessing.SimplePosition simplePos = new d.Wordprocessing.SimplePosition { X = 0, Y = 0 }; 
      d.Wordprocessing.Extent extent = new d.Wordprocessing.Extent { Cx = emuWidth, Cy = emuHeight }; 
      d.Wordprocessing.DocProperties docPr = new d.Wordprocessing.DocProperties { Id = 1, Name = imageName }; 
      d.Graphic graphic = new d.Graphic();    
      d.GraphicData graphicData = new d.GraphicData { Uri = GRAPHIC_DATA_URI }; 
      d.Pictures.Picture pic = new d.Pictures.Picture(); 
      d.Pictures.NonVisualPictureProperties nvPicPr = new d.Pictures.NonVisualPictureProperties(); 
      d.Pictures.NonVisualDrawingProperties cNvPr = new d.Pictures.NonVisualDrawingProperties { Id = 2, Name = imageName }; 
      d.Pictures.NonVisualPictureDrawingProperties cNvPicPr = new d.Pictures.NonVisualPictureDrawingProperties(); 
      d.Pictures.BlipFill blipFill = new d.Pictures.BlipFill(); 
      d.Blip blip = new d.Blip { Embed = imageRelationshipID }; 
      d.Stretch stretch = new d.Stretch(); 
      d.FillRectangle fillRect = new d.FillRectangle(); 
      d.Pictures.ShapeProperties spPr = new d.Pictures.ShapeProperties(); 
      d.Transform2D xfrm = new d.Transform2D(); 
      d.Offset off = new d.Offset { X = 0, Y = 0 }; 
      d.Extents ext = new d.Extents { Cx = emuWidth, Cy = emuHeight }; 
      d.PresetGeometry prstGeom = new d.PresetGeometry { Preset = d.ShapeTypeValues.Rectangle }; 
      d.AdjustValueList avLst = new d.AdjustValueList(); 
      xfrm.Append(off); 
      xfrm.Append(ext); 
      prstGeom.Append(avLst); 
      stretch.Append(fillRect); 
      spPr.Append(xfrm); 
      spPr.Append(prstGeom); 
      blipFill.Append(blip); 
      blipFill.Append(stretch); 
      nvPicPr.Append(cNvPr); 
      nvPicPr.Append(cNvPicPr); 
      pic.Append(nvPicPr); 
      pic.Append(blipFill); 
      pic.Append(spPr); 
      graphicData.Append(pic); 
      graphic.Append(graphicData); 
      inline.Append(extent); 
      inline.Append(docPr); 
      inline.Append(graphic); 
      drawing.Append(inline); 
      return drawing; 
     } 

调用这些功能,在您的功能构建文档

 FooterPart hp = mp.AddNewPart<FooterPart>(); 
     string headerRelationshipID = mp.GetIdOfPart(hp); 
     SectionProperties sectPr = new SectionProperties(); 
     FooterReference footerReference = new FooterReference(); 
     FooterReference.Id = footerRelationshipID; 
     FooterReference.Type = HeaderFooterValues.Default; 
     sectPr.Append(footerReference); 
     b.Append(sectPr); 
     d.Append(b); 
     hp.Footer = BuildFooter(hp, "My Test"); 
相关问题