Converta arquivos XPS ou OXPS para o formato PDF usando C++

Os documentos XPS e OXPS definem o layout, a aparência e as informações de impressão. Esses documentos são semelhantes aos arquivos PDF. Devido à alta popularidade do formato PDF, você pode se encontrar em situações em que precisa converter documentos XPS e OXPS para o formato PDF. Para isso, este artigo ensinará como converter documentos XPS e OXPS para o formato PDF usando C++.

API C++ para converter documentos XPS e OXPS para formato PDF

Aspose.Page for C++ é uma biblioteca C++ para renderização e manipulação de arquivos XPS e PostScript. Permite criar, ler e atualizar documentos XPS. Além disso, a API suporta a conversão de documentos XPS e OXPS para o formato PDF. Você pode instalar a API por meio do NuGet ou baixá-la diretamente da seção downloads.

PM> Install-Package Aspose.Page.Cpp

Converter documentos XPS/OXPS para formato PDF

A seguir estão as etapas para converter documentos XPS e OXPS para o formato PDF.

O código de exemplo a seguir mostra como converter documentos XPS/OXPS em formato PDF usando C++.

// Arquivo de saída
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Limpando recursos sob a instrução 'usando'
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------
try {
	// Arquivo fonte
	System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
	// Limpando recursos sob a instrução 'usando'
	System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
	// ------------------------------------------

	try
	{
		// Carregar documento XPS do stream
		System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
		// ou carregue o documento XPS diretamente do arquivo. Nenhum xpsStream é necessário então.
		// Documento XpsDocument = new XpsDocument(inputFileName, new XpsLoadOptions());

		// Inicialize o objeto PdfSaveOptions com os parâmetros necessários.
		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;
		}();

		// Criar dispositivo de renderização para formato PDF
		System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);

		// Salvar arquivo PDF
		document->Save(device, options);
	}
	catch (...)
	{
		__dispose_guard_0.SetCurrentException(std::current_exception());
	}
}
catch (...)
{
	__dispose_guard_1.SetCurrentException(std::current_exception());
}
Imagem do arquivo PDF de saída gerado pelo código de amostra

Imagem do arquivo PDF de saída gerado pelo código de amostra

Converter páginas selecionadas de documentos XPS/OXPS para formato PDF

Ao converter arquivos XPS e OXPS para o formato PDF, você também pode especificar as páginas que deseja converter. O arquivo PDF de saída conterá apenas as páginas que você selecionar. Para conseguir isso, siga os passos abaixo.

O código de exemplo a seguir demonstra como converter páginas selecionadas de documentos XPS e OXPS para o formato PDF usando C++.

// Arquivo de saída
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Limpando recursos sob a instrução 'usando'
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------
try {
	// Arquivo fonte
	System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
	// Limpando recursos sob a instrução 'usando'
	System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
	// ------------------------------------------

	try
	{
		// Carregar documento XPS do stream
		System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
		// ou carregue o documento XPS diretamente do arquivo. Nenhum xpsStream é necessário então.
		// Documento XpsDocument = new XpsDocument(inputFileName, new XpsLoadOptions());

		// Inicialize o objeto PdfSaveOptions com os parâmetros necessários.
		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;
		}();

		// Criar dispositivo de renderização para formato PDF
		System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);

		// Salvar arquivo PDF
		document->Save(device, options);
	}
	catch (...)
	{
		__dispose_guard_0.SetCurrentException(std::current_exception());
	}
}
catch (...)
{
	__dispose_guard_1.SetCurrentException(std::current_exception());
}
Imagem do arquivo PDF de saída gerado pelo código de amostra

Imagem do arquivo PDF de saída gerado pelo código de amostra

Obtenha uma licença gratuita

Você pode experimentar a API sem limitações de avaliação solicitando uma licença temporária gratuita.

Conclusão

Neste artigo, você aprendeu como converter documentos XPS e OXPS para o formato PDF usando C++. Além disso, você viu como converter páginas selecionadas dos documentos XPS/OXPS para o formato PDF usando a API Aspose.Page para C++. A API fornece muitos recursos adicionais para trabalhar com documentos XPS que você pode explorar em detalhes visitando a documentação oficial. Em caso de dúvidas, sinta-se à vontade para entrar em contato conosco em nosso fórum de suporte gratuito.

Veja também