المستندات XPS و OXPS تشبه ملفات PDF وتحدد معلومات التخطيط والمظهر والطباعة للمستند. قد تكون هناك سيناريوهات قد تحتاج فيها إلى تحويل مستندات XPS و OXPS إلى تنسيقات صور JPG و PNG. تحقيقًا لهذه الغاية ، ستعلمك هذه المقالة كيفية تحويل مستندات XPS و OXPS إلى تنسيق صور JPG و PNG باستخدام C ++.
- واجهة برمجة تطبيقات C ++ لتحويل ملفات XPS أو OXPS إلى تنسيق JPG أو PNG
- تحويل مستندات XPS / OXPS إلى تنسيق JPG
- قم بتحويل مستندات XPS / OXPS إلى تنسيق PNG
واجهة برمجة تطبيقات 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 المصدر.
- قم بإنشاء مثيل لفئة XpsDocument باستخدام دفق XPS / OXPS.
- قم بإنشاء مثيل لفئة JpegSaveOptions.
- حدد خيارات مثل SmoothingMode و القرار.
- قم بإنشاء مثيل لفئة ImageDevice.
- احفظ مستند XPS / OXPS في ImageDevice باستخدام XpsDocument-> حفظ (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 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());
}
}
قم بتحويل مستندات XPS / OXPS إلى تنسيق PNG
فيما يلي خطوات تحويل مستندات XPS و OXPS إلى تنسيق PNG.
- ابدأ دفقًا بملف XPS / OXPS المصدر.
- قم بإنشاء مثيل لفئة XpsDocument باستخدام دفق XPS / OXPS.
- قم بإنشاء مثيل لفئة PngSaveOptions.
- حدد خيارات مثل SmoothingMode و الدقة.
- قم بإنشاء مثيل لفئة 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 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());
}
}
احصل على رخصة مجانية
يمكنك تجربة واجهة برمجة التطبيقات بدون قيود التقييم من خلال طلب ترخيص مؤقت مجاني.
استنتاج
في هذه المقالة ، تعلمت كيفية تحويل مستندات XPS و OXPS إلى تنسيقات صور JPG و PNG باستخدام C ++. علاوة على ذلك ، يوفر Aspose.Page for C ++ API تنسيقات إضافية متنوعة لتستخدمها. يمكنك استكشاف API بالتفصيل من خلال زيارة الوثائق الرسمية. في حالة وجود أي أسئلة ، لا تتردد في الاتصال بنا على منتدى الدعم المجاني.