Combinar documentos XPS a PDF

Solución API C++ para combinar varios archivos XPS

 

El formato de archivo XPS permite el almacenamiento de varios documentos en un solo archivo y también puede contener varias páginas. Aspose.Page API Solution para C++ ofrece la capacidad de fusionar varios archivos en uno solo, lo que da como resultado un archivo XPS o PDF que contiene el contenido combinado de todos los archivos originales.

Aquí encontrará un ejemplo de código de cómo usar la API para fusionar archivos XPS. Para explorar cómo se puede integrar esta funcionalidad en una solución web o utilizarla para la combinación de archivos en línea, puede probar XPS Merger multiplataforma. herramienta.

Para fusionar archivos PS y EPS, necesita:

  • Aspose.Page para la API de C++, que es una API de manipulación y conversión de documentos rica en funciones, potente y fácil de usar para la plataforma C++.

  • Puede descargar su última versión directamente, simplemente abra el administrador de paquetes NuGet y busque Aspose.Page.Cpp e instálelo. También puede usar el siguiente comando desde la Consola del administrador de paquetes.

Package Manager Console Command


    PM> Install-Package Aspose.Page

Pasos para fusionar varios archivos XPS a PDF con C++.

  1. Establezca la ruta al directorio de documentos.
  2. Inicialice los flujos de salida de PDF y de entrada de archivos XPS.
  3. Cree una instancia de XpsDocument a partir del flujo de entrada creado anteriormente.
  4. Inicialice el objeto de opciones con los parámetros TextCompression, ImageCompression, JpegQualityLevel para el archivo de salida mediante PdfSaveOptions Clase.
  5. Usando la clase PdfDevice , cree un dispositivo de representación para el formato PDF.
  6. Combine archivos XPS para generar un documento XPS.

Código C++ para fusionar XPS a PDF

    using Aspose::Page::XPS;
    using Aspose::Page::IO;
    using Aspose::Page::Presentation::Pdf;
    // Input file
    System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(RunExamples::outDir() + u"XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
    // Clearing resources under 'using' statement
    System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
    // ------------------------------------------
    try {
	    System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(RunExamples::dataDir() + u"input xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
	    // Clearing resources under 'using' statement
	    System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
	    // ------------------------------------------

	    try
	    {
		    // Load XPS document form the stream
		    System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<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.
		    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, 2, 6 })); return tmp_0; }();

		    // Create rendering device for PDF format
		    System::SharedPtr<Aspose::Page::Xps::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::Xps::Presentation::Pdf::PdfDevice>(pdfStream);

		    // Create an array of XPS files that will be merged with the first one
		    System::ArrayPtr<System::String> filesForMerge = System::MakeArray<System::String>({dataDir() + u"input2.xps", dataDir() + u"input3.xps"});

		    document->Merge(filesForMerge, device, options);
	    }
	    catch (...)
	    {
		    __dispose_guard_0.SetCurrentException(std::current_exception());
	    }
    }
    catch (...)
    {
	    __dispose_guard_1.SetCurrentException(std::current_exception());
    }

Pasos para fusionar varios archivos XPS en un solo archivo con C++.

  1. Inicialice los flujos de entrada y salida de XPS.
  2. Cree una matriz de archivos XPS para fusionarlos con el primero.
  3. Cree una instancia de XpsDocument a partir de un flujo de entrada anterior.
  4. Combine archivos XPS para generar un documento XPS.

Código C++ para fusionar XPS a XPS

    // Output stream
    System::SharedPtr<System::IO::Stream> outStream = System::IO::File::Open(RunExamples::outDir() + u"mergedXPSfiles.xps", System::IO::FileMode::Create, System::IO::FileAccess::Write);
    // Clearing resources under 'using' statement
    System::Details::DisposeGuard<1> __dispose_guard_1({ outStream });
    // ------------------------------------------
    try {
	    System::SharedPtr<System::IO::Stream> inStream = System::IO::File::Open(RunExamples::dataDir() + u"input.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
	    // Clearing resources under 'using' statement
	    System::Details::DisposeGuard<1> __dispose_guard_0({ inStream });
	    // ------------------------------------------

	    try
	    {
		    // Load XPS document form the stream
		    System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
		    // or load XPS document directly from file. No xpsStream is needed then.
		    // XpsDocument document = new XpsDocument(inputFileName, new XpsLoadOptions());

		    // Create an array of XPS files that will be merged with the first one
		    System::ArrayPtr<System::String> filesForMerge = System::MakeArray<System::String>({dataDir() + u"input2.xps", dataDir() + u"input3.xps"});

		    document->Merge(filesForMerge, outStream);
	    }
	    catch (...)
	    {
		    __dispose_guard_0.SetCurrentException(std::current_exception());
	    }
    }
    catch (...)
    {
	    __dispose_guard_1.SetCurrentException(std::current_exception());
    }

XPS Qué es XPS Formato de archivo

El formato XPS es similar al formato PDF. Ambos son formatos de lenguaje de descripción de página (PDL). EPS se basa en HTML y no en lenguaje PostScript. El archivo .eps puede contener un marcado de la estructura del documento junto con la información sobre cómo se vería el documento. También hay instrucciones adicionales sobre cómo imprimir y renderizar el documento. La característica del formato es que corrige la descripción del documento, lo que significa que se verá igual sin importar quién y desde qué sistema operativo lo abra.