التعديل على ملفات OpenOffice من سطر الأوامر !!

الكاتب: SilenCker في 25 فبراير 2010

بسم الله الرحمن الرحيم


لا بد أنك احتجت يوما ما إلى التعديل على ملفات OpenOffice عن طريق الأوامر فقط لسبب ما، مثل برمجة سكربت bash يقوم بتعديل جزء من ملف بصفة دورية فلم تجد الوقت المناسب للبحث عن طريقة مناسبة لفعل ذلك.

شرحنا اليوم بسيط للغاية فبينما أنا جالس أفكر في موضوع اليوم تذكرت موضوع OpenOffice لصغر حجمه وخفة شرحه وأهميته :D .

لماذا أحتاج إلى هذا الشرح؟

قد يمرّ عليك يوم يُطلب منك فيه القيام بمشروع يقوم بإنشاء فاتورة تستمد معطياتها من قاعدة بيانات وحفظها بصيغة odt أو pdf أو حتى doc أو xls أو أي صيغة أخرى يدعمها الـ OpenOffice فتجد من السهولة بمكان صنع هذا البرنامج وحتى فقد تستطيع صنع أداة تحتوي بضعة أوامر تقوم بهذا العمل ..

كما يمكن استعمال الشرح لبرمجة برنامج ويب يقوم بصنع رسائل pdf مثلا أو أي شيء يخطر في بالك ويستعمل الملفات المكتبية ..

ماذا يلزمني لتطبيق الشرح؟

  • نظام Linux بأي توزيعة كانت .
  • نسخة من برنامج OpenOffice.org يفضل أن تكون النسخة الأخيرة، يمكنك زيارة موقع النسخة بالضغط هنا.
  • قالب الملف الذي تود التعديل عليه.
  • وقليل من التركيز :D .

نبدأ بصنع قالب الملف الذي نود التعديل عليه أوتوماتيكيا، أنا أريد من برنامجي أن يقوم بالتعديل على رسالة كتبتها عبر برنامج OpenOffice التاريخ الموضوع في الأعلى وكذلك اسم المرسل الذي سوف يكون كـ argv .

القالب الذي أعددته أنا هو :

قمت بحفظ الملف تحت اسم template.odt في المجلد الرئيسي:

/home/

أود من السكربت الخاص بي والمبرمج بلغة bash أن يقوم عند تطبيق الأمر: 

./prog أنس

أن ينشيء ملفا جديدا يحتوي على نفس الرسالة مع تغيير DATE إلى تاريخ اليوم وتغيير كلمة FREIND إلى أنس .

برنامجنا سيحتوي الأوامر التالية:

  • نسخ ملف template.odt من المسار الرئيسي إلى مسار العمل، لكي لا نقوم بالتعديل على القالب الرئيسي.
  • استخراج ملف اسمه content.xml من ملف template.odt عبر الأمر unzip .
  • التعديل على ملف content.xml المستخرج عبر الأمر sed .
  • إعادة إدخال الملف content.xml إلى template.odt عبر الأمر zip .
  • وانتهينا ;) .

فيكون برنامجنا النهائي على الشكل:

1
2
3
4
5
6
7
8
9
10
#!/bin/bash

mkdir /home/tra/
cp /home/template.odt /home/tra/
cd /home/tra/
rm -rf *
unzip template.odt content.xml
sed -i "s/DATE/`date '+%d\/%m\/%Y'`/g" content.xml
sed -i "s/FREIND/$1/g" content.xml
zip template.odt -m content.xml
  • السطر الثالث: إنشاء مجلد ننقل عليه القالب.
  • السطر الرابع: نقل القالب إلى المجلد الي أنشأناه سابقا.
  • السطر الخامس: نقوم بنقل مكان العمل إلى المجلد الذي أنشأناه.
  • السطر السادس: نحذف أي شيء قد يكون موجودا فيه نظرا لأعمالنا السابقة عبر نفس السكربت.
  • السطر السابع: نقوم باستخراج الملف content.xml والذي يحتوي الكتابة من الملف template.odt بالأمر zip لأن ملفات OpenOffice تضفط عبر الهيكلة zip .
  • السطر الثامن: نستبدل الكلمة DATE بتاريخ تنفيذ البرنامج date '+%d\/%m\/%Y' .
  • السطر التاسع: استبدال كلمة FREIND بقيمة argv الأول في لغة bash نكتب عن الـ argv الأول $1 والثاني $2 وهكذا.
  • السطر العاشر: نعيد ملف content.xml المعدل إلى الملف الرئيسي template.odt .
  • يمكنك إضافة سطر يقوم مثلا بنقل الملف إلى سطح المكتب أو إلى جهة أخرى مثلا .


نقوم بحفظ برنامجنا ليكون مساره هو التالي /home/prog ، بعد أن ننفذ الأمر

sh /home/prog <اسم الصديق>

سيتكون الملف template.odt المعدل  في المجلد /home/tra/ وستشاهد بعد تنفيذ :

sh /home/prog أنس



طبعا يمكنك إذا فهمت الشرح جيدا القيام بكثير من التعديلات والتي كنت تجدها روتينية إذا كثرت بكل سهولة عبر سكربت bash بسيط كالذي شاهدت ;) .

الشرح مقدم من أخوكم SilenCker
يوم 25 فبراير 2010 الموافق لـ11 ربيع الأول 1431

مقالات عشوائية

    لا توجد تعليقات !

    علق على المقال

    التعليق