أداة PDF من جهة الخادم ترفع ملفك إلى أجهزة الجهة المشغّلة، وتعالجه هناك، وترسل النتيجة إليك. أما أداة جهة العميل فتنزّل البرنامج إلى متصفحك بدلًا من ذلك، ويعالج البرنامج الملف على جهازك أنت. في الحالة الأولى ينتقل مستندك؛ وفي الثانية لا ينتقل إلا الكود.

هذا الفرق الوحيد يحدد من يستطيع رؤية ملفك أصلًا. ويفسّر أيضًا لماذا يختلف إحساس النوعين، ولماذا يفشلان بطرق مختلفة ويناسبان مهام مختلفة. يشرح هذا المقال ما يحدث فعلًا في كل منهما، خطوة بخطوة.

ما الذي يحدث في أداة من جهة الخادم

  1. تختار ملفًا. ترسله الصفحة عبر الإنترنت إلى خادم الجهة المشغّلة، عادةً كرفع عبر HTTPS.
  2. يخزّنه الخادم، على القرص أو في الذاكرة على الأقل طوال مدة المهمة، وغالبًا في طابور مع ملفات أشخاص آخرين.
  3. ينجز العمل برنامج على الخادم، مثل مكتبة PDF أو محوّل أو محرك للتعرّف على النص.
  4. تُخزَّن النتيجة أيضًا، وتعطيك الصفحة رابطًا لتنزيلها.
  5. يُحذف الملفان لاحقًا، بحسب قواعد الاحتفاظ الخاصة بالجهة المشغّلة.

كان هذا التصميم العملي الوحيد في السابق. كانت المتصفحات بطيئة، والمكتبات القادرة على قراءة ملفات PDF وإعادة كتابتها لا تعمل إلا على الخوادم. أما متصفحات اليوم فتشغّل كودًا معقدًا بسرعة، ومكتبات PDF مفتوحة المصدر المكتوبة بلغة JavaScript تستطيع إنجاز معظم المهام اليومية داخل تبويب.

يحمي HTTPS الخطوة 1 من المتنصّتين. أما الخطوات من 2 إلى 5 فتعتمد على الجهة المشغّلة: أمانها، ووصول موظفيها، ونسخها الاحتياطية، والتزاماتها القانونية في البلد الذي توجد فيه الخوادم. معظم الجهات المشغّلة تتعامل مع ذلك بمسؤولية، لكنك تثق بأنها ستفعل.

ما الذي يحدث في أداة من جهة العميل

  1. تفتح صفحة الأداة. ينزّل متصفحك الصفحة وكود JavaScript الخاص بها، كأي موقع آخر.
  2. تختار ملفًا. تقرأه واجهة File API في المتصفح من قرصك إلى ذاكرة التبويب. لا يُرسل شيء.
  3. ينجز العمل كود يعمل داخل التبويب. الأجزاء الثقيلة تعمل غالبًا في Web Worker، أي خيط معالجة في الخلفية، فتبقى الصفحة سريعة الاستجابة.
  4. تُبنى النتيجة في الذاكرة وتُسلَّم إليك كتنزيل، عبر رابط مؤقت يشير إلى ذاكرة داخل متصفحك أنت.
  5. حين تغلق التبويب، تُحرَّر الذاكرة. لا يوجد ما يُحذف في مكان آخر، لأن شيئًا لم يُرسل.

أدوات PDF في Kopitiam تعمل بهذه الطريقة. فهي تستخدم pdf.js، محرك PDF مفتوح المصدر من Mozilla، لقراءة الصفحات ورسمها، ويعمل محلّله في Web Worker. وتستخدم pdf-lib، وهي مكتبة أخرى مفتوحة المصدر، لبناء ملف PDF الجديد. كلتاهما تعمل داخل تبويبك.

جهة العميل لا تعني أن الصفحة لا ترسل أي طلبات شبكة. فهي ما زالت تحمّل الكود والخطوط، وعلى موقع مجاني، الإعلانات. المهم أن بايتات ملفك لا تكون أبدًا جزءًا من أي طلب.

لماذا تستطيع أدوات جهة العميل العمل دون اتصال

بمجرد وصول البرنامج إلى متصفحك، لا يحتاج إلى الشبكة ليعمل. لهذا ينجح اختبار عدم الاتصال: حمّل الأداة، وأوقف Wi-Fi، فتواصل الأداة عملها. لو كانت ترفع الملف فعلًا، لفشلت فورًا.

هناك تفاصيل تستحق المعرفة. يبدأ Kopitiam خيط العامل الخاص بمحرك PDF بمجرد فتح صفحة الأداة، لا عند إفلات الملف، لذا تستمر الأدوات في العمل إن انقطع الاتصال بعد تحميل الصفحة. بعض الميزات الأقل شيوعًا تحمّل كودًا إضافيًا في أول مرة تستخدمها، مثل محرك الخطوط للنص بالكتابات غير اللاتينية. هذا كود قادم إليك، لا ملفك خارجًا منك.

