سه شنبه 4 تیر 1398 |  عضویت / ورود






[ بخش اصلی آموزشها | افزودن آموزش | داری بیشترین امتیاز | دارای بیشترین بیننده | جدیدترین نظرات ]

آموزش تبدیل HTML به PDF در PHP توسط mpdf



این آموزش مربوط است به موضوع آموزش PHP‏ که توسط Hamid در تاریخ: Saturday, 2016 February 13 ارسال شده است.   |   تعداد بازدید: 4688 بار   |   امتیاز متوسط: امتیازی داده نشده است


----------------------------------

یکی از چیزهایی که برای هر برنامه‌نویس تحت وب لازم است، دانستن نحوه‌ی گرفتن خروجی PDF از داده‌های یک صفحه HTML است.

برای گرفتن خروجی PDF، کتابخانه‌های زیادی وجود دارد اما هر کدام مشکلاتی دارند. مثلاً یکی UTF-8 را پشتیبانی نمی‌کند، یکی رایگان نیست، یکی HTML را پشتیبانی نمی‌کند و باید یاد بگیرید خودتان با کدهای خاص آن کتابخانه خروجی‌ای بگیرید که شبیه به HTML باشد (که طبیعتاً کار طاقت‌فرسایی است!)، یکی خروجی می‌گیرد اما حروف را جدا می‌نویسد، یکی تعریف فونت در آن غیرممکن یا سخت است و خلاصه هر کدام مشکلی دارند.

اما یک کتابخانه که به خصوص در نسخه آخرش بسیار عالی عمل می‌کند و تمام مشکلات بالا را رفع کرده، کتابخانه‌ی زیر است:

mPDF

http://img.aftab.cc/news/94/mpdf.png

کار با آن بسیار ساده است:

۱- آخرین نسخه‌ی آن‌را دانلود و در یک پوشه از پروژه خود Extract کنید. (مثلاً در پوشه include/pdf)

۲- توجه: در صفحه‌ای که می‌خواهید خروجی PDF بگیرید، هیچ چیزی نباید echo شده باشد.

محتوایی که قرار است در PDF دیده شود را در یک متغیر مثلاً به نام html$ بریزید. (مثلاً ما در مثال زیر یک خط کد HTML را در این متغیر ریخته‌ایم)

۳- از قطعه کد زیر برای تولید PDF استفاده کنید! همین!


$html='<p align="center">به نام خدا</p>';
include('include/pdf/mpdf.php');
$mpdf=new mPDF('utf-8');
$html=iconv("utf-8","UTF-8//IGNORE",$html);
$mpdf=new mPDF('ar','A4','','',5,5,5,5,16,13);
$mpdf->SetDirectionality('rtl');
$mpdf->WriteHTML($html);
$mpdf->Output();
?>

- نکته‌ای که لازم است بدانید این است که اعداد 5، فاصله دور صفحه را مشخص می‌کند. (margin)

- اگر تنظیمات بیشتری نیاز داشتید، راهنمای mPDF را مطالعه کنید.

- فراموش نکنید که این کتابخانه و همه کتابخانه‌های مشابه تگ‌های محدودی را پشتیبانی می‌کنند. تگ‌هایی که mPDF پشتیبانی می‌کند در این صفحه موجودند. اما مجموعاً نگرانی خاصی وجود ندارد.

- یک نمونه خروجی از mPDF که همین الان من گرفته‌ام را می‌توانید اینجا مشاهده کنید.

تغییر فونت در mpdf

برای تغییر فونت پیش‌فرض به فونت دلخواهتان، روالی که در این مطلب آمده را طی کنید. یعنی:

۱- فونت دلخواهتان را (مثلاً irsans.ttf) به پوشه ttfonts مربوط به mpdf آپلود کنید.

۲- فایل config_fonts.php را باز کنید و دنبال ‎$this->fontdata بگردید و آخرین فونت موجود در آرایه را تکثیر کنید و نام فونت را به iransans و نام فایل آن‌را به irsans.ttf تغییر دهید. یعنی خواهید داشت:

    "iransans" => array( 
        'R' => "irsans.ttf",
        'useOTL' => 0xFF,
        ),

۳- در کدهای html خود با CSS از فونتی که نام برده‌اید استفاده کنید. مثلاً اگر می‌خواهید یک div فونت iransans به خود بگیرد، در style آن بنویسید:

<div style="font-family:iransans">...

اگر می‌خواهید کل صفحه تغییر کند، اگر از تگ body استفاده کرده‌اید، می‌توانید در بین تگ head بنویسید:

<style>
    body {font-family: iransans;}
</style>

موفق باشید؛
حمید رضا نیرومند





ارسال سؤال یا نظر


1- یاسر:
بوسیله: , در: Friday, 2017 January 27-کد: 14937
سلامrnمن هر کاری می کنم نمیتونم فونت نازنین رو اضافه کنم.rnممنون میشم راهنمایی کنید


2- علی:
بوسیله: , در: Sunday, 2017 April 09-کد: 15065
سلام و عرض ادبrnبرای بوردر دادن به هر صفحه به صورت مجزا چه کار میشه کرد؟rnrnمن با دستور line توی کتابخانه tcpdf تونستم این کار رو انجام بدم ولی متاسفانه اونجا پشتیبانی خوبی از فونت و خط فارسی نمیشهrnrnتو mpdf چطور میشه این کار رو کرد؟rnrnنمونه:rnhttp://s8.picofile.com/file/8291557976/example_001.pdf.html


3- محمد:
بوسیله: , در: Sunday, 2017 December 10-کد: 15456
چطور میشه آدرس یک صفحه را که شامل چند کوئری و غیره است بجای متغیر $html استفاده کنم

Tutorials ©