السلام عليكم ورحمة الله وبركاته
إخواني الأعزاء
من المهم جدا أن يكون لدينا اختيارات كثيرة لطباعة التقارير ، نظرا لأهمية طباعة التقارير عند المستخدم النهائي ، واداة ابكس لم تقيدنا في استخدام اداة الطباعة واخراج التقارير باكثر الصيغ المعروفه مثل (PDF, DOCX,XLSX,,,ETC) وخلال السنوات الماضية مررت بالكثير من ادوات الطباعة التي تمكنني من طباعة تقارير من ابلكيشن الابكس .
في هذا الموضوع سوف نتطرق لأهم هذه الأدوات وكيفية استخدامها ، حتى يكون موضوع شامل جامع لكل ادوات التقارير او على الاقل الشائع منها ، وجدت الكثير من المواضيع المتفرقة التي تتحدث عن طباعة التقارير في apex لكن اكثرها مصادر اجنبية فكان من اللازم ان يكون هناك مصدر عربي لمطوري ابكس العرب ، ولاهمية الموضوع فسيتم إنشائه على هيئة أجزاء نظرا لطوله وحتى يكون هناك شرح وافي لاكثر ادوات الطباعة أهمية
فالله أسأل أن يكون هذا المحتوى نافعا والله من وراءه القصد ،
هناك الكثير من الادوات لطباعة تقارير من الابكس ، ومن الرائع ان ابكس لم تحدد اداة معينه او لم تتبنى اداة واحده ليكون لدى مطور الابكس العديد من الاختيارات التي تتيح له طباعة تقاريره :-
وهذه بعض من الادوات الشائعة لطباعة تقارير الابكس :-
1- Report Quires:-
وهي من أسهل الأدوات التي يمكن استخدامها في الطباعة ، وتأتي مع Shared Components يمكنك أن تقوم بإنشاء أكثر من Query وتستخدم معها Parameters وتطبعها من خلال وضع زر على الشاشة ، ولكنها تفتقر لعدم اعتمادها سوى ل template واحد وهو تقرير عادي على شكل أعمدة ومن الصعب ان تتحكم في وضع مثلا Formula Column في المكان الذي تريده مثل طباعة الفواتير وغيرها ، لكنها فعاله جدا في التقارير على شكل جداول ، وجاء معها Report layouts لزيادة التحكم في التمبلت واستخراج التقارير باكثر من صيغة دون التقيد بصيغة PDF ويتم استخدام XML وهناك أدوات طباعة كثيرة يمكن استخدامها لإنشاء تمبلت ووضعه على Report layouts من أهم هذه الادوات :-
BI Publisher , FO Designer , Style Vesion وهناك ادوات كثيرة وجدتها تقوم بنفس المهمه مع فارق BI Publisher عنهم أنه غير مجاني ، اما اكثر الادوات الاخرى يمكن استخدامها كنسخ تجريبة او تعمل كنسخة لمطور واحد ومهمتها هذه الادوات إنشاء التقرير عليها ثم اصدار التقرير على هيئة XML ثم رفع هذا الملف في Report layouts ومن ثم استخدام report quires لهذه template وهكذا ، لكن هناك نقطة فارقة جدا ان اكثر هذه الادوات لا تدعم اللغة العربية في طباعة التقارير ، وسيكون علينا إيجاد حل لهذه المشكلة ، وسبب المشكلة التي تقابل الكثير هي اعتماد الخطوط العربية .
فلو قمت بتجربة طباعة تقرير من Interactive Report وكانت البيانات باللغة العربية فسيخرج التقرير على شكل ترميز مثل الذي في الصورة التالية :
من المؤكد ان هذه مشكلة كبيرة ويجب علينا حلها وستواجهك هذه المشكلة مع جميع الادوات التي تتعامل مع report layout ، وكما ذكرنا أن سبب المشكلة هو تدعيم لخط عربي يمكنه قرائة البيانات وسنحاول في السطور القادمة أن نقوم بعمل أكثر من مثال عملي ابتداءا من حل مشكلة اللغة العربية إلى كيفية استخدام Report Quires و Report Layouts .
بعدها نقوم بحفظ الملف بامتداد XML كما اتفقنا مثلا سأسميه fop.xml وسيكون مسار الملف الجديد مثلا
c:\\file_config\ords\fop.xml
الان سنبحث عن ملف اسمه defaults.xml قد تم إنشائه مسبقا بعد عمل Config لل ORDS سنجد هذا المف في هذا المسار على سبيل المثال c:\\file_config\ords
نقوم بفتح الملف وسنضيف عليه مسار الملف الذي تم انشائه وهو fop.xml كالتالي
إخواني الأعزاء
من المهم جدا أن يكون لدينا اختيارات كثيرة لطباعة التقارير ، نظرا لأهمية طباعة التقارير عند المستخدم النهائي ، واداة ابكس لم تقيدنا في استخدام اداة الطباعة واخراج التقارير باكثر الصيغ المعروفه مثل (PDF, DOCX,XLSX,,,ETC) وخلال السنوات الماضية مررت بالكثير من ادوات الطباعة التي تمكنني من طباعة تقارير من ابلكيشن الابكس .
في هذا الموضوع سوف نتطرق لأهم هذه الأدوات وكيفية استخدامها ، حتى يكون موضوع شامل جامع لكل ادوات التقارير او على الاقل الشائع منها ، وجدت الكثير من المواضيع المتفرقة التي تتحدث عن طباعة التقارير في apex لكن اكثرها مصادر اجنبية فكان من اللازم ان يكون هناك مصدر عربي لمطوري ابكس العرب ، ولاهمية الموضوع فسيتم إنشائه على هيئة أجزاء نظرا لطوله وحتى يكون هناك شرح وافي لاكثر ادوات الطباعة أهمية
فالله أسأل أن يكون هذا المحتوى نافعا والله من وراءه القصد ،
الادوات الشائعة والمعروفة لطباعة تقارير من Oracle APEX
وهذه بعض من الادوات الشائعة لطباعة تقارير الابكس :-
1- Report Quires:-
وهي من أسهل الأدوات التي يمكن استخدامها في الطباعة ، وتأتي مع Shared Components يمكنك أن تقوم بإنشاء أكثر من Query وتستخدم معها Parameters وتطبعها من خلال وضع زر على الشاشة ، ولكنها تفتقر لعدم اعتمادها سوى ل template واحد وهو تقرير عادي على شكل أعمدة ومن الصعب ان تتحكم في وضع مثلا Formula Column في المكان الذي تريده مثل طباعة الفواتير وغيرها ، لكنها فعاله جدا في التقارير على شكل جداول ، وجاء معها Report layouts لزيادة التحكم في التمبلت واستخراج التقارير باكثر من صيغة دون التقيد بصيغة PDF ويتم استخدام XML وهناك أدوات طباعة كثيرة يمكن استخدامها لإنشاء تمبلت ووضعه على Report layouts من أهم هذه الادوات :-
BI Publisher , FO Designer , Style Vesion وهناك ادوات كثيرة وجدتها تقوم بنفس المهمه مع فارق BI Publisher عنهم أنه غير مجاني ، اما اكثر الادوات الاخرى يمكن استخدامها كنسخ تجريبة او تعمل كنسخة لمطور واحد ومهمتها هذه الادوات إنشاء التقرير عليها ثم اصدار التقرير على هيئة XML ثم رفع هذا الملف في Report layouts ومن ثم استخدام report quires لهذه template وهكذا ، لكن هناك نقطة فارقة جدا ان اكثر هذه الادوات لا تدعم اللغة العربية في طباعة التقارير ، وسيكون علينا إيجاد حل لهذه المشكلة ، وسبب المشكلة التي تقابل الكثير هي اعتماد الخطوط العربية .
فلو قمت بتجربة طباعة تقرير من Interactive Report وكانت البيانات باللغة العربية فسيخرج التقرير على شكل ترميز مثل الذي في الصورة التالية :
من المؤكد ان هذه مشكلة كبيرة ويجب علينا حلها وستواجهك هذه المشكلة مع جميع الادوات التي تتعامل مع report layout ، وكما ذكرنا أن سبب المشكلة هو تدعيم لخط عربي يمكنه قرائة البيانات وسنحاول في السطور القادمة أن نقوم بعمل أكثر من مثال عملي ابتداءا من حل مشكلة اللغة العربية إلى كيفية استخدام Report Quires و Report Layouts .
حل مشكلة اللغة العربية التي تظهر في تقارير PDF من Interactive Report
إذا كنت قد قمت بعمل Configuration لملف ORDS باي إصدار وانصح دائما باستخدام أخر إصدارات ORDS والإصدار الحالي الموجود على موقع اوراكل هو إصدار 3.0.9 ، وسوف نتطرق إن شاء الله في موضوع منفصل وسأشرح بالتفصيل كيفية عمل Configuration لملف ORDS بشكل صحيح ، لكن ما يهمنا الآن هو كيفية حل مشكلة اللغة العربية في طباعة التقارير .
بعد أن قمنا بعمل Config لملف ORDS سيكون لدينا عدة ملفات تم إنشائها بعد عملية Configuration ، سنقوم بإنشاء ملف XML مسئوليته أن يعرف الابكس أن encoding سوف تكون UTF-8 وسنقوم بتعريف مسار الخطوط الموجود على نظام التشغيل ويندوز ، أولا ندخل على مسار ملفات ORDS التي قمت بعمل Configuration لها على سبيل المثال C:\\file_config\ords سنقوم بإنشاء ملف XML جديد كما ذكرنا سابقا وأنصحكم باستخدام ++Notepad سيحتوي ملف XML الجديد على الكود التالي
<fop version="1.0" encoding="UTF-8">
<renderers>
<renderer mime="application/pdf">
<filterList>
<value>flate</value>
</filterList>
<fonts>
<directory>C:\WINDOWS\FONTS</directory>
<auto-detect/>
</fonts>
<stroke-text>false</stroke-text>
</renderer>
</renderers>
</fop>
بعدها نقوم بحفظ الملف بامتداد XML كما اتفقنا مثلا سأسميه fop.xml وسيكون مسار الملف الجديد مثلا
c:\\file_config\ords\fop.xml
الان سنبحث عن ملف اسمه defaults.xml قد تم إنشائه مسبقا بعد عمل Config لل ORDS سنجد هذا المف في هذا المسار على سبيل المثال c:\\file_config\ords
نقوم بفتح الملف وسنضيف عليه مسار الملف الذي تم انشائه وهو fop.xml كالتالي
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Saved on Fri Oct 31 16:57:50 AST 2014</comment>
<entry key="cache.caching">false</entry>
<entry key="fop.configfile">C:\file_config\ords\fop.xml</entry>
<entry key="cache.directory">/tmp/apex/cache</entry>
<entry key="cache.duration">days</entry>
<entry key="cache.expiration">7</entry>
<entry key="cache.maxEntries">500</entry>
<entry key="cache.monitorInterval">60</entry>
<entry key="cache.procedureNameList"/>
<entry key="cache.type">lru</entry>
<entry key="db.hostname">localhost</entry>
<entry>
في الخطوة التالية سنقوم بتغيير خط الطباعة الى Arial من خلال التالي :-
نذهب إلى ملف reports3.sql من خلال المسار التالي
C:\apex\core\ reports3.sql
نقوم بفتح الملف ولا ننسى اخذ نسخة احتياطية من هذا الملف قبل التعديل عليه .
أول مكان سيتم تعديل الخط فيه هو #PAGE_FOOTER_FONT_FAMILY#
المكان الثاني الذي سنقوم بتغيير الخط فيه هو #BODY_FONT_FAMILY#
المكان الاخير الذي سنقوم تغيير الخط فيه هو #HEADER_FONT_FAMILY#
نذهب إلى ملف reports3.sql من خلال المسار التالي
C:\apex\core\ reports3.sql
نقوم بفتح الملف ولا ننسى اخذ نسخة احتياطية من هذا الملف قبل التعديل عليه .
أول مكان سيتم تعديل الخط فيه هو #PAGE_FOOTER_FONT_FAMILY#
name="color">#PAGE_FOOTER_FONT_COLOR#</xsl:attribute>
<xsl:attribute name="font-family">Arial</xsl:attribute>
المكان الثاني الذي سنقوم بتغيير الخط فيه هو #BODY_FONT_FAMILY#
<xsl:attribute-set name="body-font">
<xsl:attribute name="height">12.0pt</xsl:attribute>
<xsl:attribute name="font-family">Arial</xsl:attribute>
سنقوم بتغيير ايضا #PAGE_HEADER_FONT_FAMILY#
<xsl:attribute-set name="header-font">
<xsl:attribute name="height">#HEADER_FONT_SIZE#pt</xsl:attribute>
<xsl:attribute name="font-family">Arial</xsl:attribute>
في المثال السابق قمت باستخدام خط Arial من المؤكد يمكنك استخدام أي خط يدعم اللغة العربية طالما تم تعريفه مسبقا في ملف Fonts بنسخة الويندوز .
الآن نأتي لخطوة مهمه وهي عمل Compile لملف reports3.sql ، نقوم بفتح cmd ثم نقوم بالدخول على مسار ملف core الموجود به ملف reports3.sql كما في الصورة التالية
نقوم بعمل connect باليوزر sys as sysdba كما في الصورة التالية
الان بعد ان تم عمل compile للباكدج reports3.sql نقوم بعمل restart للسيرفيس سواء كنت تستخدم Glassfish , Weblogic or Tomcat
الان سيظهر لدينا التقرير باللغة العربية دون أي ترميز كما في الصورة التالية
في هذا الجزء قمنا بحل مشكلة اللغة العربية عند طباعة تقارير PDF من APEX باستخدام Interactive report ، وستكون هذه هي بداية انطلاقنا في الاجزاء القادمة إن شاء الله للتعرف أكثر على الادوات الاخرى .
تحياتي لكم
أحمد السعيد