Convert XPS to PDF using .NET

[ ]

Aspose.Page .NET XPS to PDF converter allows to convert XPS document to PDF document with using of any language supported by .Net platform: C#, VB, J#.
It is necessary to do several steps in order to perform XPS to PDF conversion:

  1. Initialize an input stream for input XPS document.
  2. Initialize an output stream for output PDF document.
  3. Create an instance of XpsDocument from created earlier input stream.
  4. Specify TextCompressionImageCompressionJpegQualityLevel, and other options of PdfSaveOptions.
  5. Create an instance of PdfDevice from created earlier output stream.
  6. Save XPS document as PDF with PDF save options.

Following code snippet shows how to convert XPS to PDF document in C#:

// For complete examples and data files, please go to
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir_WorkingWithDocumentConversion();
// Initialize PDF output stream
using (System.IO.Stream pdfStream = System.IO.File.Open(dataDir + "input.xps", System.IO.FileMode.Create, System.IO.FileAccess.Write))
// Initialize XPS input stream
using (System.IO.Stream xpsStream = System.IO.File.Open(dataDir + "XPStoPDF.pdf", System.IO.FileMode.Open, System.IO.FileAccess.Read))
    // Load XPS document form the stream
    XpsDocument document = new XpsDocument(xpsStream, new XpsLoadOptions());
    // or load XPS document directly from file. No xpsStream is needed then.
    // XpsDocument document = new XpsDocument(inputFileName, new XpsLoadOptions());

    // Initialize options object with necessary parameters.
    Aspose.Page.XPS.Presentation.Pdf.PdfSaveOptions options = new Aspose.Page.XPS.Presentation.Pdf.PdfSaveOptions()
        JpegQualityLevel = 100,
        ImageCompression = Aspose.Page.XPS.Presentation.Pdf.PdfImageCompression.Jpeg,
        TextCompression = Aspose.Page.XPS.Presentation.Pdf.PdfTextCompression.Flate,
        PageNumbers = new int[] { 1, 2, 6 }

    // Create rendering device for PDF format
    Aspose.Page.XPS.Presentation.Pdf.PdfDevice device = new Aspose.Page.XPS.Presentation.Pdf.PdfDevice(pdfStream);

    document.Save(device, options);

Let’s consider PdfSaveOptions. Using this class we can assign different conversion parameters while converting XPS to PDF.

  • JpegQualityLevel controls a quality of images in PDF document if ImageCompression algorithm is JPEG and can be from 0 to 100.
  • ImageCompression algorithm encapsulated in PdfImageCompression Enumeration, may be Run Length Encoding (RLE), Flate, Lempel-Ziv-Welch (LZW) with base or optimized pedictor, JPEG , none (raw image bytes) and auto (the most appropriate compression for each image). Default is auto compression.
  • TextCompression algorithm encapsulated in PdfTextCompression Enumeration, may be Run Length Encoding (RLE), Flate, Lempel-Ziv-Welch (LZW) and none. Default value in XPS to PDF conversion is Flate.
  • EncryptionDetails encapsulated in PdfEncryptionDetails. It allows setting encryption algorithm, permisions, owner and user passwords for PDF document.
  • PageNumbers represents an array of numbers of pages which will be saved to PDF.
  • OutlineTreeExpansionLevel and OutlineTreeHeight controls view of document outline.