Convertir des fichiers XPS ou OXPS au format PDF à l'aide de C++

Les documents XPS et OXPS définissent la mise en page, l’apparence et les informations d’impression. Ces documents sont similaires aux fichiers PDF. En raison de la grande popularité du format PDF, vous pourriez vous retrouver dans des situations où vous devez convertir des documents XPS et OXPS au format PDF. À cette fin, cet article vous apprendra comment convertir des documents XPS et OXPS au format PDF à l’aide de C++.

API C++ pour la conversion de documents XPS et OXPS au format PDF

Aspose.Page pour C++ est une bibliothèque C++ pour le rendu et la manipulation de fichiers XPS et PostScript. Il vous permet de créer, lire et mettre à jour des documents XPS. De plus, l’API prend en charge la conversion de documents XPS et OXPS au format PDF. Vous pouvez soit installer l’API via NuGet ou la télécharger directement à partir de la section downloads.

PM> Install-Package Aspose.Page.Cpp

Convertir des documents XPS/OXPS au format PDF

Voici les étapes pour convertir des documents XPS et OXPS au format PDF.

L’exemple de code suivant montre comment convertir des documents XPS/OXPS au format PDF à l’aide de C++.

// Fichier de sortie
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Effacement des ressources sous l'instruction 'using'
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------
try {
	// Fichier source
	System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
	// Effacement des ressources sous l'instruction 'using'
	System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
	// ------------------------------------------

	try
	{
		// Charger le document XPS à partir du flux
		System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
		// ou chargez le document XPS directement à partir du fichier. Aucun xpsStream n'est alors nécessaire.
		// Document XpsDocument = nouveau XpsDocument(inputFileName, new XpsLoadOptions());

		// Initialisez l'objet PdfSaveOptions avec les paramètres nécessaires.
		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;
		}();

		// Créer un périphérique de rendu pour le format PDF
		System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);

		// Enregistrer le fichier PDF
		document->Save(device, options);
	}
	catch (...)
	{
		__dispose_guard_0.SetCurrentException(std::current_exception());
	}
}
catch (...)
{
	__dispose_guard_1.SetCurrentException(std::current_exception());
}
Image du fichier PDF de sortie généré par l'exemple de code

Image du fichier PDF de sortie généré par l’exemple de code

Convertir des pages sélectionnées de documents XPS/OXPS au format PDF

Lors de la conversion des fichiers XPS et OXPS au format PDF, vous pouvez également spécifier les pages que vous souhaitez convertir. Le fichier PDF de sortie ne contiendra que les pages que vous sélectionnez. Pour y parvenir, veuillez suivre les étapes ci-dessous.

L’exemple de code suivant montre comment convertir des pages sélectionnées de documents XPS et OXPS au format PDF à l’aide de C++.

// Fichier de sortie
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Effacement des ressources sous l'instruction 'using'
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------
try {
	// Fichier source
	System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
	// Effacement des ressources sous l'instruction 'using'
	System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
	// ------------------------------------------

	try
	{
		// Charger le document XPS à partir du flux
		System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
		// ou chargez le document XPS directement à partir du fichier. Aucun xpsStream n'est alors nécessaire.
		// Document XpsDocument = nouveau XpsDocument(inputFileName, new XpsLoadOptions());

		// Initialisez l'objet PdfSaveOptions avec les paramètres nécessaires.
		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;
		}();

		// Créer un périphérique de rendu pour le format PDF
		System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);

		// Enregistrer le fichier PDF
		document->Save(device, options);
	}
	catch (...)
	{
		__dispose_guard_0.SetCurrentException(std::current_exception());
	}
}
catch (...)
{
	__dispose_guard_1.SetCurrentException(std::current_exception());
}
Image du fichier PDF de sortie généré par l'exemple de code

Image du fichier PDF de sortie généré par l’exemple de code

Obtenez une licence gratuite

Vous pouvez essayer l’API sans limitation d’évaluation en demandant une licence temporaire gratuite.

Conclusion

Dans cet article, vous avez appris à convertir des documents XPS et OXPS au format PDF à l’aide de C++. De plus, vous avez vu comment convertir des pages sélectionnées des documents XPS/OXPS au format PDF à l’aide d’Aspose.Page for C++. L’API fournit de nombreuses fonctionnalités supplémentaires pour travailler avec des documents XPS que vous pouvez explorer en détail en visitant la documentation officielle. En cas de questions, n’hésitez pas à nous contacter sur notre forum d’assistance gratuit.

Voir également