الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الحل الامثل و الاخير لمشكلة تصدير تقرير عربي بصيغة PDF

بدأه alionline في 22 يونيو 2011 · 7 رد · 2,868 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم.........

ان مشكلة تصدير تقرير عربي بصيغة pdf هي عدم وجود

خط يدعم اللغة العربية في داخل المكتبة IText.jar

اول شيء يجب تغيير الحقول العربية في التقرير كما في الصورة

التالية:-

وبعد ذلك تضيف هذة الكود

 InputStream url2=getClass().getResourceAsStream("/reports/"+NameReport+".jrxml"); 
JRBeanCollectionDataSource jrdataSource =new JRBeanCollectionDataSource(list);
 JasperDesign dis =JRXmlLoader.load(url2);           
 JasperReport rep = JasperCompileManager.compileReport(dis);
 JasperPrint prnt = JasperFillManager.fillReport(rep,par,jrdataSource);

 JRReportFont font = new JRDesignReportFont();
 font.setPdfFontName("c:/windows/fonts/arial.ttf");
 font.setPdfEncoding(com.lowagie.text.pdf.BaseFont.IDENTITY_H);
 font.setPdfEmbedded(true);

prnt.setDefaultFont(font);

JasperViewer jv = new JasperViewer(prnt);
jv.setVisible(true);

علما انة سوف يبطى قليلا في معالجة التقرير ولكنه فعال مئة بالمئة

تحياتي

post-169800-034494600 1308721392_thumb.p

المرفقات
Arabic Report.png

تم تعديل هذه المشاركة بواسطة alionline في 22 يونيو 2011 في 08:52

1
#2

مشكور جدا اخى على هذا الموضوع الرائع

لى ملاحظة بسيطة :

بما انك ستغير الخط والتشفير فى التقرير يدويا فلماذا تعيد تحميل التقرير load وترجمته compile مع انك فى نهاية الموضوع كتبت ملحوظة انه سيسبب بطئ ملحوظ فى التطبيق

ثم انك تستخدم المسار المطلق فى تحميل ملف الخط لماذا؟ ماذا لو تم نشر التطبيق على خادم يعمل بنظام Linux مثلا ؟

لك منى حل ابسط بكثير جدا

انسخ الملف arial.ttf وضعه فقط بجوار الملف .jasper الناتج من ترجمة التقرير من IReport واعرض التقرير كيف تشاء ولاحظ النتيجة

ملحوظة اخرى او ربما نصيحة : استخدم دائما الملف الناتج من الترجمة .jasper فى برامجك واعرضه مباشرة

فانت لست مضطرا الى تحميل الملف .jrxml وترجمته فى كل مرة يتم فيها استدعاء التقرير

وتحمل ال overhead الناتج من هاتان الخطوتان

فى النهاية مشكور على نشاطك فى القسم ومبادراتك الجميلة وسعيد بتواجدك معنا

تحياتى


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#3
MOHAMED FATHEI كتب:

مشكور جدا اخى على هذا الموضوع الرائع

لى ملاحظة بسيطة :

بما انك ستغير الخط والتشفير فى التقرير يدويا فلماذا تعيد تحميل التقرير load وترجمته compile مع انك فى نهاية الموضوع كتبت ملحوظة انه سيسبب بطئ ملحوظ فى التطبيق

ثم انك تستخدم المسار المطلق فى تحميل ملف الخط لماذا؟ ماذا لو تم نشر التطبيق على خادم يعمل بنظام Linux مثلا ؟

لك منى حل ابسط بكثير جدا

انسخ الملف arial.ttf وضعه فقط بجوار الملف .jasper الناتج من ترجمة التقرير من IReport واعرض التقرير كيف تشاء ولاحظ النتيجة

ملحوظة اخرى او ربما نصيحة : استخدم دائما الملف الناتج من الترجمة .jasper فى برامجك واعرضه مباشرة

فانت لست مضطرا الى تحميل الملف .jrxml وترجمته فى كل مرة يتم فيها استدعاء التقرير

