openxml
Cómo agregar una imagen a un documento de Word.
Buscar..
Introducción
Insertar una imagen en un documento de Word usando OpenXml requiere dos acciones: agregue la imagen dentro de openxml y refiérase a la imagen en su documento
Observaciones
Si solo agrega la imagen a la estructura openxml sin referirla en el documento de Word, la próxima vez que "abra / guarde" su documento, el archivo de imagen se eliminará.
Palabra borrar todas las referencias huérfanas. Así que asegúrese de agregar la imagen en el documento de Word, de lo contrario tendrá que rehacer todos los pasos.
Añade la imagen a la estructura de OpenXml.
private string AddGraph(WordprocessingDocument wpd, string filepath)
{
ImagePart ip = wpd.MainDocumentPart.AddImagePart(ImagePartType.Jpeg);
using (FileStream fs = new FileStream(filepath, FileMode.Open))
{
if (fs.Length == 0) return string.Empty;
ip.FeedData(fs);
}
return wpd.MainDocumentPart.GetIdOfPart(ip);
}
En este caso, utilizamos un FileStream para recuperar la imagen, pero feedData (Stream) está esperando cualquier tipo de Stream.
Consulte la imagen en el documento de Word.
private void InsertImage(WordprocessingDocument wpd, OpenXmlElement parent, string filepath)
{
string relationId = AddGraph(wpd, filepath);
if (!string.IsNullOrEmpty(relationId))
{
Size size = new Size(800, 600);
Int64Value width = size.Width * 9525;
Int64Value height = size.Height * 9525;
var draw = new Drawing(
new DW.Inline(
new DW.Extent() { Cx = width, Cy = height },
new DW.EffectExtent()
{
LeftEdge = 0L,
TopEdge = 0L,
RightEdge = 0L,
BottomEdge = 0L
},
new DW.DocProperties()
{
Id = (UInt32Value)1U,
Name = "my image name"
},
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 = relationId
},
new PIC.NonVisualPictureDrawingProperties()),
new PIC.BlipFill(
new A.Blip(
new A.BlipExtensionList(
new A.BlipExtension() { Uri = "{28A0092B-C50C-407E-A947-70E740481C1C}" })
)
{
Embed = relationId,
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 = width, Cy = height }),
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"
});
parent.Append(draw);
}
}
En este ejemplo, configuro un tamaño estático de 800 * 600, pero puede establecer cualquier tamaño que necesite
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow