Les documents XPS et OXPS sont similaires aux fichiers PDF et définissent la mise en page, l’apparence et les informations d’impression d’un document. Dans certains cas, vous devrez peut-être convertir des documents XPS et OXPS aux formats d’image JPG et PNG. À cette fin, cet article vous apprendra comment convertir des documents XPS et OXPS au format d’image JPG et PNG à l’aide de C++.
- API C++ pour la conversion de fichiers XPS, OXPS au format JPG ou PNG
- Convertir des documents XPS/OXPS au format JPG
- Convertir des documents XPS/OXPS au format PNG
API C++ pour la conversion de fichiers XPS, OXPS au format JPG ou PNG
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 aux formats d’image JPG et PNG. 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 JPG
Voici les étapes pour convertir des documents XPS et OXPS au format JPG.
- Initialisez un flux avec le fichier source XPS/OXPS.
- Créez une instance de la classe XpsDocument à l’aide du flux XPS/OXPS.
- Créez une instance de la classe JpegSaveOptions.
- Spécifiez des options telles que SmoothingMode et Resolution.
- Créez une instance de la classe ImageDevice.
- Enregistrez le document XPS/OXPS sur ImageDevice en utilisant XpsDocument->Save(System::SharedPtr appareil, System::SharedPtr options) méthode.
- Parcourez les partitions de documents.
- Initialisez le flux de sortie et enregistrez les images JPG.
L’exemple de code suivant montre comment convertir des documents XPS/OXPS au format JPG à l’aide de C++.
// Fichier d'entrée
System::String inputFileName = u"SourceDirectory\\sample.xps";
//Fichier de sortie
System::String outputFileName = u"OutputDirectory\\XPStoImage_out.jpeg";
// Initialiser le flux d'entrée XPS
{
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(inputFileName, System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Effacement des ressources sous l'instruction 'using'
System::Details::DisposeGuard<1> __dispose_guard_1({ 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 JpegSaveOptions avec les paramètres nécessaires.
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;
}();
// Créer un périphérique de rendu pour le format JPG
System::SharedPtr<ImageDevice> device = System::MakeObject<ImageDevice>();
document->Save(device, options);
// Itérer à travers les partitions de documents (documents fixes, en termes 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++)
{
// Initialiser le flux de sortie d'image
{
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);
// Effacement des ressources sous l'instruction 'using'
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());
}
}
Convertir des documents XPS/OXPS au format PNG
Voici les étapes pour convertir des documents XPS et OXPS au format PNG.
- Initialisez un flux avec le fichier source XPS/OXPS.
- Créez une instance de la classe XpsDocument à l’aide du flux XPS/OXPS.
- Créez une instance de la classe PngSaveOptions.
- Spécifiez des options telles que SmoothingMode et Resolution.
- Créez une instance de la classe ImageDevice.
- Enregistrez le document XPS/OXPS sur ImageDevice en utilisant XpsDocument->Save(System::SharedPtr appareil, System::SharedPtr options) méthode.
- Parcourez les partitions de documents.
- Initialisez le flux de sortie et enregistrez les images PNG.
L’exemple de code suivant montre comment convertir des documents XPS/OXPS au format PNG à l’aide de C++.
// Fichier d'entrée
System::String inputFileName = u"SourceDirectory\\sample.xps";
//Fichier de sortie
System::String outputFileName = u"OutputDirectory\\XPStoImage_out.png";
// Initialiser le flux d'entrée XPS
{
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(inputFileName, System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Effacement des ressources sous l'instruction 'using'
System::Details::DisposeGuard<1> __dispose_guard_1({ 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 PngSaveOptions avec les paramètres nécessaires.
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;
}();
// Créer un périphérique de rendu pour le format PNG
System::SharedPtr<ImageDevice> device = System::MakeObject<ImageDevice>();
document->Save(device, options);
// Itérer à travers les partitions de documents (documents fixes, en termes 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++)
{
// Initialiser le flux de sortie d'image
{
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);
// Effacement des ressources sous l'instruction 'using'
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());
}
}
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 aux formats d’image JPG et PNG à l’aide de C++. De plus, Aspose.Page for C++ fournit divers formats supplémentaires que vous pouvez utiliser. Vous pouvez explorer l’API en détail en visitant la documentation officielle. En cas de questions, n’hésitez pas à nous contacter sur notre forum d’assistance gratuit.