إذا كان لديك عشرات مستندات Word، فإن فتح كل مستند على حدة في LibreOffice وتصديره بشكل منفصل عملية بطيئة وعرضة للمقاطعة. soffice --convert-to pdfيمكن استخدام أمر مثل `document.co.uk` لتحويل مجموعة من المستندات، ولكن من بين المشاكل الشائعة: إرسال ملفات PDF إلى مجلد خاطئ، أو فقدان أسماء الملفات التي تحتوي على مسافات، أو قيام LibreOffice بربط المهمة بنافذة مفتوحة بالفعل، أو إنتاج ملفات PDF بتنسيق مختلف عن تنسيق Word. تبدأ عملية العمل الموضحة أدناه بملف اختبار واحد، ثم تنتقل إلى أمر معالجة دفعية آمن، وتنتهي بفحص الملفات المفقودة أو التالفة.
تستخدم هذه الأمثلة صيغة سطر الأوامر الحالية لبرنامج LibreOffice الموثقة في دليل LibreOffice 26.8، بتاريخ 6 أكتوبر 2026. وتستخدم هذه writer_pdf_Exportالأمثلة مُرشِّح تصدير ملفات PDF الخاص بمستندات Writer. يُعدّ التحويل مناسبًا لملفات DOCX العادية، ولكن التنسيقات المعقدة لا تزال بحاجة إلى مراجعة، لأن LibreOffice وMicrosoft Word قد يعرضان بعض الخطوط وتنسيقات الصفحات بشكل مختلف.
قبل تحويل مجلد
قم بتثبيت LibreOffice على الكمبيوتر الذي سيُجري عملية التحويل. على الخادم، استخدم مدير الحزم أو برنامج التثبيت الخاص بذلك النظام، وتأكد من sofficeتوفره في موجه الأوامر. في نظام Windows، يوجد الملف التنفيذي عادةً في C:\Program Files\LibreOffice\program\soffice.exeالمسار التالي: `/usr/libreoffice ...
قم بإعداد مجلدين منفصلين: أحدهما لملفات DOCX الأصلية والآخر لملفات PDF الناتجة. ابدأ بمجلد إخراج جديد أو فارغ. إذا قمت بالتحويل إلى مجلد يحتوي بالفعل على ملفات PDF بنفس الأسماء الأساسية، فقد يطلب منك LibreOffice الموافقة على الكتابة فوق الملفات الموجودة أو قد يفشل في استبدالها، وذلك حسب العملية وبيئة التشغيل. كما أن فصل المصدر عن الإخراج يمنع حدوث حلقة تحويل غير مقصودة عند فحص البرامج النصية للمجلد.
بالنسبة للمستندات التي تحتوي على خطوط غير شائعة، قم بتثبيت نفس الخطوط التي استخدمها المؤلف الأصلي قبل التحويل. قد يؤدي فقدان الخطوط إلى تغيير فواصل الأسطر، وعدد الصفحات، وعرض الجداول، وترقيم الصفحات حتى عند فتح ملف DOCX بدون ظهور أي خطأ.
1. اختبر ملف DOCX واحد أولاً
قم بتحويل مستند نموذجي قبل تشغيل مجموعة كبيرة من المستندات. في الأمثلة أدناه، استبدل المسارات النموذجية بمساراتك الخاصة:
mkdir -p "/srv/docs/converted"
soffice --headless --convert-to pdf:writer_pdf_Export --outdir "/srv/docs/converted" "/srv/docs/incoming/Annual Report.docx"
--headlessيُشغّل LibreOffice دون فتح واجهته الرسومية. --convert-toيختار تنسيق الإخراج والفلتر الاختياري، بينما --outdirيُحدد وجهة الإخراج. يعرض جدول فلاتر LibreOffice قائمةً writer_pdf_Exportبملفات PDF الناتجة من Writer. راجع ملف PDF التجريبي قبل تحويل كل شيء: تحقق من فواصل الصفحات، والرؤوس والتذييلات، والجداول، والصور، والروابط التشعبية، والأحرف الخاصة.
إذا لم يُنتج الاختبار ملف PDF، فتأكد من صحة مسار الملف المصدر، وإمكانية قراءة الملف، وإمكانية الكتابة في مجلد الإخراج. تحقق أيضًا من تثبيت LibreOffice لنفس الحساب الذي يُشغّل الأمر. المراجع الرسمية: فلاتر تحويل الملفات في LibreOffice ومعاملات سطر الأوامر في LibreOffice .
2. تحويل جميع ملفات DOCX في أمر Bash واحد
على نظامي لينكس أو ماك أو إس، افتح باش في نافذة طرفية واستخدم نمط اسم الملف. تأكد من sofficeوجوده في مجلدك PATH؛ على نظام ماك أو إس، قد تحتاج إلى استدعاء الملف التنفيذي داخل حزمة تطبيق LibreOffice. يتعامل هذا المثال مع ملفات DOCX مباشرةً داخل مجلد إدخال واحد.
src="/srv/docs/incoming"
out="/srv/docs/converted"
mkdir -p "$out"
soffice --headless --convert-to pdf:writer_pdf_Export --outdir "$out" "$src"/*.docx
يقوم Bash بتوسيع *.docxوسائط الملفات إلى وسائط منفصلة قبل تشغيل LibreOffice. ولأن كل مسار يُمرر كوسيط منفصل، تُحفظ المسافات في أسماء المجلدات وأسماء الملفات. يحتفظ ملف PDF الناتج بجذر اسم الملف الأصلي، Annual Report.docxفيصبح Annual Report.pdf. يعالج الأمر الملفات الموجودة في ذلك المجلد فقط؛ ولا يبحث في المجلدات الفرعية.
استخدم وجهة فارغة في المرة الأولى. قبل تشغيل الأمر ذي الأحرف البديلة، تأكد من أن مجلد الإدخال يحتوي على الملفات المطلوبة وأن لديك مساحة كافية على القرص لملفات PDF. في Bash، يمكن أن يبقى الحرف البديل غير المطابق حرفيًا ما لم تقم بضبط خيارات الصدفة؛ إذا كان المجلد قد يكون فارغًا، فاختبر أولًا وجود ملف DOCX واحد على الأقل أو استخدم حلقة التكرار لكل ملف في القسم التالي.
3. استخدم حلقة تكرار للمجلدات الكبيرة أو معالجة الأخطاء بشكل صريح
قد يرفض نظام التشغيل قائمة وسائط طويلة جدًا عندما يحتوي مجلد على آلاف المستندات. تتجنب الحلقة إرسال كل اسم ملف إلى نظام التشغيل في أمر واحد، وتتعامل مع المسافات بأمان عند وضع المسارات بين علامتي اقتباس.
src="/srv/docs/incoming"
out="/srv/docs/converted"
mkdir -p "$out"
found=false
for file in "$src"/*.docx; do
[ -f "$file" ] || continue
found=true
soffice --headless --convert-to pdf:writer_pdf_Export --outdir "$out" "$file" || {
printf 'Conversion failed: %s\n' "$file" >&2
}
done
[ "$found" = true ] || { echo 'No DOCX files found.' >&2; exit 1; }
تتعامل الحلقة المقتبسة forمع أسماء الملفات التي تحتوي على مسافات، ولا تُرسل قائمة الملفات كاملةً كمعامل واحد كبير. تُجري هذه الحلقة عملية تحويل واحدة لكل ملف في LibreOffice، لذا قد تستغرق وقتًا أطول من استخدام أمر البدل الفردي. وهي تفحص الملفات الموجودة مباشرةً داخل مجلد الإدخال فقط. لتضمين المجلدات الفرعية، استخدم بحثًا متكررًا عن الملفات، واحتفظ بكل مجلد إدخال في تخطيط الإخراج؛ وإلا فقد ينتج عن ملفين يحملان نفس الاسم الأساسي أسماء ملفات PDF متضاربة.
4. تحويل مجلد في ويندوز باور شيل
في PowerShell، مرر كل مسار كامل كوسيط منفرد. تُظهر الحلقة التالية الملفات التي يُرجع LibreOffice رمز خروج غير صفري لها:
$soffice = 'C:\Program Files\LibreOffice\program\soffice.exe'
$inputDir = 'C:\Documents\incoming'
$outputDir = 'C:\Documents\converted'
New-Item -ItemType Directory -Force -Path $outputDir | Out-Null
$files = Get-ChildItem -LiteralPath $inputDir -Filter '*.docx' -File
if ($files.Count -eq 0) {
throw "No DOCX files found in $inputDir"
}
$failed = @()
foreach ($file in $files) {
& $soffice --headless --convert-to pdf:writer_pdf_Export --outdir $outputDir $file.FullName
if ($LASTEXITCODE -ne 0) {
$failed += $file.FullName
}
}
if ($failed.Count -gt 0) {
Write-Warning "Review failed conversions: $($failed -join '; ')"
}
قم بالتغيير $sofficeإذا كان LibreOffice مثبتًا في موقع آخر. مثال PowerShell Get-ChildItemليس تكراريًا؛ أضفه -Recurseفقط إذا كنت قد خططت أيضًا لكيفية تجنب أسماء الإخراج المكررة من المجلدات المتداخلة. حالة الخروج غير الصفرية هي تحذير مفيد، لكنها لا تغني عن التحقق من وجود كل ملف PDF متوقع وفتحه بشكل صحيح.
5. تجنب تعارضات الملفات الشخصية وتجاوز المفاجآت
يحتاج LibreOffice إلى صلاحية الكتابة إلى ملف تعريف المستخدم الخاص به. إذا كانت نافذة LibreOffice تفاعلية قيد التشغيل، فقد يعيد تحويل سطر الأوامر استخدام تلك النافذة أو ينتظر ملف تعريف مقفل. أغلق نوافذ LibreOffice الأخرى قبل تنفيذ مهمة لمرة واحدة. بالنسبة للأتمتة أو المهام التي يجب تشغيلها بشكل منفصل، خصص ملف تعريف مستخدم مخصصًا للتحويل باستخدام -env:UserInstallationخيار التمهيد. يوفر LibreOffice توثيقًا لخيار تحديد ملف تعريف غير افتراضي.
soffice -env:UserInstallation=file:///tmp/lo-bulk-profile \
--headless --convert-to pdf:writer_pdf_Export \
--outdir "/srv/docs/converted" "/srv/docs/incoming/Annual Report.docx"
استخدم دليل ملفات تعريف قابل للكتابة من قِبل الحساب الذي يُشغّل عملية التحويل. لا تُشغّل عمليتي LibreOffice متزامنتين على نفس ملف التعريف؛ استخدم ملف تعريف مختلف لكل عامل متزامن. حافظ على تسلسل التشغيل الآلي حتى تختبر الإصدار المُثبّت وإعدادات التخزين.
لا تُجرِ عملية تحويل إلى مجلد الإنتاج قبل تحديد كيفية التعامل مع ملفات PDF الموجودة. احتفظ بنسخة احتياطية من النتائج السابقة أو انقلها، أو اكتبها في دليل جديد يحمل طابعًا زمنيًا. يجب ألا يؤدي التصدير المجمع إلى استبدال ملف PDF موقع أو معتمد أو تمت مراجعته مسبقًا دون تنبيه.
6. استكشاف أخطاء تحويل الدفعات الشائعة وإصلاحها
- لا توجد ملفات إخراج: تحقق من نمط الإدخال أو عامل تصفية PowerShell، وتأكد من وجود مسارات تحتوي على مسافات بين علامتي اقتباس، وتأكد من وجود مجلد الإخراج وإمكانية الكتابة فيه. أعد تشغيل اختبار الملف الواحد لفصل مشكلة المسار عن مشكلة في الدُفعة.
- يُنهي الأمر عمله، لكن بعض الملفات مفقودة: تحقق من مخرجات الطرفية وحالة الخروج، ثم قارن قائمة الملفات المصدرية بملفات PDF التي تم إنشاؤها. قد تحتاج ملفات DOCX التالفة أو المحمية بكلمة مرور إلى إصلاحها أو فتحها يدويًا قبل التحويل.
- إذا توقف برنامج LibreOffice عن العمل أو أبلغ عن قفل ملف تعريف، فأغلق أي عملية تفاعلية لبرنامج LibreOffice أو أعد المحاولة باستخدام
-env:UserInstallationملف تعريف مخصص. لا تحذف مجلد ملف التعريف أثناء استخدام LibreOffice له.
- تختلف الخطوط أو ترقيم الصفحات عن ملف Word: ثبّت الخطوط المطلوبة وقارن ملف PDF نموذجي بالملف الأصلي. بالنسبة للمستندات التي يكون فيها عرض Word الدقيق مهمًا من الناحية التعاقدية، تحقق من التنسيق في تطبيق التأليف أو خدمة عرض معتمدة.
- تبقى ملفات PDF الموجودة دون تغيير: قم بتحويلها إلى مجلد إخراج فارغ وتأكد من أن الأمر يشير إليه. تجنب افتراض أن إعادة تشغيل عملية دفعية سيؤدي دائمًا إلى استبدال ملف PDF سابق.
يدعم LibreOffice أيضًا خيارات تصدير ملفات PDF بعد اسم الفلتر، مثل نطاقات الصفحات أو إعدادات إمكانية الوصول. تُفيد هذه الخيارات عندما يكون من الضروري أن تشترك جميع الملفات في نفس سلوك التصدير، ولكن يُنصح باختبارها على عينة قبل تطبيقها على مجموعة كاملة. راجع معلمات سطر الأوامر الرسمية لتصدير ملفات PDF .
7. تحقق من الدفعة النهائية
لا تكتفِ بتقييم نجاح العملية بمجرد عودة الأمر إلى موجه الأوامر. قارن عدد ملفات DOCX المصدرية بعدد ملفات PDF في مجلد الإخراج، ثم افحص بعض ملفات PDF من أجزاء مختلفة من الدفعة. تأكد من فتح كل ملف، وأن عدد صفحاته مطابق للعدد المتوقع، وأنه يتضمن الصفحة الأخيرة، والجداول، والصور، والرؤوس، والتذييلات، والأحرف المميزة أو الرموز.
في نظام لينكس، يمكنك حساب عدد ملفات الإدخال والإخراج غير المتكررة باستخدام:
find "/srv/docs/incoming" -maxdepth 1 -type f -iname '*.docx' | wc -l
find "/srv/docs/converted" -maxdepth 1 -type f -iname '*.pdf' | wc -l
يُعدّ التحقق من تطابق عدد الملفات خطوةً أوليةً مفيدة، ولكنه ليس دليلاً قاطعاً على صحة جميع الملفات. في حال اختلاف العدد، قارن أسماء الملفات لتحديد التحويلات المفقودة. بالنسبة لسير العمل ذي الحجم الكبير أو الخاضع للوائح تنظيمية، سجّل مسار كل ملف مصدر، ورمز الإرجاع، ومسار الإخراج، ونتيجة التحقق، واحتفظ بملفات المصدر حتى تتم مراجعة ملفات PDF. يُغني سير عمل سطر الأوامر في LibreOffice عن التصدير اليدوي المتكرر، بينما تكشف عملية التحقق المنفصلة عن مشكلات التنسيق ومشكلات مستوى الملف التي لا تستطيع الأتمتة تقييمها بدقة بمفردها.