آموزش تبدیل HTML به PDF در PHP توسط mpdf
یکی از چیزهایی که برای هر برنامهنویس تحت وب لازم است، دانستن نحوهی گرفتن خروجی PDF از دادههای یک صفحه HTML است.
برای گرفتن خروجی PDF، کتابخانههای زیادی وجود دارد اما هر کدام مشکلاتی دارند. مثلاً یکی UTF-8 را پشتیبانی نمیکند، یکی رایگان نیست، یکی HTML را پشتیبانی نمیکند و باید یاد بگیرید خودتان با کدهای خاص آن کتابخانه خروجیای بگیرید که شبیه به HTML باشد (که طبیعتاً کار طاقتفرسایی است!)، یکی خروجی میگیرد اما حروف را جدا مینویسد، یکی تعریف فونت در آن غیرممکن یا سخت است و خلاصه هر کدام مشکلی دارند.
اما یک کتابخانه که به خصوص در نسخه آخرش بسیار عالی عمل میکند و تمام مشکلات بالا را رفع کرده، کتابخانهی زیر است:
mPDF
کار با آن بسیار ساده است:
۱- آخرین نسخهی آنرا دانلود و در یک پوشه از پروژه خود 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>
موفق باشید؛
حمید رضا نیرومند
.
- مطالب مرتبط:
- چگونه گزینه های انتخاب شده یک CheckBox را با کمک inputهای hidden به صفحه سوم منتقل کنیم؟
- در آمدی بر زبان PHP
- نوشتن بر روی عکس با GD در PHP
- آموزش نمایش تاریخ هجری شمسی با استفاده از PHP در صفحات وب
- نکاتی در مورد کار با URL در پی.اچ.پی (Working with addresses in PHP)
- چگونه با PHP از اطلاعات دیتابیس خروجی csv بگیریم که کاراکترها درست نمایش داده شوند؟
- ------------
- آموزش گام به گام رایت CD و DVD (ایمیج گرفتن، رایت ایمیج، ایجاد درایو مجازی و اجرای ایمیج)
- آموزش یاهو مسنجر (Yahoo Messenger) به صورت PDF فارسی
- PDF آموزشی نرمافزار Expression Web (جایگزین حرفهای برای FrontePage)
- آموزش بازیابی اطلاعات فلش مموری که توسط ویروس به shortcut تبدیل شدهاند
- نکات امنیتی در طراحی نرم افزارهای تحت وب (pdf) [با پیشفرض PHP]
ارسال سؤال یا نظر
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 استفاده کنم
4- hadi:
بوسیله: , در: Wednesday, 2019 August 07-کد: 16079
سلامrnمن آخرین ورژن رو دانلود کردم و دقیقا مثل مثال نوشتم ولی خطا میده : rn Fatal error: Trait 'Mpdf\Strict' not found in C:\wamp64\www\Mpdf\Mpdf.php on line 39
5- mohammadi:
بوسیله: , در: Tuesday, 2019 November 26-کد: 16160
سلام. من یه سایت ازمون ساز دارم که خروجیش رو میخوام با همین روش پی دی اف بگیرید برام. سایت با ووکامرس طراحی شده و هر ازمون در واقع یک سفارش مشتری هستش. شما فکر کنید که از سفارش ها میخوایم خروجی پی دی اف بگیریم. لطفا قیمت بدید. تشکر
6- امیرحسین آقاجانی:
بوسیله: , در: Tuesday, 2020 February 25-کد: 16234
سلام.rnامکانش هست فایل دانلود هم قرار بدین ؟rnسایتی که معرفی کردین باز نمیشه!rnبا سپاس
7- آزاده کرمی:
بوسیله: , در: Thursday, 2020 September 17-کد: 16419
من با ارور rnFatal error: Trait 'Mpdf\Strict' not found in E:\wamp\www\Internet_shop\public_html\users\profile\Mpdf.php on line 39rnمواجه شدم.rnچطور میشه مشکل رو حل کرد؟
8- پریسا عبدی:
بوسیله: , در: Tuesday, 2022 December 27-کد: 16693
سلام. فایل دانلود هم قرار بدین لطفاً... سایتش باز نمیشه! :(((