openxml
Word文書にイメージを追加する方法。
サーチ…
前書き
OpenXmlを使用してワードドキュメントにイメージを挿入するには、openxmlの中にイメージを追加し、ドキュメントのイメージを参照する2つのアクションが必要です
備考
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