UGLYPEAR AI تُكمل ترقية أعمالها: ضغط المستندات عالي الأداء × أساس هندسة بيانات RAGتعرّف على الأعمال الجديدة →

دليل تكامل SDK للضغط: استدعاء بعدة لغات Python/Java/C#

خلاصة سريعة: تُصدِّر SDK من SmartSlim لـ UGLYPEAR DATA مكتبة ديناميكية عبر C ABI القياسي، وتدعم التكامل بأربع لغات هي Python/Java/C#/Rust، وسير الاستدعاء الأساسي يتكون من أربع خطوات: تهيئة SDK، إنشاء إعدادات الضغط، تنفيذ الضغط، تحرير الموارد. يستغرق ضغط ملف PDF واحد بحجم 100 ميجابايت نحو 0.8 ثانية، وزمن التحقق من الترخيص أقل من 5 مللي ثانية. تعرض هذه المقالة أمثلة كود تكامل كاملة بثلاث لغات، وجدول معاملات API، وحلول ضبط الأداء، مع عرض تجريبي للضغط الدفعي. سنبدأ ببنية SDK، ثم نشرح طرق تكامل كل لغة بالتفصيل.

إذا كنت تحتاج إلى استدعاء خدمة الضغط عبر واجهة HTTP بدلاً من تكامل SDK، يُنصح أولاً بقراءة تطبيق عملي لواجهة برمجة الضغط (API): شرح مفصّل لوثائق واجهة RESTful.

أولًا: بنية SDK ومبادئ التكامل

الطبقة الأساسية لـ SmartSlim SDK هي محرك ضغط مكتوب بـ Rust، يتم تصديره عبر C ABI (Application Binary Interface) القياسي كمكتبة ديناميكية (.so/.dylib/.dll)، ويمكن لأي لغة تدعم FFI (واجهة الدوال الأجنبية) تحميلها واستدعاءها. تكمن فائدة هذه البنية في: كتابة المحرك الأساسي مرة واحدة بـ Rust، وإعادة استخدام نفس المكتبة الثنائية عبر عدة لغات، دون الحاجة إلى تكرار تنفيذ منطق الضغط في كل لغة.

المكوّنالتقنيةالدورالمخرجات
نواة محرك الضغطRustتنفيذ خوارزمية الضغطمكتبة ثابتة .a/.lib
طبقة تصدير ABIRust #[no_mangle]تصدير دوال متوافقة مع Cمكتبة ديناميكية .so/.dylib/.dll
طبقة ربط اللغةFFI لكل لغةتغليف الاستدعاءات الأصليةحزم/مكتبات خاصة بكل لغة
وحدة الترخيصRust + تشفيرالتحقق من مفتاح الترخيصمدمج في المكتبة الديناميكية
إدارة الإعداداتRust structإدارة معاملات الضغطإعدادات JSON/TOML

توفّر SDK مكتبات مُجمَّعة مسبقًا لـ 6 منصات، تغطي أنظمة التشغيل وبنى المعالجات الرئيسية، وتعمل مباشرة دون الحاجة إلى ترجمة كود Rust.

المنصةالمكتبة الديناميكيةنظام التشغيلبنية المعالجسيناريو الاستخدام
linux-x64libsmartslim.soLinuxx86_64الخادم/سطح المكتب
linux-arm64libsmartslim.soLinuxaarch64خوادم ARM/Raspberry Pi
macos-universallibsmartslim.dylibmacOSx86_64+arm64Intel + Apple Silicon
windows-x64smartslim.dllWindowsx86_64سطح المكتب/خوادم Windows
linux-server-x64libsmartslim.soLinuxx86_64إصدار الخادم المحسّن
linux-server-arm64libsmartslim.soLinuxaarch64إصدار خوادم ARM المحسّن

ثانيًا: شرح مفصّل لمعاملات API الأساسية

تنقسم واجهات API الأساسية في SDK إلى أربع فئات: التهيئة، الإعدادات، الضغط، التحرير. يعرض الجدول التالي دوال API الرئيسية ووصف معاملاتها.

