Файлы XPS и OXPS часто используются для печати из-за их независимости от разрешения. Однако иногда нам нужно преобразовать XPS в PDF или OXPS в PDF. Aspose.Page for .NET API позволяет выполнять эти преобразования с высокой точностью и быстрым рендерингом. Давайте рассмотрим следующие варианты использования:

Преобразование XPS в PDF программно с помощью C#

Преобразование XPS в PDF очень просто с Aspose.Page для .NET API. Мы изучим следующие подходы к преобразованию файлов XPS:

i) Преобразование определенных страниц XPS в PDF на С#

Для преобразования выбранных страниц документа XPS в PDF выполните следующие действия:

  1. Инициализировать входной поток XPS
  2. Загрузить документ XPS из потока
  3. Инициализировать объект PdfSaveOptions
  4. Укажите номера страниц для преобразования
  5. Сохраните документ как файл PDF

Приведенный ниже фрагмент кода следует этим шагам и показывает, как преобразовать XPS в PDF с помощью C#:

// Инициализировать выходной поток PDF
using (System.IO.Stream pdfStream = System.IO.File.Open(dataDir + "XPStoPDF.pdf", System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write))
// Инициализировать входной поток XPS
//используя (System.IO.Stream xpsStream = System.IO.File.Open(dataDir + "input.xps", System.IO.FileMode.Open))
using (System.IO.Stream xpsStream = System.IO.File.Open(dataDir + "sample.xps", System.IO.FileMode.Open))
{
    // Загрузить документ XPS из потока
    Aspose.Page.XPS.XpsDocument document = new Aspose.Page.XPS.XpsDocument(xpsStream, new Aspose.Page.XPS.XpsLoadOptions());
    // или загрузить документ XPS непосредственно из файла. Тогда xpsStream не нужен.
    // XpsDocument document = новый XpsDocument (inputFileName, new XpsLoadOptions());

    // Инициализируйте объект опций с необходимыми параметрами.
    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, 3}
    };
    // Создать устройство рендеринга для формата PDF
    Aspose.Page.XPS.Presentation.Pdf.PdfDevice device = new Aspose.Page.XPS.Presentation.Pdf.PdfDevice(pdfStream);

    document.Save(device, options);
}

В этом фрагменте кода в качестве входного файла используется документ XPS, содержащий несколько страниц. Принимая во внимание, что только номера страниц 1 и 3 преобразуются в PDF, как указано во фрагменте кода. На следующем снимке экрана показаны 2 страницы, преобразованные в документ PDF:

XPS в PDF

ii) Преобразование всех страниц XPS в PDF на С#

Вы можете преобразовать целый файл XPS в PDF. Выполните следующие действия, и все страницы файла XPS будут преобразованы в файл PDF:

  1. Загрузить входной файл XPS
  2. Инициализировать объект параметров с необходимыми параметрами
  3. Создайте экземпляр PdfDevice для рендеринга.
  4. Экспорт XPS в документ PDF

Приведенный ниже фрагмент кода основан на всех этих шагах и показывает, как преобразовать файл XPS в PDF с помощью языка C#:

// Инициализировать выходной поток PDF
using (System.IO.Stream pdfStream = System.IO.File.Open(dataDir + "XPStoPDF.pdf", System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write))
// Инициализировать входной поток XPS
//используя (System.IO.Stream xpsStream = System.IO.File.Open(dataDir + "input.xps", System.IO.FileMode.Open))
using (System.IO.Stream xpsStream = System.IO.File.Open(dataDir + "sample.xps", System.IO.FileMode.Open))
{
// Загрузить документ XPS из потока
Aspose.Page.XPS.XpsDocument document = new Aspose.Page.XPS.XpsDocument(xpsStream, new Aspose.Page.XPS.XpsLoadOptions());
// или загрузить документ XPS непосредственно из файла. Тогда xpsStream не нужен.
// XpsDocument document = новый XpsDocument (inputFileName, new XpsLoadOptions());

// Инициализируйте объект опций с необходимыми параметрами.
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,
};
// Создать устройство рендеринга для формата PDF
Aspose.Page.XPS.Presentation.Pdf.PdfDevice device = new Aspose.Page.XPS.Presentation.Pdf.PdfDevice(pdfStream);

document.Save(device, options);
}

