یکی از چیزهایی که برای هر برنامهنویس تحت وب لازم است، دانستن نحوهی گرفتن خروجی PDF از دادههای یک صفحه HTML است.
برای گرفتن خروجی PDF، کتابخانههای زیادی وجود دارد اما هر کدام مشکلاتی دارند. مثلاً یکی UTF-8 را پشتیبانی نمیکند، یکی رایگان نیست، یکی HTML را پشتیبانی نمیکند و باید یاد بگیرید خودتان با کدهای خاص آن کتابخانه خروجیای بگیرید که شبیه به HTML باشد (که طبیعتاً کار طاقتفرسایی است!)، یکی خروجی میگیرد اما حروف را جدا مینویسد، یکی تعریف فونت در آن غیرممکن یا سخت است و خلاصه هر کدام مشکلی دارند.
اما یک کتابخانه که به خصوص در نسخه آخرش بسیار عالی عمل میکند و تمام مشکلات بالا را رفع کرده، کتابخانهی زیر است:
کار با آن بسیار ساده است:
۱- آخرین نسخهی آنرا دانلود و در یک پوشه از پروژه خود 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 که همین الان من گرفتهام را میتوانید اینجا مشاهده کنید.
برای تغییر فونت پیشفرض به فونت دلخواهتان، روالی که در این مطلب آمده را طی کنید. یعنی:
۱- فونت دلخواهتان را (مثلاً 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>
موفق باشید؛
حمید رضا نیرومند