2017-11-23 12 views
0

ローカルドライブからImageをWord文書に追加できる方法が見つかりました。私の問題は、私は私のサーバーにアップロードされたオンライン画像を追加する必要があるということです。私の現在のアプリケーションは、次のようになります。OpenXmlを使用してWord文書にオンラインイメージを追加する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))); 
    } 

は、どのように私の代わりに自分のコンピュータ上にある画像のオンライン画像を追加するには、このコードまたは他のコードを使用することができます。 コード参照:https://msdn.microsoft.com/en-us/library/bb497430.aspx

答えて

0

ローカルの一時フォルダに画像をダウンロードし、それをローカル画像として使用して不要になったときに削除します。 この解決策が不可能な場合は、この記事をレビューすることをお勧めします(テストしていません)in memory image load。 これが役立つことを願っています。

関連する問題