Преобразование OXPS в PDF с помощью C#

Формат OXPS — это обновленная и усовершенствованная форма формата файлов XPS. Однако такие файлы не поддерживаются некоторыми старыми операционными системами. Aspose.Page for .NET API также может конвертировать файлы OXPS. Перейдем к изучению следующих сценариев использования:

i) Преобразование некоторых страниц OXPS в PDF на C#

Файл OXPS может содержать много страниц, и любое количество страниц можно преобразовать в PDF, выполнив следующие действия:

  1. Загрузить OXPS-файл
  2. Объявить объект PdfSaveOptions
  3. Установите номера страниц, которые вы хотите преобразовать
  4. Рендеринг OXPS в PDF

В следующем фрагменте кода показано, как преобразовать OXPS в PDF с помощью C#. Он преобразует первую страницу файла OXPS в PDF, как указано во фрагменте кода.

// Инициализировать выходной поток PDF
using (System.IO.Stream pdfStream = System.IO.File.Open(dataDir + "OXPStoPDF.pdf", System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write))
// Инициализировать входной поток OXPS
//используя (System.IO.Stream xpsStream = System.IO.File.Open(dataDir + "input.oxps", System.IO.FileMode.Open))
using (System.IO.Stream xpsStream = System.IO.File.Open(dataDir + "sample.oxps", System.IO.FileMode.Open))
{
    // Загрузить документ OXPS из потока
    Aspose.Page.XPS.XpsDocument document = new Aspose.Page.XPS.XpsDocument(xpsStream, new Aspose.Page.XPS.XpsLoadOptions());
    // или загрузить документ XPS непосредственно из файла. Тогда xpsStream не нужен.
    // XpsDocument document = новый XpsDocument (inputFileName, new XpsLoadOptions());

    // Инициализируйте объект опций с необходимыми параметрами.
    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}
    };
    // Создать устройство рендеринга для формата PDF
    Aspose.Page.XPS.Presentation.Pdf.PdfDevice device = new Aspose.Page.XPS.Presentation.Pdf.PdfDevice(pdfStream);

    document.Save(device, options);
}

ii) Преобразование всех страниц OXPS в PDF на С#

Конвертация всех страниц OXPS проста и связана с примером, который мы рассмотрели выше. Давайте выполним следующие шаги и преобразуем все страницы файла OXPS в один документ PDF:

  1. Инициализировать входной поток OXPS
  2. Загрузите файл OXPS из потока
  3. Создать экземпляр класса PdfSaveOptions
  4. Экспорт OXPS в файл PDF

Приведенный ниже фрагмент кода выполняет эти шаги один за другим и преобразует OXPS в PDF с помощью C#:

// Инициализировать выходной поток PDF
using (System.IO.Stream pdfStream = System.IO.File.Open(dataDir + "OXPStoPDF.pdf", System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write))
// Инициализировать входной поток OXPS
//используя (System.IO.Stream xpsStream = System.IO.File.Open(dataDir + "input.oxps", System.IO.FileMode.Open))
using (System.IO.Stream xpsStream = System.IO.File.Open(dataDir + "sample.oxps", System.IO.FileMode.Open))
{
// Загрузить документ OXPS из потока
Aspose.Page.XPS.XpsDocument document = new Aspose.Page.XPS.XpsDocument(xpsStream, new Aspose.Page.XPS.XpsLoadOptions());
// или загрузите документ OXPS прямо из файла. Тогда xpsStream не нужен.
// XpsDocument document = новый XpsDocument (inputFileName, new XpsLoadOptions());

// Инициализируйте объект опций с необходимыми параметрами.
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,
};
// Создать устройство рендеринга для формата PDF
Aspose.Page.XPS.Presentation.Pdf.PdfDevice device = new Aspose.Page.XPS.Presentation.Pdf.PdfDevice(pdfStream);

document.Save(device, options);
}

Вывод

В этой статье вы узнали, как программно преобразовать XPS в PDF и OXPS в PDF с помощью C#. С помощью примеров кода C# и снимков экрана вы узнали о высокой точности, эффективности и быстроте преобразования форматов файлов. Вы можете дополнительно изучить API Aspose.Page для .NET с помощью документации по API и справочных материалов по API. Кроме того, не стесняйтесь задавать любые вопросы на Free Support Forums.

Смотрите также