แปลงรูปภาพ XPS, OXPS เป็น JPG หรือ PNG โดยใช้ C++

เอกสาร XPS และ OXPS คล้ายกับไฟล์ PDF และกำหนดเค้าโครง ลักษณะที่ปรากฏ และข้อมูลการพิมพ์สำหรับเอกสาร อาจมีสถานการณ์ที่คุณอาจต้องแปลงเอกสาร XPS และ OXPS เป็นรูปแบบภาพ JPG และ PNG ด้วยเหตุนี้ บทความนี้จะสอนวิธีแปลงเอกสาร XPS และ OXPS เป็นรูปแบบภาพ JPG และ PNG โดยใช้ C++

C ++ API สำหรับการแปลงไฟล์ XPS, OXPS เป็นรูปแบบ JPG หรือ PNG

Aspose.Page for C++ เป็นไลบรารี C++ สำหรับแสดงผลและจัดการไฟล์ XPS และ PostScript ช่วยให้คุณสร้าง อ่าน และอัปเดตเอกสาร XPS นอกจากนี้ API ยังรองรับการแปลงเอกสาร 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 = XpsDocument ใหม่ (inputFileName, 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 = XpsDocument ใหม่ (inputFileName, 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 ที่สร้างโดยโค้ดตัวอย่าง

รับใบอนุญาตฟรี

คุณสามารถลองใช้ API ได้โดยไม่มีข้อจำกัดในการประเมินโดยขอ ใบอนุญาตชั่วคราวฟรี

บทสรุป

ในบทความนี้ คุณได้เรียนรู้วิธีแปลงเอกสาร XPS และ OXPS เป็นรูปแบบภาพ JPG และ PNG โดยใช้ C++ นอกจากนี้ Aspose.Page for C++ API ยังมีรูปแบบเพิ่มเติมอีกมากมายให้คุณใช้ คุณสามารถสำรวจ API โดยละเอียดได้โดยไปที่ เอกสารอย่างเป็นทางการ ในกรณีที่มีคำถามใดๆ โปรดติดต่อเราได้ที่ ฟอรัมสนับสนุนฟรี

ดูสิ่งนี้ด้วย