ساخت pdf فارسی با php

برای ایجاد فایل pdf چند تا کتابخونه خوب برای php وجود داره dompdf ,TCPDF و mPDF

من هر سه رو تست کردم و بی شک mPDF چه در پشتیانی زبان فارسی چه در سرعت و کارایی سرامد تر از بقیه هست.

برای شروع یک پوشه ایجاد کنید بعد mPDF رو با composer اضافه میکنیم

فایل index.php با محتویات زیر رو درست میکنیم

mPDF بیشتر تگ های html رو پشتیبانی میکنه میتونید لیستش رو ببینید.

در رابطه با دستورات CSS هم بهتره از دستوراتی که چند مقدار باهم میگیرن مثل font رو استفاده نکنید چون کار نمیکنه به جاش از دستورات صریح استفاده کنید مثل font-family, font-size, border-color,...البته تو نسخه ۶٫۱ که اینجوری هست تا الان شاید تو نسخه های بعدی پشتیبانی بهتر بشه.

بعد اینکه ممکنه صفحتون تو مرورگر درست نشون داده بشه ولی تو خروجی mPDF نه، که طبیعی هست چون ممکنه بعضی دستورات هنوز تو mPDF پشتیبانی نشده باشه تو این موارد پیشنهاد میکنم از inline-style تو خود تگ HTML استفاده کنید.

برای اینکه فونت دلخواهتون رو استفاده کنید باید فونت رو در پوشه vendor/mpdf/mpdf/ttfontsقرار بدید برای مثال فونت BYekan رو از اینجا دانلود کنید بعد فایلهای BYekan.ttf و BYekan_bold.ttf رو در پوشه بالا قرار بدید هست.

حالا فایل config_fonts.php در مسیر vendor/mpdf/mpdfرو باز کنید و به آرایه fontdataمقدار زیر رو اضافه کنید

دو مقدار useOTL و useKashida تنظیمات مخصوص فونت های عربی و فارسی هستند میتونید برای توضیحات بیشتر اینجا رو بخونید.

یه نکته خیلی مهم اینکه فونتون باید جدول GDEF رو داشته باشه که این مورد من رو خیلی اذیت کرد چون از همین فونت یکان من هرچی نسخه استفاده میکردم خطا میداد که این جدول رو نداره

البته خوشبختانه به کمک دوست خوبم Erfan Sahafnejad نسخه درستش رو پیدا کردم  و در متن گذاشتم.

 

به روز رسانی 21-10-96

با تشکر از اطلاع رسانی آقای ihnd در نظرات –  میتونید نسخه اصلاح شده بیشتر فونت های معروف فارسی که با این کتابخونه سازگار هستند رو از Standardized Persian Fonts By SCICT یا اینجا دانلود کنید.

جستجو در کل مطالب سایت

نوشته های مشابه

۲۶ comments

  1. سلام
    ممنون از مطلب بسیار خوبتون
    من یه راهنمایی نیاز دارم.داخل اون html که قراره pdf بشه کد php دارم و این کلاس نمیتونه کد php رو parse بکنه و به همین خاطر اون فاکتوری که میخوام بسازم به مشکل میخوره.میشه لطفا یه راهنمایی بهم بدین که چطور این مشکل رو حل کنم؟
    ممنون

  2. تو خود رشته ای که قرار هست به pdf تبدیل بشه کد php نمیتونه قرار بگیره شما باید مقدار اون فاکتوری که مد نظرتون هست رو بچسبونید به رشته مثل اینجا https://pastebin.com/hYY271Ae

  3. ممنون از آموزش خوبتون.
    من یک نسخه فونت xbzar دارم که نمیدونم قبلن از کجا گرفتم و با این کتابخونه کار میکنه. ولی الان نیاز به فونت میترا دارم که با این کتابخونه ازش استفاده کنم و نمیتونم نسخه سازگارش رو پیدا کنم.
    روشی برای تبدیل فونت bmitra به نسخه سازگار با این کتابخونه هست؟ همین خطای otl را بهم میده روی فونت bmitra
    بازم از آموزش خوبتون ممنونم.

      1. ممنون از اینکه سریع پاسخ دادید. این را تست کردم و خطای otl گرفتم.
        بدون آپشن otl هم فونتها به هم نمی چسبند.

        باید یک راهی برای تبدیل فونت باشد. این otl چی هست اصلن؟

  4. سلام ضمن تشکر بابت مطلب خوبتون مشکلی که برخورد کردم هر فونتی که می گذارم فونتش تغییر نمی کنه

  5. سلام مشکلی که دارم به این صورته که اگه خط otl را حذف کنم کلمه ها رو قطعه قطعه نشون میده ولی اگه حذف نکنم هیچ خروجی بهم نمیده
    نمیدونم مشکل از کجاست کلافه شدم اینقدر اینترنت رو گشتم

          1. به جای اضافه کردن فایل mdf.php فایل vendor/utoload.php رو اضافه کنید
            من چند تا تغییر تو آموزش دادم طبق همون یه بار دیگه پیش برید ببینید جواب میده یا نه
            اگه نشد من کد کامل رو براتون آپلود میکنم

  6. سلام، خیلی خیلی ممنون
    من کلی واسه نمایش فارسی داخل mpdf سرچ کردم ولی درست نمیشد. با کد شما سریععععععععععع درست شد
    ممنونننننننن

      1. سلام، ممنون. یه سوال دیگه داشتم. موقع ساختن پی دی اف متن body روی header نوشته میشه از margin-header و margin-bottom و هر چیز دیگه ای استفاده کردم ولی مشکلم حل نشد

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *