XPS- och OXPS-dokument liknar PDF-filer och definierar layout, utseende och utskriftsinformation för ett dokument. Det kan finnas scenarier där du kan behöva konvertera XPS- och OXPS-dokument till bildformaten JPG och PNG. För detta ändamål kommer den här artikeln att lära dig hur du konverterar XPS- och OXPS-dokument till JPG- och PNG-bildformat med C++.
- C++ API för att konvertera XPS-, OXPS-filer till JPG- eller PNG-format
- Konvertera XPS/OXPS-dokument till JPG-format
- Konvertera XPS/OXPS-dokument till PNG-format
C++ API för att konvertera XPS-, OXPS-filer till JPG- eller PNG-format
Aspose.Page for C++ är ett C++-bibliotek för att rendera och manipulera XPS- och PostScript-filer. Det låter dig skapa, läsa och uppdatera XPS-dokument. Dessutom stöder API:et konvertering av XPS- och OXPS-dokument till JPG- och PNG-bildformat. Du kan antingen installera API:t genom NuGet eller ladda ner det direkt från avsnittet downloads.
PM> Install-Package Aspose.Page.Cpp
Konvertera XPS/OXPS-dokument till JPG-format
Följande är stegen för att konvertera XPS- och OXPS-dokument till JPG-format.
- Initiera en ström med XPS/OXPS-källfilen.
- Skapa en instans av klassen XpsDocument med XPS/OXPS-strömmen.
- Skapa en instans av klassen JpegSaveOptions.
- Ange alternativ som SmoothingMode och Resolution.
- Skapa en instans av klassen ImageDevice.
- Spara XPS/OXPS-dokumentet till ImageDevice med XpsDocument->Save(System::SharedPtr) enhet, System::SharedPtr alternativ) metod.
- Iterera genom dokumentpartitionerna.
- Initiera utdataströmmen och spara JPG-bilderna.
Följande exempelkod visar hur du konverterar XPS/OXPS-dokument till JPG-format med C++.
// Indatafil
System::String inputFileName = u"SourceDirectory\\sample.xps";
//Utdatafil
System::String outputFileName = u"OutputDirectory\\XPStoImage_out.jpeg";
// Initiera XPS-indataström
{
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(inputFileName, System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Rensa resurser under "använder" uttalande
System::Details::DisposeGuard<1> __dispose_guard_1({ xpsStream });
// ------------------------------------------
try
{
// Ladda XPS-dokument från strömmen
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// eller ladda XPS-dokument direkt från filen. Då behövs ingen xpsStream.
// XpsDocument document = new XpsDocument(inputFileName, new XpsLoadOptions());
// Initiera JpegSaveOptions-objektet med nödvändiga parametrar.
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;
}();
// Skapa renderingsenhet för JPG-format
System::SharedPtr<ImageDevice> device = System::MakeObject<ImageDevice>();
document->Save(device, options);
// Iterera genom dokumentpartitioner (fasta dokument, i XPS-termer)
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++)
{
// Initiera bildutgångsström
{
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);
// Rensa resurser under "använder" uttalande
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());
}
}
Konvertera XPS/OXPS-dokument till PNG-format
Följande är stegen för att konvertera XPS- och OXPS-dokument till PNG-format.
- Initiera en ström med XPS/OXPS-källfilen.
- Skapa en instans av klassen XpsDocument med XPS/OXPS-strömmen.
- Skapa en instans av klassen PngSaveOptions.
- Ange alternativ som SmoothingMode och Resolution.
- Skapa en instans av klassen ImageDevice.
- Spara XPS/OXPS-dokumentet till ImageDevice med XpsDocument->Save(System::SharedPtr) enhet, System::SharedPtr alternativ) metod.
- Iterera genom dokumentpartitionerna.
- Initiera utdataströmmen och spara PNG-bilderna.
Följande exempelkod visar hur du konverterar XPS/OXPS-dokument till PNG-format med C++.
// Indatafil
System::String inputFileName = u"SourceDirectory\\sample.xps";
//Utdatafil
System::String outputFileName = u"OutputDirectory\\XPStoImage_out.png";
// Initiera XPS-indataström
{
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(inputFileName, System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Rensa resurser under "använder" uttalande
System::Details::DisposeGuard<1> __dispose_guard_1({ xpsStream });
// ------------------------------------------
try
{
// Ladda XPS-dokument från strömmen
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// eller ladda XPS-dokument direkt från filen. Då behövs ingen xpsStream.
// XpsDocument document = new XpsDocument(inputFileName, new XpsLoadOptions());
// Initiera PngSaveOptions-objektet med nödvändiga parametrar.
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;
}();
// Skapa renderingsenhet för PNG-format
System::SharedPtr<ImageDevice> device = System::MakeObject<ImageDevice>();
document->Save(device, options);
// Iterera genom dokumentpartitioner (fasta dokument, i XPS-termer)
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++)
{
// Initiera bildutgångsström
{
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);
// Rensa resurser under "använder" uttalande
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());
}
}
Skaffa en gratis licens
Du kan prova API:et utan utvärderingsbegränsningar genom att begära en gratis tillfällig licens.
Slutsats
I den här artikeln har du lärt dig hur du konverterar XPS- och OXPS-dokument till JPG- och PNG-bildformat med C++. Dessutom tillhandahåller Aspose.Page för C++ API olika ytterligare format som du kan använda. Du kan utforska API:et i detalj genom att besöka den officiella dokumentationen. Om du har några frågor är du välkommen att kontakta oss på vårt gratis supportforum.