
Los documentos XPS y OXPS definen el diseño, la apariencia y la información de impresión. Estos documentos son similares a los archivos PDF. Debido a la gran popularidad del formato PDF, es posible que se encuentre en situaciones en las que necesite convertir documentos XPS y OXPS a formato PDF. Con ese fin, este artículo le enseñará cómo convertir documentos XPS y OXPS a formato PDF usando C++.
- API de C++ para convertir documentos XPS y OXPS a formato PDF
- Convierta documentos XPS/OXPS a formato PDF
- Convertir páginas seleccionadas de documentos XPS/OXPS a formato PDF
API de C++ para convertir documentos XPS y OXPS a formato PDF
Aspose.Page for C++ es una biblioteca de C++ para renderizar y manipular archivos XPS y PostScript. Le permite crear, leer y actualizar documentos XPS. Además, la API admite la conversión de documentos XPS y OXPS a formato PDF. Puede instalar la API a través de NuGet o descargarla directamente desde la sección descargas.
PM> Install-Package Aspose.Page.Cpp
Convierta documentos XPS/OXPS a formato PDF
Los siguientes son los pasos para convertir documentos XPS y OXPS a formato PDF.
- Inicialice una secuencia con el archivo PDF de salida.
- Inicialice una secuencia con el archivo XPS/OXPS de origen.
- Cree una instancia de la clase XpsDocument usando la transmisión XPS/OXPS.
- Cree una instancia de la clase PdfSaveOptions.
- Especifique opciones como JpegQualityLevel y ImageCompression.
- Guarde el archivo PDF de salida usando XpsDocument->Save(System::SharedPtr dispositivo, System::PtrCompartido opciones) método.
El siguiente código de ejemplo muestra cómo convertir documentos XPS/OXPS a formato PDF usando C++.
// Archivo de salida
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Borrar recursos bajo la declaración 'usando'
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------------------------------------
try {
// Archivo fuente
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Borrar recursos bajo la declaración 'usando'
System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
// ------------------------------------------------------------------------
try
{
// Cargue el documento XPS desde la secuencia
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// o cargue el documento XPS directamente desde el archivo. Entonces no se necesita xpsStream.
// documento XpsDocument = new XpsDocument(inputFileName, new XpsLoadOptions());
// Inicialice el objeto PdfSaveOptions con los parámetros necesarios.
System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfSaveOptions> options = [&] {
auto tmp_0 = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfSaveOptions>();
tmp_0->set_JpegQualityLevel(100);
tmp_0->set_ImageCompression(Aspose::Page::XPS::Presentation::Pdf::PdfImageCompression::Jpeg);
tmp_0->set_TextCompression(Aspose::Page::XPS::Presentation::Pdf::PdfTextCompression::Flate);
return tmp_0;
}();
// Crear dispositivo de renderizado para formato PDF
System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);
// Guardar archivo PDF
document->Save(device, options);
}
catch (...)
{
__dispose_guard_0.SetCurrentException(std::current_exception());
}
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}

Imagen del archivo PDF de salida generado por el código de muestra
Convertir páginas seleccionadas de documentos XPS/OXPS a formato PDF
Al convertir archivos XPS y OXPS a formato PDF, también puede especificar las páginas que desea convertir. El archivo PDF de salida contendrá solo las páginas que seleccione. Para lograr esto, siga los pasos que se indican a continuación.
- Inicialice una secuencia con el archivo PDF de salida.
- Inicialice una secuencia con el archivo XPS/OXPS de origen.
- Cree una instancia de la clase XpsDocument usando la transmisión XPS/OXPS.
- Cree una instancia de la clase PdfSaveOptions.
- Especifique opciones como JpegQualityLevel y ImageCompression.
- Especifique las páginas que desea convertir mediante PdfSaveOptions->set_PageNumbers(System::ArrayPtr<int32\t> valor) método.
- Guarde el archivo PDF de salida usando XpsDocument->Save(System::SharedPtr dispositivo, System::PtrCompartido opciones) método.
El siguiente código de ejemplo muestra cómo convertir páginas seleccionadas de documentos XPS y OXPS a formato PDF mediante C++.
// Archivo de salida
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Borrar recursos bajo la declaración 'usando'
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------------------------------------
try {
// Archivo fuente
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Borrar recursos bajo la declaración 'usando'
System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
// ------------------------------------------------------------------------
try
{
// Cargue el documento XPS desde la secuencia
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// o cargue el documento XPS directamente desde el archivo. Entonces no se necesita xpsStream.
// documento XpsDocument = new XpsDocument(inputFileName, new XpsLoadOptions());
// Inicialice el objeto PdfSaveOptions con los parámetros necesarios.
System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfSaveOptions> options = [&] {
auto tmp_0 = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfSaveOptions>();
tmp_0->set_JpegQualityLevel(100);
tmp_0->set_ImageCompression(Aspose::Page::XPS::Presentation::Pdf::PdfImageCompression::Jpeg);
tmp_0->set_TextCompression(Aspose::Page::XPS::Presentation::Pdf::PdfTextCompression::Flate);
tmp_0->set_PageNumbers(System::MakeArray<int32_t>({ 1, 3 }));
return tmp_0;
}();
// Crear dispositivo de renderizado para formato PDF
System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);
// Guardar archivo PDF
document->Save(device, options);
}
catch (...)
{
__dispose_guard_0.SetCurrentException(std::current_exception());
}
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}

Imagen del archivo PDF de salida generado por el código de muestra
Obtenga una licencia gratis
Puede probar la API sin limitaciones de evaluación solicitando una licencia temporal gratuita.
Conclusión
En este artículo, aprendió cómo convertir documentos XPS y OXPS a formato PDF usando C++. Además, ha visto cómo convertir páginas seleccionadas de los documentos XPS/OXPS a formato PDF utilizando Aspose.Page for C++. La API proporciona muchas características adicionales para trabajar con documentos XPS que puede explorar en detalle visitando la documentación oficial. Si tiene alguna pregunta, no dude en comunicarse con nosotros en nuestro foro de soporte gratuito.