تشغيل LibreOffice بدون واجهة رسومية في Docker لتحويل ملفات PDF

نعم. لتحويل المستندات لمرة واحدة، أنشئ صورة Docker صغيرة مثبت عليها LibreOffice، ثم شغّلها soffice --headless. --convert-toقم بتثبيت مجلد الإدخال للقراءة فقط، ومجلد إخراج منفصل للكتابة، بحيث يظهر ملف PDF على جهازك. يستخدم هذا المثال صورة مبنية على Debian، ويحوّل ملف DOCX واحدًا إلى PDF؛ ولا يعرض LibreOffice كخدمة شبكية.

محرر طرفي يعرض ملف Dockerfile مبني على نظام Debian مع تثبيت LibreOffice Writer والخطوط
يقوم ملف Dockerfile بتثبيت LibreOffice Writer وحزمة خطوط أساسية، ثم يستخدم soffice كأمر للحاوية.

ما الذي يفعله وضع التشغيل بدون واجهة رسومية، ومتى يكون استخدام Docker مفيدًا؟

يبدأ وضع التشغيل بدون واجهة رسومية برنامج LibreOffice دون تشغيل واجهته الرسومية. يوفر LibreOffice توثيقًا لهذا الوضع لاستخدامه عبر سطر الأوامر وواجهة برمجة التطبيقات (API)، وتدعم خيارات سطر الأوامر فيه تحويل الملفات مع تحديد مجلد الإخراج. يقوم Docker بتجميع التطبيق وتوابعه، مما يسمح بتشغيل نفس صورة الحاوية بواسطة برنامج نصي أو محطة عمل دون الحاجة إلى تثبيت حزمة سطح المكتب على الجهاز المضيف.

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

1. أنشئ مجلدات الإدخال والإخراج

على نظام تشغيل لينكس أو ماك أو إس باستخدام باش أو واجهة سطر أوامر مشابهة، أنشئ مجلد مشروع يحتوي على مجلدات فرعية. ضع ملف المصدر في المجلد الفرعي inputواتركه outputفارغًا في المرة الأولى.

mkdir -p lo-work/input lo-work/output
cp report.docx lo-work/input/
cd lo-work

تستخدم أوامر Docker الموضحة أدناه مسارات وبنية أوامر شبيهة بنظام Unix. في نظام Windows، عدّل بنية مسار المضيف لـ PowerShell أو موجه الأوامر، وتأكد من السماح لـ Docker Desktop بمشاركة القرص الذي يحتوي على هذه المجلدات.

2. أنشئ صورة باستخدام LibreOffice

أنشئ ملفًا باسم Dockerfile"inside" lo-workيحتوي على هذا المحتوى:

FROM debian:bookworm-slim