الحدود الحقيقية للمعالجة من جهة العميل

لإنجاز العمل على جهازك تكاليف، والأداة الأمينة يجب أن تخبرك بها.

  • الذاكرة. الملف كله يوضع في ذاكرة التبويب، وغالبًا في أكثر من نسخة أثناء معالجته. مسح حجمه 200 MB قد يحتاج أضعاف ذلك. المتصفحات تحدّ الذاكرة لكل تبويب، والهواتف تحدّها أكثر من غيرها.
  • السرعة. حاسوبك المحمول أو هاتفك هو الذي ينجز العمل، لا مركز بيانات. تحويل 400 صفحة إلى صور، أو إعادة ضغط كل صورة في مسح طويل، يستغرق وقتًا أطول بشكل ملحوظ على جهاز قديم.
  • البطارية والحرارة. المهمة الطويلة على الهاتف تُشغّل المعالج بقوة لفترة.
  • المهام الصعبة. بعض المهام أسهل بكثير ببرامج الخادم، مثل التعرّف على النص في أرشيفات ممسوحة كبيرة، أو تحويل ملفات Office المعقدة مع الحفاظ على التخطيط بدقة. كثير من الأدوات التي تعمل من جهة العميل في غير ذلك ترسل هذه المهام تحديدًا إلى خادم.

عمليًا، حدّ الحجم في أداة من جهة العميل هو جهازك لا رقم في صفحة الأسعار. لا يضع كود Kopitiam حدًا لحجم الملف، لذا فالملف الكبير جدًا إما أن ينجح وإما أن تنفد الذاكرة. تقسيم الملف الكبير أولًا، أو استخدام متصفح على الكمبيوتر بدلًا من الهاتف، يمرّره عادةً.

خذ مسحًا حجمه 40 MB تحتاج إلى تصغيره للبريد الإلكتروني، على اتصال جوال بطيء. يجب على أداة جهة الخادم أن ترفع الـ 40 MB كلها قبل أن تبدأ، ثم تنزّل أنت النتيجة، فمعظم الانتظار يكون على الشبكة. أداة جهة العميل تتخطى عمليتي النقل كلتيهما، لكن هاتفك يقوم بالضغط بنفسه، وقد يستغرق ذلك بعض الوقت مع مسح طويل. لا أحد منهما أسرع دائمًا: الأمر يعتمد على اتصالك وجهازك.

الحلول الهجينة، وادعاءات تُقرأ بعناية

ليست كل أداة من نوع واحد خالص. سترى بضعة أنماط:

  • محلية في الغالب، وبعضها على الخادم. المهام البسيطة تعمل في المتصفح بينما يُرفع التحويل أو التعرّف على النص. ابحث عن بيان لكل أداة على حدة، لا بيان للموقع كله.
  • رفع مشفّر. يُرفع الملف لكنه مشفّر أثناء النقل وأثناء التخزين. هذا أفضل من لا شيء، لكن الخادم ما زال يفك تشفيره ليعمل عليه.
  • محلية مع حفظ سحابي. العمل محلي، لكن النتيجة تُخزَّن في حسابك لتفتحها لاحقًا. هذه نسخة على الخادم، عن قصد.
  • تطبيقات سطح المكتب. البرنامج المثبّت يعمل من جهة العميل أيضًا، لكنه قد يرسل الملفات أو بيانات الاستخدام إلى مطوّره. سياسة خصوصيته تبقى مهمة.

كيف تتحقق من النوع الذي تستخدمه

افتح أدوات المطوّر في المتصفح (F12 في معظم متصفحات الكمبيوتر)، وانتقل إلى تبويب «الشبكة» (Network)، ومرّر ملفًا تجريبيًا عبر الأداة. أداة جهة الخادم تُظهر طلبًا بحجم ملفك تقريبًا يخرج عند البدء. وأداة جهة العميل لا تُظهر إلا طلبات صغيرة، مثل الإعلانات أو إشارات التحليلات، ولا طلب يكبر مع ملفك. وإنجاز المهمة نفسها مع إيقاف Wi-Fi هو النسخة السريعة من الاختبار نفسه.

أيهما تختار

للعقود وقسائم الرواتب والرسائل الطبية ومسوحات الهوية، جهة العميل هي الخيار الافتراضي الأفضل: لا توجد نسخة في مكان آخر لتُسرّب أو يُحتفظ بها. ولكتيّب عام أو قائمة طعام، أيهما يفي بالغرض. وحين تحتاج إلى شيء لا يُتقنه المتصفح، مثل التعرّف على النص في أرشيف من 2,000 صفحة، فأداة حسنة السمعة من جهة الخادم ذات سياسة احتفاظ واضحة خيار معقول، تُستخدم لذلك الملف لا كعادة.