وتحمل ال overhead الناتج من هاتان الخطوتان

فى النهاية مشكور على نشاطك فى القسم ومبادراتك الجميلة وسعيد بتواجدك معنا

تحياتى

الشكر لله اخ محمد

بالنسبة لمسار الخط فيمكن تغييره اينما تجد الخط arial.ttf او اي خط تستخدمه انت في اي نظام .

اما البطىء الذي ذكرته فهو بطى قليل جدا.

و انا اشكرك على هذه النصائح القيمة و فضلا وليس امرا ان تقدر تضع صورة او مثال حول نسخ

الخط بجوار التقرير ولك جزيل الشكر والثواب إن شاء الله

تحياتي

#4

اخى العزيز على

الموضوع بسيط جدا لا يحتاج الى فيديو او حتى صورة كل ماعليك ان تضع الملف arial.ttf فى المجلد reports بجوار التقرير مباشرة وانس امره نهائيا :)

واختصر الكود المرفق فى مثالك فى الموضوع الى الكود التالى :

JRBeanCollectionDataSource jrdataSource =new JRBeanCollectionDataSource(list);
JasperPrint prnt = JasperFillManager.fillReport("/reports/"+NameReport+".jasper",par,jrdataSource);

JasperViewer jv = new JasperViewer(prnt , false);
jv.setVisible(true);

لاحظ ان اسم التقرير ينتهى بالامتداد .jasper

جرب وانا فى انتظارك

تحياتى


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#5
MOHAMED FATHEI كتب:

اخى العزيز على

الموضوع بسيط جدا لا يحتاج الى فيديو او حتى صورة كل ماعليك ان تضع الملف arial.ttf فى المجلد reports بجوار التقرير مباشرة وانس امره نهائيا :)

واختصر الكود المرفق فى مثالك فى الموضوع الى الكود التالى :

JRBeanCollectionDataSource jrdataSource =new JRBeanCollectionDataSource(list);
JasperPrint prnt = JasperFillManager.fillReport("/reports/"+NameReport+".jasper",par,jrdataSource);

JasperViewer jv = new JasperViewer(prnt , false);
jv.setVisible(true);

لاحظ ان اسم التقرير ينتهى بالامتداد .jasper

جرب وانا فى انتظارك

تحياتى

JasperPrint prnt = JasperFillManager.fillReport("/reports/"+NameReport+".jasper",par,jrdataSource);

لايمكن استدعاء التقرير من داخل الـJar فايل عن طريق هذه الكود

ولايمكن عرض اللغة العربية في تقرير بصيغة ال Pdf عن طريق اضافة الخط فقط لاحظ ملف

تحياتي

my pdf.pdf

تم تعديل هذه المشاركة بواسطة alionline في 29 يونيو 2011 في 08:12

#6
اقتباس

لايمكن استدعاء التقرير من داخل الـJar فايل عن طريق هذه الكود

انا لم اقل داخل الجار انا قلت التقرير والخط فى المجلد reports بجوار الجار الرئيسية

دائما ما استخدم هذا الاسلوب فى برامجى فما الذى يدفعنى لزيادة حجم الجار واتخامه بمجلدات وملفات

هنا الفرق اذا جرب طريقتى واخبرنى بالنتيجة

شكرا


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#7

السلام عليم......

اخ محمد

اذا كنت تقصد انك تعمل مسار خاص بالتقرير فهذا يعود

حسب طريقة المبرمج.

اما بالنسبة للحجم ملف الjar فانه في الــEclipse IDE يكون تصدير

ملف الــJar وبداخله كافة مكتباتك المستدعاء اي يكون حجمه على الاقل

4 ميكا بايت .

تحياتي

#8

فعلا اخ على هى طريقة مبرمج

اقتباس

4 ميكا بايت .

ولكن هل تعتقد ان حجم 4 ميجابايت صغيرة ؟

انا افضل ارفاق اى ملفات بجوار الملف الرئيسى

شكرا


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

مواضيع مشابهة