XPS 和 OXPS 文件由于其分辨率独立性而经常用于打印。但是,有时我们需要将 XPS 转换为 PDF 或将 OXPS 转换为 PDF。 Aspose.Page for .NET API 可让您以高保真和快速渲染执行这些转换。让我们探索以下用例:

使用 C# 以编程方式将 XPS 转换为 PDF

使用 Aspose.Page for .NET API 将 XPS 转换为 PDF 非常简单。我们将学习以下方法来执行 XPS 文件转换:

i) 在 C# 中将 XPS 的特定页面转换为 PDF

要将 XPS 文档的选定页面转换为 PDF,请按照以下步骤操作:

  1. 初始化 XPS 输入流
  2. 从流中加载 XPS 文档
  3. 初始化 PdfSaveOptions 对象
  4. 指定要转换的页码
  5. 将文档另存为 PDF 文件

下面的代码片段遵循这些步骤,并展示了如何使用 C# 将 XPS 转换为 PDF:

// 初始化 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 文档 = new 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。以下屏幕截图显示了呈现为 PDF 文档的 2 页:

XPS 转 PDF

ii) 在 C# 中将 XPS 的所有页面转换为 PDF

您可以将整个 XPS 文件转换为 PDF。按照以下步骤操作,XPS 文件的所有页面都将转换为 PDF 文件:

  1. 加载输入 XPS 文件
  2. 使用必要的参数初始化选项对象
  3. 创建 PdfDevice 的实例以进行渲染
  4. 将 XPS 导出为 PDF 文档

下面的代码片段基于所有这些步骤,显示了如何使用 C# 语言将 XPS 文件转换为 PDF:

// 初始化 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 文档 = new 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);
}

使用 C# 将 OXPS 转换为 PDF

OXPS 格式是 XPS 文件格式的更新和高级形式。但是,某些旧操作系统不支持此类文件。 Aspose.Page for .NET API 也能够转换 OXPS 文件。让我们继续学习以下使用场景:

i) 在 C# 中将一些 OXPS 页面转换为 PDF

一个 OXPS 文件可能包含许多页面,并且可以通过以下步骤将任意数量的页面转换为 PDF:

  1. 加载 OXPS 文件
  2. 声明 PdfSaveOptions 对象
  3. 设置要转换的页码
  4. 将 OXPS 渲染为 PDF

以下代码片段显示了如何使用 C# 将 OXPS 转换为 PDF。如代码片段中所述,它将 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 文档 = new 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) 在 C# 中将 OXPS 的所有页面转换为 PDF

转换 OXPS 的所有页面很简单,并且与我们上面考虑的示例相关。让我们按照以下步骤将 OXPS 文件的所有页面转换为单个 PDF 文档:

  1. 初始化 OXPS 输入流
  2. 从流中加载 OXPS 文件
  3. 实例化 PdfSaveOptions 类的对象
  4. 将 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());
// 或直接从文件加载 OXPS 文档。那时不需要 xpsStream。
// XpsDocument 文档 = new 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);
}

结论

在本文中,您学习了如何使用 C# 以编程方式将 XPS 转换为 PDF 和 OXPS 转换为 PDF。您已经通过 C# 代码示例和屏幕截图了解了高保真、高效、快速的文件格式转换。您可以借助 API 文档API 参考 进一步探索 Aspose.Page for .NET API。此外,请随时在 免费支持论坛 提出任何问题。

也可以看看