اذهب إلى المحتوى
  • 0

Laravel PDF Generator

أحمد مصطفى كامل

السؤال

السلام عليكم 
انا استعمل  package
https://github.com/barryvdh/laravel-dompdf
وهذه تقوم بتحويل ملفات ال laravel blade الى PDF
الكود يعمل وتم توليد ملف PDF 
لكن عندي مشكله هي انه اللغة العربية تظهر بهذا الشكل 
image.png.3ba5f7107ece7e22274237c44fc7b272.png

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

مرحبا أحمد لقد قمنا بمناقشة هذه الموضع من قريب

المشكله ببساطه هي ان الحزمه تدعم انواع خطوط معينه للغه العربيه 
ايضا ستجدني قد ذكرت طريقه اخري لطباعة الصفحه بدون الحاجه الي استخدام اي حزمه

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

مرحبا
أفضل حلاً لدعم وإصلاح الأحرف العربية في مكتبة dompdf هو دمج مكتبة ar-php لـ khaled.alshamaa داخل مكتبة dompdf. لذا يرجى اتباع هذه الخطوات

1- قم بتنزيل مكتبة ar-php لـ khaled.alshamaa من الرابط التالي
http://www.ar-php.org/ (هي مكتبة عربية مجانية بترخيص LGPL)

2- استخرج وقم بتحميل مجلد I18N داخل مجلد dompdf

3- افتح ملف Glyphs.php في المسار التالي

dompdf\I18N\Arabic\

ابحث عن

               

public function utf8Glyphs($str, $max_chars = 50

استبدله ب

               

public function utf8Glyphs($str, $max_chars = 150

4- في ملف text_renderer.cls.php
 

dompdf/include/text_renderer.cls.php

قبل هذا السطر

 

     $this->_canvas->text($x, $y, $text

أضف هذا الكود
     

if ( ! class_exists( 'I18N_Arabic' ) ){

        require_once( DOMPDF_DIR . "/I18N/Arabic/Glyphs.php" );
        $Arabic = new I18N_Arabic_Glyphs('Glyphs');
        $text = $Arabic->utf8Glyphs($text);

    }

 

كما يجب عليك استخدام أي خط عربي مخصص في ملف الـ CSS الخاص بك. سيحل هذا المشكلة العربية بشكل دائم وسيعرض الحروف العربية بشكل صحيح. على سبيل المثال: احمد سيظهر كـ احمد وليس كـ د م ح ا.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 5 دقائق مضت قال Mahmoud Hassan19:

مرحبا
أفضل حلاً لدعم وإصلاح الأحرف العربية في مكتبة dompdf هو دمج مكتبة ar-php لـ khaled.alshamaa داخل مكتبة dompdf. لذا يرجى اتباع هذه الخطوات

1- قم بتنزيل مكتبة ar-php لـ khaled.alshamaa من الرابط التالي
http://www.ar-php.org/ (هي مكتبة عربية مجانية بترخيص LGPL)

2- استخرج وقم بتحميل مجلد I18N داخل مجلد dompdf

3- افتح ملف Glyphs.php في المسار التالي

dompdf\I18N\Arabic\

ابحث عن

               

public function utf8Glyphs($str, $max_chars = 50

استبدله ب

               

public function utf8Glyphs($str, $max_chars = 150

4- في ملف text_renderer.cls.php
 

dompdf/include/text_renderer.cls.php

قبل هذا السطر

 

     $this->_canvas->text($x, $y, $text

أضف هذا الكود
     

if ( ! class_exists( 'I18N_Arabic' ) ){

        require_once( DOMPDF_DIR . "/I18N/Arabic/Glyphs.php" );
        $Arabic = new I18N_Arabic_Glyphs('Glyphs');
        $text = $Arabic->utf8Glyphs($text);

    }

 

كما يجب عليك استخدام أي خط عربي مخصص في ملف الـ CSS الخاص بك. سيحل هذا المشكلة العربية بشكل دائم وسيعرض الحروف العربية بشكل صحيح. على سبيل المثال: احمد سيظهر كـ احمد وليس كـ د م ح ا.

انا استخدم اطار عمل laravel هذا الحل لا يتناسب معي

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 17 دقائق مضت قال أحمد مصطفى كامل:

انا استخدم اطار عمل laravel هذا الحل لا يتناسب معي

تستطيع استخدام مكتبة 
carlos-meneses/laravel-mpdf
تدعم اللغة العربية ايضا
او يمكنك استخدام هذه الامر لتنزيل مكتبة
khaled.alshamaa/ar-ph

composer require khaled.alshamaa/ar-ph
 

ويمكن استخدام controller method
 

use PDF;
use ArPHP\I18N\Arabic;

class ExampleController  extends Controller {

function downloadPDF(){
        $reportHtml = view('admin.reports.cutomReport', [])->render();
        
        $arabic = new Arabic();
        $p = $arabic->arIdentify($reportHtml);

        for ($i = count($p)-1; $i >= 0; $i-=2) {
            $utf8ar = $arabic->utf8Glyphs(substr($reportHtml, $p[$i-1], $p[$i] - $p[$i-1]));
            $reportHtml = substr_replace($reportHtml, $utf8ar, $p[$i-1], $p[$i] - $p[$i-1]);
        }

        $pdf = PDF::loadHTML($reportHtml);
        return $pdf->download('report.pdf');
}
}

 

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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...