Mesclar documentos XPS para PDF

Solução de API C++ para combinar vários arquivos XPS

 

O formato de arquivo XPS permite o armazenamento de vários documentos em um único arquivo e também pode conter várias páginas. Aspose.Page API Solution for C++ oferece a capacidade de mesclar vários arquivos em um, resultando em um arquivo XPS ou PDF que contém o conteúdo combinado de todos os arquivos originais.

Aqui você encontrará um exemplo de código de como usar a API para mesclar arquivos XPS. Para explorar como essa funcionalidade pode ser integrada a uma solução da Web ou usada para mesclagem de arquivos online, você pode experimentar a plataforma cruzada XPS Merger ferramenta.

Para mesclar arquivos PS e EPS, você precisa:

  • Aspose.Page para C++ API, que é uma API de manipulação e conversão de documentos rica em recursos, poderosa e fácil de usar para a plataforma C++.

  • Você pode baixar sua versão mais recente diretamente, basta abrir o gerenciador de pacotes NuGet, procurar por Aspose.Page.Cpp e instalar. Você também pode usar o seguinte comando no console do gerenciador de pacotes.

Package Manager Console Command


    PM> Install-Package Aspose.Page

Etapas para mesclar vários arquivos XPS em PDF com C++.

  1. Defina o caminho para o diretório de documentos.
  2. Inicialize a saída PDF e os fluxos de entrada do arquivo XPS.
  3. Crie uma instância de XpsDocument a partir do fluxo de entrada criado anteriormente.
  4. Inicialize o objeto de opções com os parâmetros TextCompression, ImageCompression, JpegQualityLevel para o arquivo de saída por meio de PdfSaveOptions Turma.
  5. Usando a classe PdfDevice , crie um dispositivo de renderização para o formato PDF.
  6. Mesclar arquivos XPS para produzir documento XPS.

Código C++ para mesclar XPS para 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());
    }

Etapas para mesclar vários arquivos XPS em um único arquivo com C++.

  1. Inicialize os fluxos de entrada e saída do XPS.
  2. Crie uma matriz de arquivos XPS para serem mesclados com o primeiro.
  3. Crie uma instância de XpsDocument a partir do fluxo de entrada criado anteriormente.
  4. Mesclar arquivos XPS para produzir documento XPS.

Código C++ para mesclar 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 O que é XPS Formato de Arquivo

O formato XPS é semelhante ao formato PDF. Ambos são formatos de linguagem de descrição de página (PDL). EPS é baseado em HTML e não em linguagem PostScript. O arquivo .eps é capaz de conter uma marcação da estrutura do documento junto com as informações de como o documento ficaria. Há também instruções adicionadas sobre como imprimir e renderizar o documento. A característica do formato é que ele corrige a descrição do documento, o que significa que ele terá a mesma aparência, não importa quem e de qual sistema operacional o abra.