openxml
Word 문서에 이미지를 추가하는 방법.
수색…
소개
OpenXml을 사용하여 단어 문서에 이미지를 삽입하려면 openxml 내부에 이미지를 추가하고 문서의 이미지를 참조하는 두 가지 작업이 필요합니다.
비고
Word 문서에서 이미지를 참조하지 않고 openxml 구조에만 이미지를 추가하면 다음에 문서를 열거 나 저장하면 이미지 파일이 삭제됩니다.
Word에서 모든 고아 참조를 삭제합니다. 따라서 Word 문서에 이미지를 추가해야합니다. 그렇지 않으면 모든 단계를 다시 실행해야합니다.
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);
}
이 경우 FileStream을 사용하여 이미지를 검색하지만 feedData (Stream)는 모든 종류의 Stream을 기다리고 있습니다.
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);
}
}
이 예제에서는 정적 크기를 800 * 600으로 설정했지만 필요한 크기는 설정할 수 있습니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow