
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
- Converti documenti XPS/OXPS in formato PDF
- Converti pagine selezionate di documenti XPS/OXPS in formato PDF
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.
- Inizializza uno stream con il file PDF di output.
- Inizializza un flusso con il file XPS/OXPS di origine.
- Crea un’istanza della classe XpsDocument utilizzando il flusso XPS/OXPS.
- Crea un’istanza della classe PdfSaveOptions.
- Specificare opzioni come JpegQualityLevel e ImageCompression.
- Salvare il file PDF di output utilizzando XpsDocument->Save(System::SharedPtr dispositivo, System::SharedPtr opzioni).
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
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.
- Inizializza uno stream con il file PDF di output.
- Inizializza un flusso con il file XPS/OXPS di origine.
- Crea un’istanza della classe XpsDocument utilizzando il flusso XPS/OXPS.
- Crea un’istanza della classe PdfSaveOptions.
- Specificare opzioni come JpegQualityLevel e ImageCompression.
- Specifica le pagine che vuoi convertire usando PdfSaveOptions->setPageNumbers(System::ArrayPtr valore).
- Salvare il file PDF di output utilizzando XpsDocument->Save(System::SharedPtr dispositivo, System::SharedPtr opzioni).
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
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.