قم بتحويل XPS أو OXPS إلى JPG أو PNG Image باستخدام C ++

المستندات XPS و OXPS تشبه ملفات PDF وتحدد معلومات التخطيط والمظهر والطباعة للمستند. قد تكون هناك سيناريوهات قد تحتاج فيها إلى تحويل مستندات XPS و OXPS إلى تنسيقات صور JPG و PNG. تحقيقًا لهذه الغاية ، ستعلمك هذه المقالة كيفية تحويل مستندات XPS و OXPS إلى تنسيق صور JPG و PNG باستخدام C ++.

واجهة برمجة تطبيقات C ++ لتحويل ملفات XPS أو OXPS إلى تنسيق JPG أو PNG

Aspose.Page for C ++ هي مكتبة C ++ لتقديم ومعالجة ملفات XPS و PostScript. يتيح لك إنشاء مستندات XPS وقراءتها وتحديثها. علاوة على ذلك ، تدعم واجهة برمجة التطبيقات تحويل مستندات XPS و OXPS إلى تنسيقات صور JPG و PNG. يمكنك إما تثبيت API من خلال NuGet أو تنزيلها مباشرة من قسم التنزيلات.

PM> Install-Package Aspose.Page.Cpp

تحويل مستندات XPS / OXPS إلى تنسيق JPG

فيما يلي خطوات تحويل مستندات XPS و OXPS إلى تنسيق JPG.

يوضح نموذج التعليمات البرمجية التالي كيفية تحويل مستندات XPS / OXPS إلى تنسيق JPG باستخدام C ++.

// ملف الإدخال
System::String inputFileName = u"SourceDirectory\\sample.xps";
//ملف إلاخراج 
System::String outputFileName = u"OutputDirectory\\XPStoImage_out.jpeg";
// قم بتهيئة دفق إدخال XPS
{
	System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(inputFileName, System::IO::FileMode::Open, System::IO::FileAccess::Read);
	// مسح الموارد تحت بيان "استخدام"
	System::Details::DisposeGuard<1> __dispose_guard_1({ xpsStream });
	// ------------------------------------------

	try
	{
		// قم بتحميل مستند XPS من الدفق
		System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
		// أو تحميل مستند XPS مباشرة من الملف. لا حاجة إذن إلى xpsStream.
		// XpsDocument document = new XpsDocument (inputFileName، new XpsLoadOptions()) ؛

		// تهيئة كائن JpegSaveOptions بالمعلمات الضرورية.
		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
		System::SharedPtr<ImageDevice> device = System::MakeObject<ImageDevice>();

		document->Save(device, options);

		// التكرار من خلال أقسام المستندات (المستندات الثابتة ، بمصطلحات 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++)
			{
				// تهيئة دفق إخراج الصورة
				{
					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);
					// مسح الموارد تحت بيان "استخدام"
					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());
	}
}
صورة JPG تم إنشاؤها بواسطة نموذج التعليمات البرمجية

صورة JPG تم إنشاؤها بواسطة نموذج التعليمات البرمجية

قم بتحويل مستندات XPS / OXPS إلى تنسيق PNG

فيما يلي خطوات تحويل مستندات XPS و OXPS إلى تنسيق PNG.

يوضح نموذج التعليمات البرمجية التالي كيفية تحويل مستندات XPS / OXPS إلى تنسيق PNG باستخدام C ++.

// ملف الإدخال
System::String inputFileName = u"SourceDirectory\\sample.xps";
//ملف إلاخراج 
System::String outputFileName = u"OutputDirectory\\XPStoImage_out.png";
// قم بتهيئة دفق إدخال XPS
{
	System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(inputFileName, System::IO::FileMode::Open, System::IO::FileAccess::Read);
	// مسح الموارد تحت بيان "استخدام"
	System::Details::DisposeGuard<1> __dispose_guard_1({ xpsStream });
	// ------------------------------------------

	try
	{
		// قم بتحميل مستند XPS من الدفق
		System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
		// أو تحميل مستند XPS مباشرة من الملف. لا حاجة إذن إلى xpsStream.
		// XpsDocument document = new XpsDocument (inputFileName، new XpsLoadOptions()) ؛

		// تهيئة كائن PngSaveOptions بالمعلمات الضرورية.
		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
		System::SharedPtr<ImageDevice> device = System::MakeObject<ImageDevice>();

		document->Save(device, options);

		// التكرار من خلال أقسام المستندات (المستندات الثابتة ، بمصطلحات 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++)
			{
				// تهيئة دفق إخراج الصورة
				{
					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);
					// مسح الموارد تحت بيان "استخدام"
					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());
	}
}
صورة PNG تم إنشاؤها بواسطة نموذج التعليمات البرمجية

صورة PNG تم إنشاؤها بواسطة نموذج التعليمات البرمجية

احصل على رخصة مجانية

يمكنك تجربة واجهة برمجة التطبيقات بدون قيود التقييم من خلال طلب ترخيص مؤقت مجاني.

استنتاج

في هذه المقالة ، تعلمت كيفية تحويل مستندات XPS و OXPS إلى تنسيقات صور JPG و PNG باستخدام C ++. علاوة على ذلك ، يوفر Aspose.Page for C ++ API تنسيقات إضافية متنوعة لتستخدمها. يمكنك استكشاف API بالتفصيل من خلال زيارة الوثائق الرسمية. في حالة وجود أي أسئلة ، لا تتردد في الاتصال بنا على منتدى الدعم المجاني.

أنظر أيضا