
I documenti XPS e OXPS sono simili ai file PDF e definiscono il layout, l’aspetto e le informazioni di stampa per un documento. Potrebbero esserci scenari in cui potrebbe essere necessario convertire documenti XPS e OXPS in formati immagine JPG e PNG. A tal fine, questo articolo ti insegnerà come convertire documenti XPS e OXPS in formato immagine JPG e PNG usando C++.
- API C++ per la conversione di file XPS, OXPS in formato JPG o PNG
- Converti documenti XPS/OXPS in formato JPG
- Converti documenti XPS/OXPS in formato PNG
API C++ per la conversione di file XPS, OXPS in formato JPG o PNG
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 formati immagine JPG e PNG. Puoi installare l’API tramite NuGet o scaricarla direttamente dalla sezione download.
PM> Install-Package Aspose.Page.Cpp
Converti documenti XPS/OXPS in formato JPG
Di seguito sono riportati i passaggi per convertire i documenti XPS e OXPS in formato JPG.
- 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 JpegSaveOptions.
- Specificare opzioni come SmoothingMode e Resolution.
- Crea un’istanza della classe ImageDevice.
- Salva il documento XPS/OXPS su ImageDevice usando XpsDocument->Save(System::SharedPtr dispositivo, System::SharedPtr opzioni).
- Scorri le partizioni del documento.
- Inizializza il flusso di output e salva le immagini JPG.
Il codice di esempio seguente mostra come convertire i documenti XPS/OXPS in formato JPG usando C++.
// File di input
System::String inputFileName = u"SourceDirectory\\sample.xps";
//File di uscita
System::String outputFileName = u"OutputDirectory\\XPStoImage_out.jpeg";
// Inizializza il flusso di input XPS
{
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(inputFileName, System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Cancellazione delle risorse nella dichiarazione "utilizzo".
System::Details::DisposeGuard<1> __dispose_guard_1({ 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 JpegSaveOptions con i parametri necessari.
System::SharedPtr<JpegSaveOptions> options = [&] {
auto tmp_0 = System::MakeObject<JpegSaveOptions>();
tmp_0->set_SmoothingMode(System::Drawing::Drawing2D::SmoothingMode::HighQuality);
tmp_0->set_Resolution(300);
tmp_0->set_PageNumbers(System::MakeArray<int32_t>({ 1, 2, 6 }));
return tmp_0;
}();
// Crea un dispositivo di rendering per il formato JPG
System::SharedPtr<ImageDevice> device = System::MakeObject<ImageDevice>();
document->Save(device, options);
// Iterare attraverso le partizioni dei documenti (documenti fissi, in termini di XPS)
for (int32_t i = 0; i < device->get_Result()->get_Length(); i++)
{
for (int32_t j = 0; j < device->get_Result()[i]->get_Length(); j++)
{
// Inizializza il flusso di output dell'immagine
{
System::SharedPtr<System::IO::Stream> imageStream = System::IO::File::Open(System::IO::Path::GetDirectoryName(outputFileName) + u"\\" + System::IO::Path::GetFileNameWithoutExtension(outputFileName) + u"_" + (i + 1) + u"_" + (j + 1) + System::IO::Path::GetExtension(outputFileName), System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Cancellazione delle risorse nella dichiarazione "utilizzo".
System::Details::DisposeGuard<1> __dispose_guard_0({ imageStream });
// --------------------------------------------
try
{
imageStream->Write(device->get_Result()[i][j], 0, device->get_Result()[i][j]->get_Length());
}
catch (...)
{
__dispose_guard_0.SetCurrentException(std::current_exception());
}
}
}
}
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
}

Immagine JPG generata dal codice di esempio
Converti documenti XPS/OXPS in formato PNG
Di seguito sono riportati i passaggi per convertire i documenti XPS e OXPS in formato PNG.
- 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 PngSaveOptions.
- Specificare opzioni come SmoothingMode e Resolution.
- Crea un’istanza della classe ImageDevice.
- Salva il documento XPS/OXPS su ImageDevice usando XpsDocument->Save(System::SharedPtr dispositivo, System::SharedPtr opzioni).
- Scorri le partizioni del documento.
- Inizializza il flusso di output e salva le immagini PNG.
Il codice di esempio seguente mostra come convertire i documenti XPS/OXPS in formato PNG usando C++.
// File di input
System::String inputFileName = u"SourceDirectory\\sample.xps";
//File di uscita
System::String outputFileName = u"OutputDirectory\\XPStoImage_out.png";
// Inizializza il flusso di input XPS
{
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(inputFileName, System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Cancellazione delle risorse nella dichiarazione "utilizzo".
System::Details::DisposeGuard<1> __dispose_guard_1({ 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 PngSaveOptions con i parametri necessari.
System::SharedPtr<PngSaveOptions> options = [&] {
auto tmp_0 = System::MakeObject<PngSaveOptions>();
tmp_0->set_SmoothingMode(System::Drawing::Drawing2D::SmoothingMode::HighQuality);
tmp_0->set_Resolution(300);
tmp_0->set_PageNumbers(System::MakeArray<int32_t>({ 1, 2, 6 }));
return tmp_0;
}();
// Crea un dispositivo di rendering per il formato PNG
System::SharedPtr<ImageDevice> device = System::MakeObject<ImageDevice>();
document->Save(device, options);
// Iterare attraverso le partizioni dei documenti (documenti fissi, in termini di XPS)
for (int32_t i = 0; i < device->get_Result()->get_Length(); i++)
{
for (int32_t j = 0; j < device->get_Result()[i]->get_Length(); j++)
{
// Inizializza il flusso di output dell'immagine
{
System::SharedPtr<System::IO::Stream> imageStream = System::IO::File::Open(System::IO::Path::GetDirectoryName(outputFileName) + u"\\" + System::IO::Path::GetFileNameWithoutExtension(outputFileName) + u"_" + (i + 1) + u"_" + (j + 1) + System::IO::Path::GetExtension(outputFileName), System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Cancellazione delle risorse nella dichiarazione "utilizzo".
System::Details::DisposeGuard<1> __dispose_guard_0({ imageStream });
// --------------------------------------------
try
{
imageStream->Write(device->get_Result()[i][j], 0, device->get_Result()[i][j]->get_Length());
}
catch (...)
{
__dispose_guard_0.SetCurrentException(std::current_exception());
}
}
}
}
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
}

Immagine PNG generata 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 formati immagine JPG e PNG usando C++. Inoltre, Aspose.Page per l’API C++ fornisce vari formati aggiuntivi da usare. Puoi esplorare l’API in dettaglio visitando la documentazione ufficiale. In caso di domande, non esitare a contattarci sul nostro forum di supporto gratuito.