RUN apt-get update && apt-get install -y --no-install-recommends \
    libreoffice-writer fonts-liberation \
    && rm -rf /var/lib/apt/lists/*

ENTRYPOINT ["soffice"]

libreoffice-writerيُوفر برنامج Writer وفلاتر التحويل اللازمة لتنسيقات معالجة النصوص الشائعة. أضف libreoffice-calcهذا الخيار libreoffice-impressإذا كان البرنامج بحاجة إلى تحويل جداول البيانات أو العروض التقديمية. تُعد حزمة الخطوط أساسية فقط؛ لذا ثبّت الخطوط التي تتطلبها مستنداتك والتي لديك حقوق استخدامها، لأن الخطوط المفقودة قد تُؤثر على التفاف الأسطر وفواصل الصفحات.

قم ببناء الصورة من الدليل الذي يحتوي على ملف Dockerfile:

docker build -t lo-headless .

يستخدم هذا المثال أسماء حزم Debian Bookworm. تتغير علامات الصورة الأساسية وحزم المستودع بمرور الوقت؛ لذا، بالنسبة لإصدار الإنتاج، اختر صورة أساسية مُحدَّثة، وأعد بنائها بانتظام لتحديثات الأمان، وثبِّت الصورة الأساسية باستخدام الملخص إذا كنت بحاجة إلى إصدارات قابلة للتكرار. تجنّب تثبيت الحزم من مستودع غير ذي صلة لمجرد مطابقة برنامج تعليمي.

يعرض الطرفية الأمر docker build -t lo-headless. إكمال بناء صورة الحاوية
قم ببناء الصورة المحلية من ملف Dockerfile قبل تشغيل حاوية التحويل.

3. تشغيل LibreOffice باستخدام وحدات تخزين منفصلة

أنشئ حاوية قابلة للاستخدام لمرة واحدة، ثم مرر خيارات التحويل بعد اسم الصورة. يكون مجلد الإدخال للقراءة فقط، بينما يكون مجلد الإخراج فقط قابلاً للكتابة. --userيُشغّل هذا الخيار العملية باستخدام مُعرّفات المستخدم والمجموعة الخاصة بك على نظام Linux، بينما HOME=/tmpيمنح LibreOffice مجلدًا قابلاً للكتابة. اضبط أذونات المجلد إذا لم يكن لدى المستخدم المُضيف صلاحية الكتابة إليه output.

docker run --rm \
  --user "$(id -u):$(id -g)" \
  --env HOME=/tmp \
  -v "$PWD/input:/input:ro" \
  -v "$PWD/output:/output" \
  lo-headless \
  --headless --nologo \
  -env:UserInstallation=file:///tmp/lo-profile \
  --convert-to pdf:writer_pdf_Export \
  --outdir /output \
  /input/report.docx

--headlessيُخفي واجهة المستخدم الرسومية، --convert-to pdf:writer_pdf_Exportويختار مُرشِّح تصدير ملفات PDF، --outdirويُوجِّه النتيجة إلى مجلد الإخراج المُثبَّت. يُتيح مسار ملف تعريف المستخدم الفريد لهذه العملية دليل تكوين LibreOffice قابلًا للكتابة؛ إذا كنت تُشغِّل عدة تحويلات في وقت واحد في حاوية واحدة طويلة الأمد، فاستخدم مسار ملف تعريف مختلفًا لكل عملية.

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

أمر طرفي لتشغيل حاوية lo-headless مع إدخال للقراءة فقط، وإخراج قابل للكتابة، وتحويل بدون واجهة رسومية، وملف تعريف منفصل
يقوم أمر التشغيل بتمرير ملف المصدر إلى soffice مع تقييد وصول المضيف إلى مجلدي المشروع.

4. تأكد من إنشاء ملف PDF

تحقق من دليل الإخراج الخاص بالجهاز المضيف بعد خروج Docker:

ls -l output/
file output/report.pdf
test -s output/report.pdf

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

قم بعرض تقرير البرنامج النصي report.pdf في مجلد الإخراج وحدده كملف PDF
تأكد من وجود ملف الإخراج والتعرف عليه كملف PDF، ثم راجع الصفحات بحثًا عن تغييرات في التخطيط.

ما الذي يجب عليّ التحقق منه في حالة فشل عملية التحويل؟

  • لا يوجد ملف إخراج: تأكد من اسم ملف المصدر ومسار الحاوية، الذي inputتم تركيبه في /input، وأن outputدليل المضيف قابل للكتابة بواسطة المستخدم المحدد.
  • أخطاء في ملف التعريف أو القفل: تأكد من -env:UserInstallationإمكانية الكتابة في المسار. استخدم دليل تعريف منفصل لكل عملية LibreOffice متزامنة.
  • تم تغيير التنسيق: قم بتثبيت الخطوط المطلوبة في الصورة وراجع ملف PDF. قد يختلف العرض عن نظام سطح المكتب بسبب توفر الخطوط، وفلاتر التصدير، واختلافات الإصدارات.
  • خطأ في تركيب Docker: تحقق من وجود كلا الدليلين المضيفين قبل استخدام -vأو --mount، وتحقق من أن البرنامج الخفي يمكنه الوصول إليهما.

للاطلاع على سلوك الخيارات بالتفصيل، راجع مرجع معلمات سطر الأوامر في LibreOffice . يمكنك التحقق من أسماء الحزم في قائمة حزم Debian Bookworm الخاصة بـ LibreOffice Writer . تشرح وثائق Docker الرسمية عمليات الربط وتركيب الملفات (bind mounts) وتعليمات Dockerfile .

اترك تعليقاً

اجعل LibreOffice يتعرف على بيئة تشغيل Java الخاصة بك

اجعل LibreOffice يتعرف على بيئة تشغيل Java الخاصة بك

قم بتثبيت بيئة تشغيل Java متوافقة، وقم بتمكينها في LibreOffice، وقم باستكشاف أخطاء قائمة JRE الفارغة وإصلاحها دون تغيير الإعدادات غير ذات الصلة.

تشغيل LibreOffice بدون واجهة رسومية في Docker لتحويل ملفات PDF

تشغيل LibreOffice بدون واجهة رسومية في Docker لتحويل ملفات PDF

قم بإنشاء حاوية LibreOffice صغيرة، وقم بتحويل مستندات المكتب بدون واجهة مستخدم رسومية، وتحقق من مخرجات PDF مع تقييد الوصول إلى ملفات المضيف.

صغّر حجم ملفات LibreOffice Impress دون تشويش الصور

صغّر حجم ملفات LibreOffice Impress دون تشويش الصور

قلل من حجم ملفات عروض LibreOffice التقديمية الكبيرة عن طريق ضغط الصور المضمنة، واختيار إعدادات صور معقولة، والتحقق من جودة الشرائح قبل مشاركتها.

منع قصّ الصور المطبوعة ذات الأحجام المخصصة في LibreOffice

منع قصّ الصور المطبوعة ذات الأحجام المخصصة في LibreOffice

قم بمطابقة أبعاد صفحة LibreOffice مع طابعتك، وتحقق من الهوامش القابلة للطباعة، وقم بتصحيح التحجيم قبل طباعة مستند ذي حجم مخصص.

تسريع وحدات ماكرو Calc عن طريق قراءة وكتابة البيانات على دفعات

تسريع وحدات ماكرو Calc عن طريق قراءة وكتابة البيانات على دفعات

استبدل الوصول المتكرر إلى الخلايا بعمليات قراءة وكتابة النطاقات المجمعة، ثم قم بقياس النتائج وحماية الصيغ في مصنفات Calc الكبيرة.

تنظيم دفتر LibreOffice باستخدام المستندات الرئيسية المرتبطة

تنظيم دفتر LibreOffice باستخدام المستندات الرئيسية المرتبطة

قسّم المخطوطة الطويلة إلى فصول، وقم بتجميعها في برنامج Writer، وحافظ على اتساق الأنماط والمحتويات وعمليات التحقق من التصدير.

قم بتوصيل LibreOffice Base بـ PostgreSQL باستخدام المعالج المدمج

قم بتوصيل LibreOffice Base بـ PostgreSQL باستخدام المعالج المدمج

استخدم خيار PostgreSQL المباشر في Base لإدخال تفاصيل الخادم الخاص بك، وتسجيل الدخول، وحفظ ملف اتصال ODB، واستكشاف أخطاء الوصول الشائعة وإصلاحها.

توفير خطوط مخصصة لـ LibreOffice Flatpak

توفير خطوط مخصصة لـ LibreOffice Flatpak

قم بتثبيت خط في مجلد الخطوط الخاص بمستخدم Linux الخاص بك، وأعد تشغيل LibreOffice Flatpak، وتأكد من ظهوره في Writer دون إضعاف الحماية التي يوفرها التطبيق.

أوقفوا أعطال LibreOffice في سونوما: اعملوا محلياً أولاً

أوقفوا أعطال LibreOffice في سونوما: اعملوا محلياً أولاً

احمِ عملك واعزل أعطال حفظ محرك الأقراص الشبكي في LibreOffice على نظام macOS Sonoma باستخدام سير عمل محلي أولاً، وفحوصات الأذونات، والاختبارات المستهدفة.

حافظ على معرّفات CSV سليمة في Calc عن طريق استيرادها كنص

حافظ على معرّفات CSV سليمة في Calc عن طريق استيرادها كنص

حافظ على الأصفار البادئة في برنامج Calc عن طريق تعيين أعمدة المعرف إلى نص أثناء استيراد ملف CSV، والتحقق من المعاينة، والتحقق من البيانات المحفوظة.