Convert SVG to XPS | C#

XPS is a document storage and viewing format developed by Microsoft. An XPS file has a set of advantages that support security features, such as digital signatures to provide greater document security and more. With Aspose.HTML, you can convert SVG to XPS format programmatically with full control over a wide range of conversion parameters.

In this article, you find information on how to convert SVG to XPS using ConvertSVG() methods of the Converter class and how to apply XpsSaveOptions and ICreateStreamProvider parameters. Also, you can try an Online SVG Converter to test the Aspose.HTML API functionality and convert SVG on the fly.

Online SVG Converter

You can convert SVG to other formats with Aspose.HTML API in real time. Please load SVG from the local file system, select the output format and run the example. The save options are set by default. You will immediately receive the conversion result as a separate file.

                
            

If you want to convert SVG to XPS file programmatically, please see the following C# code examples.

SVG to XPS by a single line of code

The static methods of the Converter class are primarily used as the easiest way to convert an SVG file into various formats. You can convert SVG to XPS in your C# application literally with a single line of code!

In the following example, we take an SVG file in a local file system ( shapes.svg), convert and save it in the local file system.

1using System.IO;
2using Aspose.Html.Converters;
3using Aspose.Html.Saving;
4...
5     // Invoke the ConvertSVG() method for SVG to XPS conversion
6     Converter.ConvertSVG(Path.Combine(DataDir, "shapes.svg"), new XpsSaveOptions(), Path.Combine(OutputDir, "convert-with-single-line.xps"));

Convert SVG to XPS

Converting a file to another format using the ConvertSVG() method is a sequence of operations among which document loading and saving. In the following example, we create an SVG file from code.

  1. Prepare code for an SVG document.
  2. Create a new XpsSaveOptions object.
  3. Use the ConvertSVG(content, baseUri, options, outputPath) method of the Converter class to save SVG as an XPS file.

Please take a look over the following C# code snippet which shows the process of converting SVG to XPS using Aspose.HTML for .NET.

 1using System.IO;
 2using Aspose.Html.Converters;
 3using Aspose.Html.Saving;
 4...
 5    // Prepare SVG code 
 6    var code = "<svg xmlns='http://www.w3.org/2000/svg'>" +
 7               "<circle cx ='100' cy ='100' r ='60' fill='green' stroke='red' stroke-width='10' />" +
 8               "</svg>";
 9
10    // Prepare a path for converted file saving 
11    string savePath = Path.Combine(OutputDir, "circle.xps");
12
13    // Initialize XpsSaveOptions 
14    var options = new XpsSaveOptions();
15
16    // Convert SVG to XPS
17    Converter.ConvertSVG(code, ".", options, savePath);

You can download the complete examples and data files from GitHub.

Save Options

Aspose.HTML allows converting SVG to XPS using default or custom save options. XpsSaveOptions usage enables you to customize the rendering process; you can specify the page size, margins, background color, etc.

PropertyDescription
PageSetupThis property gets a page setup object and uses it for configuration output page-set.
CssGets a CssOptions object which is used for configuration of CSS properties processing.
BackgroundColorThis property sets the color that will fill the background of every page. By default, this property is Transparent.
HorizontalResolutionSets horizontal resolution for output images in pixels per inch. The default value is 300 dpi.
VerticalResolutionSets vertical resolution for output images in pixels per inch. The default value is 300 dpi.

Convert SVG to XPS using XpsSaveOptions

To convert SVG to XPS with XpsSaveOptions specifying, you should follow a few steps:

  1. Load an SVG file using one of the SVGDocument() constructors of the SVGDocument class. ( aspose.svg).
  2. Create a new XpsSaveOptions object and specify save options.
  3. Use the ConvertSVG() method to save SVG as an XPS file. You need to pass the SVGDocument, XpsSaveOptions, and output file path to the ConvertSVG() method for SVG to XPS conversion.

The following C# code snippet shows how to convert SVG to XPS using custom save options:

 1using System.IO;
 2using Aspose.Html.Dom.Svg;
 3using Aspose.Html.Converters;
 4using Aspose.Html.Saving;
 5using Aspose.Html.Drawing;
 6using System.Drawing;
 7...
 8    // Prepare a path to a source SVG file
 9    string documentPath = Path.Combine(DataDir, "aspose.svg");
