เอกสาร XPS และ OXPS คล้ายกับไฟล์ PDF และกำหนดเค้าโครง ลักษณะที่ปรากฏ และข้อมูลการพิมพ์สำหรับเอกสาร อาจมีสถานการณ์ที่คุณอาจต้องแปลงเอกสาร XPS และ OXPS เป็นรูปแบบภาพ JPG และ PNG ด้วยเหตุนี้ บทความนี้จะสอนวิธีแปลงเอกสาร XPS และ OXPS เป็นรูปแบบภาพ JPG และ PNG โดยใช้ C++
- C ++ API สำหรับการแปลงไฟล์ XPS, OXPS เป็นรูปแบบ JPG หรือ PNG
- แปลงเอกสาร XPS/OXPS เป็นรูปแบบ JPG
- แปลงเอกสาร XPS/OXPS เป็นรูปแบบ PNG
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 ต้นทาง
- สร้างอินสแตนซ์ของคลาส XpsDocument โดยใช้สตรีม XPS/OXPS
- สร้างอินสแตนซ์ของคลาส JpegSaveOptions
- ระบุตัวเลือก เช่น SmoothingMode และ Resolution
- สร้างอินสแตนซ์ของคลาส ImageDevice
- บันทึกเอกสาร XPS/OXPS ไปที่ ImageDevice โดยใช้ XpsDocument->Save(System::SharedPtr อุปกรณ์, ระบบ::SharedPtr ตัวเลือก) วิธีการ
- วนซ้ำผ่านพาร์ติชันเอกสาร
- เริ่มต้นสตรีมเอาท์พุตและบันทึกภาพ 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());
}
}
แปลงเอกสาร XPS/OXPS เป็นรูปแบบ PNG
ต่อไปนี้เป็นขั้นตอนในการแปลงเอกสาร XPS และ OXPS เป็นรูปแบบ PNG
- เริ่มต้นสตรีมด้วยไฟล์ XPS/OXPS ต้นทาง
- สร้างอินสแตนซ์ของคลาส XpsDocument โดยใช้สตรีม XPS/OXPS
- สร้างอินสแตนซ์ของคลาส PngSaveOptions
- ระบุตัวเลือก เช่น SmoothingMode และ Resolution
- สร้างอินสแตนซ์ของคลาส ImageDevice
- บันทึกเอกสาร XPS/OXPS ไปที่ ImageDevice โดยใช้ XpsDocument->Save(System::SharedPtr อุปกรณ์, ระบบ::SharedPtr ตัวเลือก) วิธี
- วนซ้ำผ่านพาร์ติชันเอกสาร
- เริ่มต้นสตรีมเอาท์พุตและบันทึกภาพ 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());
}
}
รับใบอนุญาตฟรี
คุณสามารถลองใช้ API ได้โดยไม่มีข้อจำกัดในการประเมินโดยขอ ใบอนุญาตชั่วคราวฟรี
บทสรุป
ในบทความนี้ คุณได้เรียนรู้วิธีแปลงเอกสาร XPS และ OXPS เป็นรูปแบบภาพ JPG และ PNG โดยใช้ C++ นอกจากนี้ Aspose.Page for C++ API ยังมีรูปแบบเพิ่มเติมอีกมากมายให้คุณใช้ คุณสามารถสำรวจ API โดยละเอียดได้โดยไปที่ เอกสารอย่างเป็นทางการ ในกรณีที่มีคำถามใดๆ โปรดติดต่อเราได้ที่ ฟอรัมสนับสนุนฟรี