تخطَّ إلى المحتوى
getnextpdf.com

Pro الإصدار

أداة التحسين

تحلّل أداة التحسين ملف ⁨PDF⁩ بحثًا عن الكائنات المكرَّرة وإمكان إعادة ضغط الصور، ثم تُبلِّغ عن التقليل المُقدَّر في الحجم. وتوازن ثلاثة مستويات بين دقّة المخرَج وحجم الملف.

تُشحَن هذه القدرة في ⁨NextPDF Pro⁩ (nextpdf/pro) وتُفعَّل بمظروف ترخيص من فئة ⁨Pro⁩. ولا يحمّل نشرٌ بلا هذا الاستحقاق أصناف القدرة. قارِن الإصدارات واحصل على ترخيص.

لا يوجد علم ترخيص منفصل لكل ميزة. ومستوى التحسين (بلا فقد، أو متوازن، أو حادّ) معامل في وقت التشغيل، لا مفتاح ترخيص.

Terminal window
composer require nextpdf/pro:^3

تعيش الشيفرة تحت فضاء الأسماء NextPDF\Pro\Optimizer.

ينسّق PdfOptimizer مزيلَ تكرار كائنات ومُعيدَ ضغط صور. وبإعطائه بايتات ⁨PDF⁩ خامًا، يجد مجموعات الكائنات المكرَّرة (حين يسمح المستوى بذلك)، ويحلّل الصور، ويُقدِّر الضغط لكل صورة عند الجودة المستهدفة للمستوى. ويجمّع النتائج في OptimizationResult يُبلِّغ عن الحجم الأصلي، والحجم المُحسَّن المُقدَّر، والكائنات المُزالة، وأعداد الصور قبل وبعد.

يحدّد OptimizationLevel المفاضلة: المستوى بلا فقد يحافظ على جودة الصورة ويتخطّى إزالة التكرار من أجل مخرَج مستقرّ بايتيًا؛ والمتوازن يزيل التكرار ويستهدف جودة صورة ٧٥ بالمئة؛ والحادّ يزيل التكرار ويخفّض الدقّة ويستهدف جودة ٥٠ بالمئة.

تحلّل أداة التحسين بدلًا من أن تعيد الكتابة. يُقدِّر analyze() الوفورات المحتملة ويعيد OptimizationResult دون تغيير المدخل. وذلك يبقي المرور غير هدّام ويدعك تقرّر تطبيقه عبر الكاتب. ويجمع تجريدُ المستوى المفاضلةَ في موضع واحد: المستوى بلا فقد يعيد false من deduplicateStreams() كي يبقى المخرَج مطابقًا بايتيًا، بينما يعيد المتوازن والحادّ ضغط تدفّقات الصور عند أهداف جودة أدنى. وتعتمد الوفورات القابلة للتحقيق على كيفية ترميز مستندٍ لتدفّقاته وصوره فعلًا، لذا تُبلِّغ الوحدة عن تقدير من الكائنات الموجودة فعليًا بدلًا من رقم عنوان ثابت. خلفية التصميم: التدفّقات والمرشّحات.

  • يعيد analyze($pdfData) كائن OptimizationResult؛ ولا يغيّر المدخل.
  • يتخطّى المستوى بلا فقد إزالة تكرار التدفّقات كي يبقى المخرَج مستقرًّا بايتيًا؛ ويفعّل المتوازن والحادّ إزالة التكرار.
  • أهداف جودة الصورة هي ١٠٠ و٧٥ و٥٠ بالمئة للمستويات بلا فقد والمتوازن والحادّ على التوالي.
  • لا يهبط الحجم المُحسَّن المُقدَّر دون الصفر مطلقًا ولا يتجاوز الأصلي.
  • يعيد withLevel($level) أداة تحسين جديدة عند المستوى المطلوب؛ ولا تتغيّر النُّسَخ.

يعكس ما يلي الواجهة البرمجية العامة الموثَّقة. ولا يشحن المستودع مثالًا قابلًا للتشغيل لهذه الوحدة.

use NextPDF\Pro\Optimizer\PdfOptimizer;
$result = (new PdfOptimizer())->analyze($pdfBytes);
use NextPDF\Pro\Optimizer\PdfOptimizer;
use NextPDF\Pro\Optimizer\OptimizationLevel;
$optimizer = new PdfOptimizer(OptimizationLevel::Aggressive);
$result = $optimizer->analyze($pdfBytes);
$savings = $result->originalSize > 0
? (1 - $result->optimizedSize / $result->originalSize) * 100
: 0.0;
  • يُقدِّر analyze() الإمكان؛ اقرنه بوحدة الكاتب لإنتاج مستند مُحسَّن.
  • يُنتِج المستوى بلا فقد عمدًا تقليلًا ضئيلًا في الحجم لأنه يحافظ على الجودة ويتخطّى إزالة التكرار.
  • يعكس عدد الصور بعد المعالجة الصورَ المُزالة عبر إزالة التكرار، لا الصور المُسقَطة.

التحليل خطّي في حجم المدخل إضافةً إلى كلفة مسح بنى الكائنات والصور. ويتحكّم المستوى في مدى حدّة تقديرات إزالة التكرار وإعادة الضغط. ولا يوجد رقم ثابت منشور لتقليل الحجم؛ فالنتائج تعتمد كليًا على المستند. قِس بمستندات تمثيلية.

عامِل المدخل بوصفه غير موثوق. يبقى التحليل للقراءة فقط ولا ينفّذ المحتوى المُضمَّن. ولا تسجّل هذه الوحدة أي محتوى مستند.

تعمل أداة التحسين على نموذج كائنات ⁨PDF⁩ وصورها المحدَّد في ⁨ISO 32000-2⁩؛ ويُؤشِّر المصدر البنود ذات الصلة. ولم يكن مجموعة ⁨RAG⁩ متاحًا وقت التأليف، لذا لا تؤكّد هذه الصفحة أي مُعرِّفات بنود خارجية وتقصر بيانات المطابقة على السلوك المُتحقَّق منه باختبارات الوحدة.

لا يغيّر ⁨Enterprise⁩ سلوك أداة التحسين. يضيف ⁨Enterprise⁩ ميزات امتثال وأرشفة أعلى مستوى مُوثَّقة على حدة؛ وهي ليست لازمة لتحليل إمكان التحسين.

من دون ⁨Pro⁩، استخدم التحسين الأساسي في ⁨NextPDF Core⁩؛ أما إزالة تكرار الكائنات وتحليل إعادة ضغط الصور القابل للضبط فهما إضافتان من ⁨Pro⁩..

توثّق هذه الصفحة السلوك القابل للملاحظة خارجيًا وسطح الواجهة البرمجية العامة المدعوم فقط. أما مسارات فضاء الأسماء الداخلية، والأصناف المساعِدة، وجداول الآليات، وأسماء ملفّات أدلّة التشغيل، وبادئات التذاكر فخارج النطاق.