Converti file XPS o OXPS in formato PDF utilizzando C++

I documenti XPS e OXPS definiscono il layout, l’aspetto e le informazioni di stampa. Questi documenti sono simili ai file PDF. A causa dell’elevata popolarità del formato PDF, potresti trovarti in situazioni in cui devi convertire documenti XPS e OXPS in formato PDF. A tal fine, questo articolo ti insegnerà come convertire documenti XPS e OXPS in formato PDF utilizzando C++.

API C++ per la conversione di documenti XPS e OXPS in formato PDF

Aspose.Page for C++ è una libreria C++ per il rendering e la manipolazione di file XPS e PostScript. Ti permette di creare, leggere e aggiornare documenti XPS. Inoltre, l’API supporta la conversione di documenti XPS e OXPS in formato PDF. Puoi installare l’API tramite NuGet o scaricarla direttamente dalla sezione download.

PM> Install-Package Aspose.Page.Cpp

Converti documenti XPS/OXPS in formato PDF

Di seguito sono riportati i passaggi per convertire i documenti XPS e OXPS in formato PDF.

Il codice di esempio seguente mostra come convertire documenti XPS/OXPS in formato PDF utilizzando C++.

// File di uscita
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Cancellazione delle risorse nella dichiarazione "utilizzo".
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// -------------------------------------------
try {
	// File sorgente
	System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
	// Cancellazione delle risorse nella dichiarazione "utilizzo".
	System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
	// -------------------------------------------

	try
	{
		// Carica il documento XPS dallo stream
		System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
		// o caricare il documento XPS direttamente dal file. Non è necessario xpsStream quindi.
		// XpsDocument document = new XpsDocument(inputFileName, new XpsLoadOptions());

		// Inizializza l'oggetto PdfSaveOptions con i parametri necessari.
		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;
		}();

		// Crea un dispositivo di rendering per il formato PDF
		System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);

		// Salva file PDF
		document->Save(device, options);
	}
	catch (...)
	{
		__dispose_guard_0.SetCurrentException(std::current_exception());
	}
}
catch (...)
{
	__dispose_guard_1.SetCurrentException(std::current_exception());
}
Immagine del file PDF di output generato dal codice di esempio

Immagine del file PDF di output generato dal codice di esempio

Converti pagine selezionate di documenti XPS/OXPS in formato PDF

Durante la conversione di file XPS e OXPS in formato PDF, puoi anche specificare le pagine che desideri convertire. Il file PDF di output conterrà solo le pagine selezionate. Per raggiungere questo obiettivo, seguire i passaggi indicati di seguito.

Il codice di esempio seguente mostra come convertire pagine selezionate di documenti XPS e OXPS in formato PDF utilizzando C++.

// File di uscita
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Cancellazione delle risorse nella dichiarazione "utilizzo".
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// --------------------------------------------
try {
	// File sorgente
	System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
	// Cancellazione delle risorse nella dichiarazione "utilizzo".
	System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
	// --------------------------------------------

	try
	{
		// Carica il documento XPS dallo stream
		System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
		// o caricare il documento XPS direttamente dal file. Non è necessario xpsStream quindi.
		// XpsDocument document = new XpsDocument(inputFileName, new XpsLoadOptions());

		// Inizializza l'oggetto PdfSaveOptions con i parametri necessari.
		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;
		}();

		// Crea un dispositivo di rendering per il formato PDF
		System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);

		// Salva file PDF
		document->Save(device, options);
	}
	catch (...)
	{
		__dispose_guard_0.SetCurrentException(std::current_exception());
	}
}
catch (...)
{
	__dispose_guard_1.SetCurrentException(std::current_exception());
}
Immagine del file PDF di output generato dal codice di esempio

Immagine del file PDF di output generato dal codice di esempio

Ottieni una licenza gratuita

Puoi provare l’API senza limitazioni di valutazione richiedendo una licenza temporanea gratuita.

Conclusione

In questo articolo, hai imparato come convertire documenti XPS e OXPS in formato PDF usando C++. Inoltre, hai visto come convertire le pagine selezionate dei documenti XPS/OXPS in formato PDF utilizzando Aspose.Page per l’API C++. L’API fornisce molte funzionalità aggiuntive per lavorare con i documenti XPS che puoi esplorare in dettaglio visitando la documentazione ufficiale. In caso di domande, non esitare a contattarci sul nostro forum di supporto gratuito.

Guarda anche