使用openxml和C#在word文档中插入图像
本文关键字:文档 插入 图像 word openxml 使用 | 更新日期: 2023-09-27 18:22:31
我有以下代码试图使用开放xml将图像插入到word文档中:
private void AddImageToBody(ImagePart imagePart)
{
// Define the reference of the image.
var element =
new Drawing(
new Inline(
new Extent() { Cx = ConvertToEmu(640), Cy = ConvertToEmu(480) },
new EffectExtent()
{
LeftEdge = 0L,
TopEdge = 0L,
RightEdge = 0L,
BottomEdge = 0L
},
new DocProperties()
{
Id = (UInt32Value)1U,
Name = "Picture 1"
},
new NonVisualGraphicFrameDrawingProperties(
new GraphicFrameLocks() { NoChangeAspect = true }
),
new Graphic(
new GraphicData(
new Picture(
new NonVisualPictureProperties(
new NonVisualDrawingProperties()
{
Id = (UInt32Value)0U,
Name = "New Bitmap Image.jpg"
},
new NonVisualPictureDrawingProperties()),
new BlipFill(
new Blip(
new BlipExtensionList(
new BlipExtension()
{
Uri = "{28A0092B-C50C-407E-A947-70E740481C1C}"
}
)
)
{
Embed = mainpart.GetIdOfPart(imagePart),
CompressionState = BlipCompressionValues.Print
},
new Stretch(
new FillRectangle()
)
),
new ShapeProperties(
new Transform2D(
new Offset() { X = 0L, Y = 0L },
new Extents() { Cx = ConvertToEmu(640), Cy = ConvertToEmu(480) }
),
new PresetGeometry(
new AdjustValueList()
) { Preset = ShapeTypeValues.Rectangle }
)
)
) { Uri = "http://schemas.openxmlformats.org/drawingml/2006/picture" }
)
)
{
DistanceFromTop = (UInt32Value)0U,
DistanceFromBottom = (UInt32Value)0U,
DistanceFromLeft = (UInt32Value)0U,
DistanceFromRight = (UInt32Value)0U
});
// Append the reference to body, the element should be in a Run.
body.AppendChild(new Paragraph(new Run(element)));
}
虽然我正在插入图像,但插入的图像显示为空白,并且宽度和高度不正确。
有什么建议吗?
尝试msdn"如何:将图片插入Word处理文档"http://msdn.microsoft.com/en-us/library/bb497430.aspx.我可以使用此代码添加图像。
我不硬编码任何值,但我将它们传递给添加图像的方法,如下面的代码所示。
private static void AddImageToRun(Run run, string imageFileName, long imageWidthEMU, long imageHeightEMU, string imageID)
{
try
{
string GraphicDataUri =http://schemas.openxmlformats.org/drawingml/2006/picture";
var element =
new Drawing(
new DW.Inline(
new DW.Extent() { Cx = imageWidthEMU, Cy = imageHeightEMU },
new DW.EffectExtent()
{
LeftEdge = 0L,
TopEdge = 0L,
RightEdge = 0L,
BottomEdge = 0L
},
new DW.DocProperties()
{
Id = (UInt32Value)1U,
Name = imageFileName,
Description = imageFileName
},
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 = imageFileName
},
new PIC.NonVisualPictureDrawingProperties()),
new PIC.BlipFill(
new A.Blip()
{
Embed = imageID
},
new A.Stretch(
new A.FillRectangle())),
new PIC.ShapeProperties(
new A.Transform2D(
new A.Offset() { X = 0L, Y = 0L },
new A.Extents()
{
Cx = imageWidthEMU,
Cy = imageHeightEMU
}),
new A.PresetGeometry(
new A.AdjustValueList()
) { Preset = A.ShapeTypeValues.Rectangle }))
) { Uri = GraphicDataUri })
)
{
DistanceFromTop = (UInt32Value)0U,
DistanceFromBottom = (UInt32Value)0U,
DistanceFromLeft = (UInt32Value)0U,
DistanceFromRight = (UInt32Value)0U,
});
// Append the reference to body, the element should be in a Run.
run.AppendChild(element);
}
catch (Exception ex)
{
throw;
}
}