دالة APIالمعاملاتالقيمة المُعادةالوصف
smartslim_initlicense_key: Stringhandle: Handleتهيئة SDK والتحقق من الترخيص
smartslim_create_configformat, level, qualityconfig: ConfigHandleإنشاء إعدادات الضغط
smartslim_compresshandle, input, output, configresult: ResultCodeتنفيذ ضغط ملف واحد
smartslim_compress_batchhandle, files[], config, workersresults[]: ResultCodeضغط دفعي (متعدد التزامن)
smartslim_get_infohandle, filepathFileInfo: structالحصول على معلومات ضغط الملف
smartslim_free_configconfig: ConfigHandlevoidتحرير موارد الإعدادات
smartslim_freehandle: Handlevoidتحرير نسخة SDK

تدعم معاملات إعدادات الضغط 4 مستويات ضغط (low/medium/high/ultra) × 15 سيناريو × 5 درجات أداء (ultrafast/fast/balanced/quality/optimal)، بإجمالي 300 تركيبة، تغطي تقريبًا جميع متطلبات الضغط.

المعاملالقيم المتاحةالقيمة الافتراضيةالوصف
formatpdf/image/video/office/ofdكشف تلقائينوع الملف
levellow/medium/high/ultramediumمستوى الضغط
quality1-10075عامل الجودة (للصور/PDF)
performanceultrafast/fast/balanced/quality/optimalbalancedدرجة الأداء
workers1-164عدد خيوط التزامن
securityDISABLED/LOW/MEDIUM/HIGH/MAXIMUMMEDIUMمستوى الأمان

ثالثًا: أمثلة كود تكامل بثلاث لغات

فيما يلي أمثلة تكامل كاملة بثلاث لغات: Python وJava وC#، جميعها تتناول ضغط ملف PDF واحد.

1. تكامل Python (ctypes)

تحمّل Python المكتبة الديناميكية عبر وحدة ctypes وتستدعي الدوال المُصدَّرة. ينفّذ الكود التالي سير العمل الكامل: تهيئة SDK، إنشاء الإعدادات، ضغط PDF، تحرير الموارد. يستغرق ضغط PDF بحجم 100 ميجابايت نحو 0.8 ثانية.

الخطوةكود Pythonالوصف
1. تحميل المكتبةlib = ctypes.CDLL('./libsmartslim.so')تحميل المكتبة الديناميكية
2. التهيئةhandle = lib.smartslim_init(b"YOUR_LICENSE")تمرير مفتاح الترخيص
3. إنشاء الإعداداتconfig = lib.smartslim_create_config(b"pdf", b"medium", 75)PDF/medium/q75
4. تنفيذ الضغطlib.smartslim_compress(handle, b"in.pdf", b"out.pdf", config)ضغط الملف
5. تحرير المواردlib.smartslim_free_config(config); lib.smartslim_free(handle)تحرير الذاكرة

2. تكامل Java (JNI)

تستدعي Java المكتبة الديناميكية عبر JNI (واجهة Java الأصلية). يجب أولًا كتابة إعلانات الطرق الأصلية، ثم تحميل ملف المكتبة. يعرض الكود التالي سير الاستدعاء الأساسي، وهو مناسب لتكامل مشاريع Java الخلفية مثل Spring Boot.

الخطوةكود Javaالوصف
1. تحميل المكتبةSystem.loadLibrary("smartslim")تحميل DLL/SO
2. إعلان الطريقةnative long smartslim_init(String key)إعلان طريقة JNI
3. التهيئةlong handle = smartslim_init("YOUR_LICENSE")الحصول على مقبض النسخة
4. إنشاء الإعداداتlong config = smartslim_create_config("pdf","medium",75)معاملات الإعدادات
5. تنفيذ الضغطsmartslim_compress(handle, "in.pdf", "out.pdf", config)ضغط الملف
6. تحرير المواردsmartslim_free_config(config); smartslim_free(handle)تحرير الذاكرة

3. تكامل C# (P-Invoke)

تستدعي C# المكتبة الديناميكية عبر P/Invoke (خدمات استدعاء النظام الأساسي). تُستخدم سمة DllImport للإعلان عن الدوال الخارجية، وهو مناسب لتكامل مشاريع .NET/.NET Core. الكود التالي متوافق مع منصتي Windows وLinux.

