XPS ve OXPS belgeleri, PDF dosyalarına benzer ve bir belge için düzen, görünüm ve yazdırma bilgilerini tanımlar. XPS ve OXPS belgelerini JPG ve PNG görüntü biçimlerine dönüştürmeniz gerekebilecek senaryolar olabilir. Bu amaçla, bu makale size XPS ve OXPS belgelerini C++ kullanarak JPG ve PNG resim formatına nasıl dönüştüreceğinizi öğretecektir.
- XPS, OXPS Dosyalarını JPG veya PNG Formatına Dönüştürmek için C++ API
- XPS/OXPS Belgelerini JPG Formatına Dönüştürün
- XPS/OXPS Belgelerini PNG Formatına Dönüştürün
XPS, OXPS Dosyalarını JPG veya PNG Formatına Dönüştürmek için C++ API
Aspose.Page for C++, XPS ve PostScript dosyalarını işlemek ve işlemek için kullanılan bir C++ kitaplığıdır. XPS belgeleri oluşturmanıza, okumanıza ve güncellemenize olanak tanır. Ayrıca API, XPS ve OXPS belgelerinin JPG ve PNG görüntü biçimlerine dönüştürülmesini destekler. API’yi NuGet aracılığıyla yükleyebilir veya doğrudan indirilenler bölümünden indirebilirsiniz.
PM> Install-Package Aspose.Page.Cpp
XPS/OXPS Belgelerini JPG Formatına Dönüştürün
XPS ve OXPS belgelerini JPG biçimine dönüştürmek için gereken adımlar aşağıdadır.
- Kaynak XPS/OXPS dosyasıyla bir akış başlatın.
- XPS/OXPS akışını kullanarak XpsDocument sınıfının bir örneğini oluşturun.
- JpegSaveOptions sınıfının bir örneğini oluşturun.
- SmoothingMode ve Resolution gibi seçenekleri belirtin.
- ImageDevice sınıfının bir örneğini oluşturun.
- XPS/OXPS belgesini ImageDevice’e XpsDocument->Save(System::SharedPtr) kullanarak kaydedin. cihaz, Sistem::SharedPtr seçenekler) yöntemi.
- Belge bölümlerini yineleyin.
- Çıkış akışını başlatın ve JPG görüntülerini kaydedin.
Aşağıdaki örnek kod, XPS/OXPS belgelerinin C++ kullanılarak JPG biçimine nasıl dönüştürüleceğini gösterir.
// Giriş dosyası
System::String inputFileName = u"SourceDirectory\\sample.xps";
//Çıktı dosyası
System::String outputFileName = u"OutputDirectory\\XPStoImage_out.jpeg";
// XPS giriş akışını başlat
{
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(inputFileName, System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Kaynakları 'kullanma' ifadesi altında temizleme
System::Details::DisposeGuard<1> __dispose_guard_1({ xpsStream });
// ------------------------------------------
try
{
// Akıştan XPS belgesi yükleyin
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// veya XPS belgesini doğrudan dosyadan yükleyin. O zaman xpsStream gerekmez.
// XpsDocument belgesi = new XpsDocument(inputFileName, new XpsLoadOptions());
// Gerekli parametrelerle JpegSaveOptions nesnesini başlatın.
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;
}();
// JPG formatı için işleme cihazı oluştur
System::SharedPtr<ImageDevice> device = System::MakeObject<ImageDevice>();
document->Save(device, options);
// Belge bölümlerini yineleyin (sabit belgeler, XPS terimleriyle)
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++)
{
// Görüntü çıkış akışını başlat
{
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);
// Kaynakları 'kullanma' ifadesi altında temizleme
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());
}
}
XPS/OXPS Belgelerini PNG Formatına Dönüştürün
Aşağıda, XPS ve OXPS belgelerini PNG biçimine dönüştürme adımları yer almaktadır.
- Kaynak XPS/OXPS dosyasıyla bir akış başlatın.
- XPS/OXPS akışını kullanarak XpsDocument sınıfının bir örneğini oluşturun.
- PngSaveOptions sınıfının bir örneğini oluşturun.
- SmoothingMode ve Resolution gibi seçenekleri belirtin.
- ImageDevice sınıfının bir örneğini oluşturun.
- XPS/OXPS belgesini ImageDevice’e XpsDocument->Save(System::SharedPtr) kullanarak kaydedin. cihaz, Sistem::SharedPtr seçenekler) yöntemi.
- Belge bölümlerini yineleyin.
- Çıkış akışını başlatın ve PNG görüntülerini kaydedin.
Aşağıdaki örnek kod, XPS/OXPS belgelerinin C++ kullanılarak PNG biçimine nasıl dönüştürüleceğini gösterir.
// Giriş dosyası
System::String inputFileName = u"SourceDirectory\\sample.xps";
//Çıktı dosyası
System::String outputFileName = u"OutputDirectory\\XPStoImage_out.png";
// XPS giriş akışını başlat
{
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(inputFileName, System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Kaynakları 'kullanma' ifadesi altında temizleme
System::Details::DisposeGuard<1> __dispose_guard_1({ xpsStream });
// ------------------------------------------
try
{
// Akıştan XPS belgesi yükleyin
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// veya XPS belgesini doğrudan dosyadan yükleyin. O zaman xpsStream gerekmez.
// XpsDocument belgesi = new XpsDocument(inputFileName, new XpsLoadOptions());
// Gerekli parametrelerle PngSaveOptions nesnesini başlatın.
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;
}();
// PNG formatı için işleme cihazı oluştur
System::SharedPtr<ImageDevice> device = System::MakeObject<ImageDevice>();
document->Save(device, options);
// Belge bölümlerini yineleyin (sabit belgeler, XPS terimleriyle)
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++)
{
// Görüntü çıkış akışını başlat
{
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);
// Kaynakları 'kullanma' ifadesi altında temizleme
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());
}
}
Ücretsiz Lisans Alın
Ücretsiz bir geçici lisans talep ederek API’yi değerlendirme sınırlamaları olmaksızın deneyebilirsiniz.
Çözüm
Bu makalede, C++ kullanarak XPS ve OXPS belgelerini JPG ve PNG görüntü biçimlerine dönüştürmeyi öğrendiniz. Ayrıca Aspose.Page for C++ API, kullanmanız için çeşitli ek biçimler sağlar. Resmi belgeleri ziyaret ederek API’yi ayrıntılı olarak inceleyebilirsiniz. Herhangi bir sorunuz olursa lütfen ücretsiz destek forumumuzda bize ulaşmaktan çekinmeyin.