如何将SharePoint元数据(图片)插入Word文档?

如何将SharePoint元数据(图片)插入Word文档?,sharepoint,sharepoint-2010,Sharepoint,Sharepoint 2010,我有一个带有列类型超链接或图片(签名)的文档库 如何在Word文档中插入(签名)?您应该了解。它们允许您将不同的文档合并为一个文档。 此外,您还可以构建自己的Word文档:您应该了解。它们允许您将不同的文档合并为一个文档。 此外,您还可以构建自己的Word文档:我使用此代码 using System.IO; using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.Open

我有一个带有列类型超链接或图片(签名)的文档库

如何在Word文档中插入(签名)?

您应该了解。它们允许您将不同的文档合并为一个文档。
此外,您还可以构建自己的Word文档:

您应该了解。它们允许您将不同的文档合并为一个文档。
此外,您还可以构建自己的Word文档:

我使用此代码

using System.IO;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
using A = DocumentFormat.OpenXml.Drawing;
using DW = DocumentFormat.OpenXml.Drawing.Wordprocessing;
using PIC = DocumentFormat.OpenXml.Drawing.Pictures;
您可以通过传入word文档的路径和包含图片的文件的路径来调用InsertAPicture方法

string document = @"C:\Users\Public\Documents\Word9.docx";
string fileName = @"C:\Users\Public\Documents\MyPic.jpg";
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)));
 }
我使用这个代码

using System.IO;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
using A = DocumentFormat.OpenXml.Drawing;
using DW = DocumentFormat.OpenXml.Drawing.Wordprocessing;
using PIC = DocumentFormat.OpenXml.Drawing.Pictures;
您可以通过传入word文档的路径和包含图片的文件的路径来调用InsertAPicture方法

string document = @"C:\Users\Public\Documents\Word9.docx";
string fileName = @"C:\Users\Public\Documents\MyPic.jpg";
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)));
 }

可以使用“快速零件”下的“文档属性”将SharePoint列表或库中的图像插入到库中。通常不支持图像和URL,但将URL快速转换为文本字段可以解决此问题。

可以使用“快速部件”下的“文档属性”将SharePoint列表或库中的图像插入到库中。通常不支持图像和URL,但将URL快速转换为文本字段可以解决此问题。

谢谢,但开放Xml中的内容控制类型:Picture·允许单个值(图像)·不是容器·不可绑定。。。谢谢,但是开放Xml中的内容控制类型:Picture·允许单个值(图像)·不是容器·不可绑定。。。