AddSvg.cs
//
// This code is part of Document Solutions for Word demos.
// Copyright (c) MESCIUS inc. All rights reserved.
//
using System;
using System.IO;
using System.Drawing;
using System.Diagnostics;
using GrapeCity.Documents.Word;
using GrapeCity.Documents.Imaging;

namespace DsWordWeb.Demos
{
    // This demo shows how to add an SVG image to am MS Word DOCX document.
    public class AddSvg
    {
        public GcWordDocument CreateDocx()
        {
            var doc = new GcWordDocument();
            var par = doc.Body.AddParagraph("The picture below is produced by a vector SVG image added to the document. " +
                "Mimicking the MS Word behavior, when an SVG is added, DsWord also creates a fallback raster version of the image.");

            var pic = doc.Body.AddParagraph().AddRun().AddPicture();
            // Load picture data:
            var picBytes = File.ReadAllBytes(Path.Combine("Resources", "SVG", "Smiling-Girl.svg"));
            pic.ImageData.SetImage(picBytes, "image/svg+xml");

            // In a debug configuration this shows that both vector and raster image versions are present:
            Debug.Assert(pic.ImageData.ImageBytes != null);
            Debug.Assert("image/png" == pic.ImageData.ContentType);
            Debug.Assert(pic.ImageData.ComplementaryVectorData != null);
            Debug.Assert(pic.ImageData.ComplementaryVectorData.ImageBytes.Length > 0);
            Debug.Assert("image/svg+xml" == pic.ImageData.ComplementaryVectorData.ContentType);

            // Specify the picture size:
            pic.Size.Width.Value = 200;
            pic.Size.Height.Value = 400;

            doc.Body.AddParagraph("The End.");

            // Done:
            return doc;
        }
    }
}