الخطوةكود C#الوصف
1. إعلان الدالة[DllImport("smartslim")] static extern IntPtr smartslim_init(string key)إعلان P-Invoke
2. التهيئةIntPtr handle = smartslim_init("YOUR_LICENSE")الحصول على المقبض
3. إنشاء الإعداداتIntPtr config = smartslim_create_config("pdf","medium",75)معاملات الإعدادات
4. تنفيذ الضغطsmartslim_compress(handle, "in.pdf", "out.pdf", config)ضغط الملف
5. تحرير المواردsmartslim_free_config(config); smartslim_free(handle)تحرير الذاكرة

رابعًا: ضبط الأداء والضغط الدفعي

يدور ضبط أداء تكامل SDK حول ثلاثة أبعاد: التزامن، الذاكرة، المعالجة الدفعية. يعرض الجدول التالي مقارنة لنتائج استراتيجيات الضبط المختلفة.

استراتيجية الضبطزمن الملف الواحدزمن 100 ملفاستهلاك الذاكرةالترخيص المناسب
تسلسلي بخيط واحد0.8 ثانية80 ثانية50 ميجابايتTrial (تزامن 1)
تزامن 4 خيوط0.8 ثانية22 ثانية180 ميجابايتStandard (تزامن 4)
تزامن 8 خيوط0.8 ثانية12 ثانية320 ميجابايتProfessional (تزامن 8)
تزامن 16 خيطًا0.8 ثانية7 ثوانٍ600 ميجابايتEnterprise (تزامن 16+)
وضع الضغط المتدفق1.2 ثانية95 ثانية15 ميجابايتجميع التراخيص

للضغط الدفعي يُنصح باستخدام واجهة smartslim_compress_batch المدمجة في SDK، مع تمرير قائمة الملفات وعدد خيوط التزامن، حيث يستخدم SDK داخليًا جدولة المهام غير المتزامنة في Rust، وهي أكثر كفاءة من تنفيذ كل لغة لتعدد الخيوط بنفسها. فيما يلي بيانات أداء عرض تجريبي لضغط 100 ملف PDF دفعة واحدة.

عدد الملفاتمتوسط حجم الملفالحجم الكليالحجم بعد الضغطزمن 8 خيوطنسبة الضغط
100 ملف PDF15 ميجابايت1.5 جيجابايت320 ميجابايت12 ثانية78.7%
100 ملف PNG8 ميجابايت800 ميجابايت180 ميجابايت8 ثوانٍ77.5%
100 ملف DOCX5 ميجابايت500 ميجابايت120 ميجابايت6 ثوانٍ76.0%
100 ملف MP450 ميجابايت5 جيجابايت1.8 جيجابايت45 ثانية64.0%

إذا كنت بحاجة إلى فهم مقارنة خوارزميات مكتبات الضغط في Rust الأساسية، يمكنك الرجوع إلى مقارنة مكتبات الضغط في Rust: لماذا نختار Rust لكتابة محرك الضغط. وإذا كنت تحتاج إلى حاويات نشر خدمة الضغط عبر Docker، يمكنك الرجوع إلى نشر خدمة الضغط عبر Docker.

خامسًا: الأسئلة الشائعة FAQ

س1: ما لغات البرمجة التي تدعمها SDK للضغط؟

تُصدِّر SmartSlim SDK من UGLYPEAR DATA مكتبة ديناميكية عبر C ABI القياسي، وتدعم التكامل بأربع لغات هي: Python (ctypes)، Java (JNI)، C# (P-Invoke)، Rust (FFI). توفّر SDK مكتبات مُجمَّعة مسبقًا لـ 6 منصات (linux-x64/arm64، macos-universal، windows-x64 وغيرها)، تعمل مباشرة دون الحاجة إلى ترجمة. كما يمكن للغات أخرى تدعم استدعاء C ABI (مثل Go وNode.js وPHP) التكامل عبر آليات FFI الخاصة بها.

س2: ما هي خطوات سير استدعاء API في SDK للضغط؟

