الجمعة، 6 يناير 2017

الطباعة في Oracle APEX الجزء الأول

السلام عليكم ورحمة الله وبركاته

إخواني الأعزاء

من المهم جدا أن يكون لدينا اختيارات كثيرة لطباعة التقارير ، نظرا لأهمية طباعة التقارير عند المستخدم النهائي ، واداة ابكس لم تقيدنا في استخدام اداة الطباعة واخراج التقارير باكثر الصيغ المعروفه مثل (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# 

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#

المكان الاخير الذي سنقوم تغيير الخط فيه هو #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  ، وستكون هذه هي بداية انطلاقنا في الاجزاء القادمة إن شاء الله للتعرف أكثر على الادوات الاخرى .

تحياتي لكم
أحمد السعيد


هناك 9 تعليقات:

  1. هل هنالك ادوات مجانية لهمل report layout ومن ثم اخراج ملف لوضعه مع query في ابكس

    ردحذف
    الردود
    1. نعم سوف نتعرض في الحلقات القادمة ان شاء الله لبعض هذه الادوات
      تحياتي لك

      حذف
    2. طبقت الخطوات بس مفيش تغيير

      حذف
  2. الله يفتح عليك اخي العزيز .. حليت اكبر مشكله اعاني منها

    ردحذف
  3. السلام عليكم عملت كل الخطوات و لم تنجح

    ردحذف
  4. هذا الحل يعمل على 4.1 او 4.2
    جربته على 19.1 نفس الخطوات ما تغير شي

    ردحذف
    الردود
    1. نفس الشيئ معي لا يعمل على ١٩.٢

      حذف
  5. i'm using Oracle apex20 and i make all the steps but not working

    ردحذف