10
11    // Prepare a path for converted file saving 
12    string savePath = Path.Combine(OutputDir, "aspose-options.xps");
13
14    // Initialize an SVG document from the file
15    using var document = new SVGDocument(documentPath);
16
17    // Initialize XpsSaveOptions. Set up the page-size 500x500 pixels, margins, resolutions and change the background color to AliceBlue 
18    var options = new XpsSaveOptions()
19    {
20        HorizontalResolution = 200,
21        VerticalResolution = 200,
22        BackgroundColor = System.Drawing.Color.AliceBlue
23    };
24    options.PageSetup.AnyPage = new Page(new Aspose.Html.Drawing.Size(500, 500), new Margin(30, 10, 10, 10));
25
26    // Convert SVG to XPS
27    Converter.ConvertSVG(document, options, savePath);

The XpsSaveOptions() constructor initializes an instance of the XpsSaveOptions class that is passed to ConvertSVG() method. The ConvertSVG() method takes the document, options, output file path savePath and performs the conversion operation.

In the above example, we use:

The XpsSaveOptions class provides numerous properties that give you full control over a wide range of parameters and improve the process of converting SVG to XPS format. To learn more about XpsSaveOptions, please read the Fine-Tuning Converters article.

The figure illustrates the aspose-options.xps file with specified page size, background color, etc.

Text “Image of the Aspose logo”

Output Stream Providers

If it is required to save files in the remote storage (e.g., cloud, database, etc.) you can implement the ICreateStreamProvider interface to have manual control over the file creating process. This interface is designed as a callback object to create a stream at the beginning of the document/page (depending on the output format) and release the early created stream after rendering the document/page.

Aspose.HTML for .NET provides various types of output formats for rendering operations. Some of these formats produce a single output file (for instance, PDF, XPS), others create multiple files (Image formats – JPG, PNG, etc.).

The example below shows how to implement and use your own MemoryStreamProvider in the application:

 1using System.IO;
 2using System.Collections.Generic;
 3...
 4    class MemoryStreamProvider : Aspose.Html.IO.ICreateStreamProvider
 5    {
 6        // List of MemoryStream objects created during the document rendering
 7        public List<MemoryStream> Streams { get; } = new List<MemoryStream>();
 8
 9        public Stream GetStream(string name, string extension)
10        {
11            // This method is called when the only one output stream is required, for instance for XPS, PDF or TIFF formats.
12            MemoryStream result = new MemoryStream();
13            Streams.Add(result);
14            return result;
15        }
16
17        public Stream GetStream(string name, string extension, int page)
18        {
19            // This method is called when the creation of multiple output streams are required. For instance, during the rendering HTML to list of image files (JPG, PNG, etc.)
20            MemoryStream result = new MemoryStream();
21            Streams.Add(result);
22            return result;
23        }
24
25        public void ReleaseStream(Stream stream)
26        {
27            //  Here you can release the stream filled with data and, for instance, flush it to the hard-drive
28        }
29
30        public void Dispose()
31        {
32            // Releasing resources
33            foreach (var stream in Streams)
34                stream.Dispose();
35        }
36    }
 1using System.IO;
 2using System.Linq;
 3using Aspose.Html.Converters;
 4using Aspose.Html.Saving;
 5...
 6    // Create an instance of MemoryStreamProvider
 7    using var streamProvider = new MemoryStreamProvider();
 8
 9    // Prepare SVG code
10    var code = "<svg xmlns='http://www.w3.org/2000/svg'>" +
11               "<circle cx='50' cy='50' r='40' stroke='black' stroke-width='3' fill='red' />" +
12               "</svg>";
13
14    // Convert SVG to XPS using the MemoryStreamProvider
15    Converter.ConvertSVG(code, ".", new XpsSaveOptions(), streamProvider);
16
17    // Get access to the memory stream that contains the result data
18    var memory = streamProvider.Streams.First();
19    memory.Seek(0, SeekOrigin.Begin);
20
21    // Flush the result data to the output file
22    using (FileStream fs = File.Create(Path.Combine(OutputDir, "stream-provider.xps")))
23    {
24        memory.CopyTo(fs);
25    }

Check the quality of SVG to XPS conversion with our online SVG to XPS Converter. Upload, convert your files and get results in a few seconds. Try our forceful SVG to XPS Converter for free now!

You can download the complete examples and data files from GitHub.

Text “Banner SVG to XPS Converter”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.