C++ kullanarak XPS, OXPS'yi JPG veya PNG Görüntüsüne dönüştürün

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

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.

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());
	}
}
Örnek kod tarafından oluşturulan JPG resmi

Örnek kod tarafından oluşturulan JPG görüntüsü

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.

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());
	}
}
Örnek kod tarafından oluşturulan PNG resmi

Örnek kod tarafından oluşturulan PNG resmi

Ü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.

Ayrıca bakınız