Convert EPUB to XPS – C# code examples
In this article, you will find information on how to convert EPUB to XPS and how to use XpsSaveOptions and ICreateStreamProvider parameters.
Online EPUB Converter
You can check the Aspose.HTML for .NET API functionality and convert EPUB in real-time. Please load an EPUB file from the local file system, select the output format and run the example. In the example, the save options are set by default. You will immediately receive the result as a separate file.
If you want to convert EPUB to XPS programmatically, please see the following C# code examples.
EPUB to XPS by two lines of code
The static methods of the Converter class are primarily used as the easiest way to convert an EPUB file into various formats. You can convert EPUB to XPS in your C# application literally with two lines of code!
1// Open an existing EPUB file for reading
2using var stream = File.OpenRead(DataDir + "input.epub");
3
4// Invoke the ConvertEPUB() method to convert EPUB to XPS
5Converter.ConvertEPUB(stream, new XpsSaveOptions(), Path.Combine(OutputDir, "convert-by-two-lines.xps"));
Convert EPUB to XPS
To convert EPUB to XPS, you should follow a few steps:
- Open an existing EPUB file. In the example, we use the OpenRead() method of System.IO.FileStream class to open and read an EPUB file from the file system at the specified path.
- Create an instance of XpsSaveOptions.
- Use the ConvertEPUB() method of the Converter class to save EPUB as an XPS file. You need to pass the EPUB file stream, XpsSaveOptions, and output file path to the ConvertEPUB() method to convert EPUB to XPS.
The following C# code snippet shows how to convert EPUB to XPS using Aspose.HTML for .NET.
1// Open an existing EPUB file for reading
2using var stream = File.OpenRead(DataDir + "input.epub");
3
4// Prepare a path to save the converted file
5string savePath = Path.Combine(OutputDir, "input-output.xps");
6
7// Create an instance of XpsSaveOptions
8var options = new XpsSaveOptions();
9
10// Call the ConvertEPUB() method to convert EPUB to XPS
11Converter.ConvertEPUB(stream, options, savePath);
You can download the complete examples and data files from GitHub.
Save Options
With Aspose.HTML, you can convert EPUB to XPS format programmatically with full control over a wide range of conversion parameters. XpsSaveOptions usage enables you to tune the rendering process; you can specify the page size, margins, CSS, etc.
Property | Description |
---|---|
PageSetup | This property gets a page setup object and uses it for configuration output page-set. |
Css | Gets a CssOptions object which is used for configuration of CSS properties processing. |
BackgroundColor | This property sets the color that will fill the background of every page. By default, this property is Transparent. |
HorizontalResolution | Sets horizontal resolution for output images in pixels per inch. The default value is 300 dpi. |
VerticalResolution | Sets vertical resolution for output images in pixels per inch. The default value is 300 dpi. |
To learn more about XpsSaveOptions, please read the Fine-Tuning Converters article.
Convert EPUB to XPS using XpsSaveOptions
Aspose.HTML allows converting EPUB to XPS using default or custom save options. You should follow a few steps:
- Open an existing EPUB file.
- Create a new XpsSaveOptions object and specify the required save options.
- Use the ConvertEPUB() method to save EPUB as an XPS file. You need to pass the EPUB file stream, XpsSaveOptions, and output file path to the ConvertEPUB () method for EPUB to XPS conversion.
The following example shows how to use XpsSaveOptions and create an XPS file with custom save options:
1// Open an existing EPUB file for reading
2using var stream = File.OpenRead(DataDir + "input.epub");
3
4// Prepare a path to save the converted file
5string savePath = Path.Combine(OutputDir, "input-options.xps");
6
7// Create an instance of XpsSaveOptions. Set up the page-size and change the background color to LightGray
8var options = new XpsSaveOptions()
9{
10 PageSetup =
11 {
12 AnyPage = new Page()
13 {
14 Size = new Aspose.Html.Drawing.Size(Length.FromPixels(500), Length.FromPixels(500))
15 }
16 },
17 BackgroundColor = System.Drawing.Color.LightGray
18};
19
20// Call the ConvertEPUB() method to convert EPUB to XPS
21Converter.ConvertEPUB(stream, options, savePath);
In the example, we use the OpenRead() method of System.IO.FileStream class to open and read source files from the file system at the specified path. The
XpsSaveOptions() constructor initializes an instance of the XpsSaveOptions class that is passed to ConvertEPUB() method. The ConvertEPUB() method takes the stream
, options
, output file path savePath
and performs the conversion operation. The XpsSaveOptions class provides numerous properties that give you full control over a wide range of parameters and improve the process of EPUB to XPS conversion.
In the example, we use:
BackgroundColor
property that specifies the color that the background will be filled in. The default BackgroundColor is Transparent;PageSetup
property that specifies the page size in pixels.
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.).
Output Stream Providers
If it is required to save files in the remote storage (e.g., cloud, database, etc.) you can implement 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.
The example below shows how to implement and use your own MemoryStreamProvider in the application:
1class MemoryStreamProvider : Aspose.Html.IO.ICreateStreamProvider
2{
3 // List of MemoryStream objects created during the document rendering
4 public List<MemoryStream> Streams { get; } = new List<MemoryStream>();
5
6 public Stream GetStream(string name, string extension)
7 {
8 // This method is called when only one output stream is required, for instance for XPS, PDF or TIFF formats
9 MemoryStream result = new MemoryStream();
10 Streams.Add(result);
11 return result;
12 }
13
14 public Stream GetStream(string name, string extension, int page)
15 {
16 // 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.)
17 MemoryStream result = new MemoryStream();
18 Streams.Add(result);
19 return result;
20 }
21
22 public void ReleaseStream(Stream stream)
23 {
24 // Here you can release the stream filled with data and, for instance, flush it to the hard-drive
25 }
26
27 public void Dispose()
28 {
29 // Releasing resources
30 foreach (var stream in Streams)
31 stream.Dispose();
32 }
33}
1// Create an instance of MemoryStreamProvider
2using var streamProvider = new MemoryStreamProvider();
3
4// Open an existing EPUB file for reading
5using var stream = File.OpenRead(DataDir + "input.epub");
6
7// Prepare a path to save the converted file
8string savePath = Path.Combine(OutputDir, "stream-provider.xps");
9
10// Convert EPUB to XPS by using the MemoryStreamProvider class
11Converter.ConvertEPUB(stream, new XpsSaveOptions(), streamProvider);
12
13// Get access to the memory stream that contains the result data
14var memory = streamProvider.Streams.First();
15memory.Seek(0, SeekOrigin.Begin);
16
17// Flush the result data to the output file
18using (FileStream fs = File.Create(savePath))
19{
20 memory.CopyTo(fs);
21}
The ConvertEPUB(Stream
, XpsSaveOptions
, ICreateStreamProvider
) method takes the conversion source, options, and instance of MemoryStreamProvider, which will be used to get an output stream, and performs the conversion operation.
Aspose.HTML offers a free online EPUB to XPS Converter that converts EPUB to XPS file with high quality, easy and fast. Just upload, convert your files and get results in a few seconds!