ينقسم سير الاستدعاء القياسي إلى أربع خطوات: 1. استدعاء smartslim_init لتهيئة SDK وتمرير مفتاح الترخيص؛ 2. استدعاء smartslim_create_config لإنشاء إعدادات الضغط (تحديد الصيغة والمستوى ودرجة الأداء)؛ 3. استدعاء smartslim_compress لتنفيذ الضغط (مع تمرير مسار ملف الإدخال ومسار الإخراج)؛ 4. استدعاء smartslim_free لتحرير الموارد. يستغرق ضغط ملف PDF بحجم 100 ميجابايت نحو 0.8 ثانية، وزمن التحقق من الترخيص أقل من 5 مللي ثانية.

س3: كيف تنفّذ SDK للضغط المعالجة الدفعية؟

هناك طريقتان للمعالجة الدفعية: أولًا، استدعاء واجهة ضغط ملف واحد في حلقة مع التزامن متعدد الخيوط (Python عبر concurrent.futures، Java عبر ThreadPoolExecutor)؛ ثانيًا، استخدام واجهة الضغط الدفعي المدمجة smartslim_compress_batch، مع تمرير قائمة الملفات وعدد خيوط التزامن، حيث يستخدم SDK داخليًا جدولة المهام غير المتزامنة في Rust. تُنصح الطريقة الثانية، حيث يدعم ترخيص Standard تزامن 4 خيوط، وProfessional تزامن 8 خيوط، وEnterprise تزامن 16 خيطًا فأكثر.

س4: ماذا أفعل عند ظهور أخطاء في تكامل SDK للضغط؟

الأخطاء الشائعة وحلولها: 1. خطأ UnsatisfiedLinkError (في Java) أو فشل تحميل DLL — تحقّق من مسار المكتبة الديناميكية وتطابق بنية النظام؛ 2. فشل التحقق من الترخيص — تحقّق من صحة مفتاح الترخيص ومن عدم انتهاء صلاحيته؛ 3. تجاوز سعة الذاكرة — قلّل عدد خيوط التزامن أو فعّل وضع الضغط المتدفق؛ 4. عدم دعم الصيغة — تحقّق من دعم إصدار SDK للصيغة المستهدفة. يُنصح بتفعيل سجلات DEBUG لتحديد المشكلة، أو التواصل مع الدعم الفني لـ UGLYPEAR DATA.

الخلاصة

تنفّذ SmartSlim SDK من UGLYPEAR DATA مبدأ «اكتب مرة، استدعِ بعدة لغات» عبر C ABI القياسي، وتدعم التكامل بأربع لغات: Python/Java/C#/Rust. خطوات سير الاستدعاء الأساسية أربع: التهيئة، إنشاء الإعدادات، تنفيذ الضغط، تحرير الموارد. يستغرق ضغط ملف PDF بحجم 100 ميجابايت 0.8 ثانية، وضغط دفعة من 100 ملف بتزامن 8 خيوط 12 ثانية فقط. ضبط الأداء يتمحور حول ثلاثة أبعاد: التزامن (4-16 خيطًا)، الذاكرة (وضع التدفق يقلل الاستهلاك بنسبة 75%)، المعالجة الدفعية (واجهة batch المدمجة).

احفظ ثلاث نقاط: أولًا، اختر المكتبة المُجمَّعة مسبقًا المتطابقة مع بنية نظامك (6 منصات مغطاة بالكامل)؛ ثانيًا، للضغط الدفعي أولِ واجهة batch المدمجة على التنفيذ الذاتي لتعدد الخيوط؛ ثالثًا، في بيئة الإنتاج يُنصح بترخيص Professional فأعلى (8 خيوط)، للموازنة بين الأداء والتكلفة. إذا كنت تفضّل استدعاء واجهة HTTP بدلاً من تكامل SDK، يمكنك الرجوع إلى تطبيق عملي لواجهة برمجة الضغط.

هل تحتاج إلى ضغط الملفات؟ جرّب SmartSlim من UGLYPEAR DATA

مبني على محرك ضغط Rust ذاتي التطوير، يدعم 10 فئات رئيسية بأكثر من 40 صيغة تشمل PDF والصور والفيديو وOffice وOFD، مع ضغط محلي لا تغادر فيه البيانات نطاقك.