2017-11-23 11 views
0

Ich habe einen Weg gefunden, die Bild von dem lokalen Laufwerk zu einem Word-Dokument hinzufügen kann. Mein Problem ist, dass ich ein Online-Bild hinzufügen muss, das auf meinen Server hochgeladen wurde. meine aktuelle App sieht wie folgt aus:Hinzufügen von Online-Bild zu Word-Dokument mit OpenXml C#

static void Main(string[] args) 
    { 

     string document = @"C:\Users\User\Desktop\hello.docx"; 
     string fileName = @"C:\Users\User\Desktop\img.PNG"; 
     InsertAPicture(document, fileName); 
    } 

    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))); 
    } 

Wie ich diesen Code oder einen anderen Code verwenden können, ein Online-Bild statt eines Bildes auf meinem Computer befindet hinzuzufügen. https://msdn.microsoft.com/en-us/library/bb497430.aspx

Antwort

0

Warum laden Sie das Bild nicht in einen lokalen temporären Ordner, verwenden Sie es und geben Sie es als lokales Bild ein und entfernen Sie es, wenn es nicht mehr benötigt wird. Wenn diese Lösung nicht möglich ist, kann ich Ihnen vorschlagen, diesen Artikel zu überprüfen (nicht getestet) in memory image load. Hoffe, das hilft.

Verwandte Themen