إنشاء ملفات PDF بواسطة PHP ، طبع و تحميل

28-12-2021

1398

تصميم المواقع و التطبيقات NewMediene

بسم الله الرحمن الرحيم ،طريقة تحويل صفحة معينة تقوم بتصميمها بواسطة HTML و CSS إلى ملف بصيغة PDF و تحميلها أو عرضها بضغطة واحدة ، لقد قمت بتصميم مثال بسيط يمكن تجربة ذلك بنفسك ثم تقوم بتطبيق  و تصميم فكرتك .

في هذا المثال نحتاج القليل من أكواد البرمجة PHP - HTML - CSS

1- تحميل مكتبة mpdf جاهزة من موقع Githup بواسطة الملحن
composer ثم فتح الضغط و تعديل إسم المجلد حتى يكون بالمسار vendor/autoload.php
$ composer require mpdf/mpdf

2- ملف index.php سيكون بمثابة الصفحة التي بها أداة أو صندوق لإنشاء ملف PDF
<!DOCTYPE html>
<html>
<head>

<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1" >

<?php require_once '../src/header.php'; ?>

<style>
@import url('https://fonts.googleapis.com/css2?family=Cairo:wght@300&display=swap');

*,*:before,*:after {
padding: 0;
margin: 0;
}

.container {
margin: 0 auto;
max-width: 450px;
font-family: 'Cairo', sans-serif;
font-size: 10pt;
}

.logo a img{
float: right;
width: 70%;
margin: 30px 15%;
}

.msg {
float: right;
width: 90%;
padding: 5px 5%;
background-color: yellow;
margin-bottom: 10px;
color: #333333;
text-align: center;
}

#forminput {
float: right;
width: 90%;
padding: 5%;
background-color: #cccccc;

}#forminput h3 {
float: right;
width: 100%;
padding: 5px 0px;
text-align: center;
background-color: #333333;
color: white;

}#forminput input[type="text"], #forminput input[type="submit"], #forminput textarea {
float: right;
padding: 10px 1%;
margin: 5px 1%;
border: 0px;

}#forminput input[type="text"]{
width: 46%;

}#forminput input[type="submit"]{
width: 48%;
background-color: darkslategrey;
color: white;
cursor:pointer;

}#forminput textarea {
width: 96%;
max-width: 96%;
min-width: 96%;
min-height: 200px;

}

</style>

<link rel="icon" href="http://www.dzworkers.com/files/logo/icon.png" >

<title>تحميل صفحة pdf</title>

</head>

<body>

<div class="container" >

<div class="logo" ><a href="http://www.dzworkers.com" ><img src="http://www.dzworkers.com/files/logo/logo.jpeg" /></a></div>

<?php

// -- DZWORKERS.COM ---------------- /|
// -- DESIGN BY AMMANI BOUMEDIENE -- /|
// -- 12-2021 | ALGERIA SBA -------- /|
// -- FB.COM/NEWMEDIENE ------------ /|

// --- ?>

<form id="forminput" method="POST" action="pdf.php" >

<h3 class="title" >عبأ الخانات الفارغة</h3>

<input type="text" name="title" required>

<textarea name="topic" ></textarea>

<input type="submit" name="dawnload" value="تحميلـ ملفـPDFـ" >

<input type="submit" name="showpage" value="عرضـ ملفـPDFـ" >

</form>

</div>

</body>

</html>

3- ملف pdf.php هو المسؤول على إنشاء الصفحة الخاصة التي تكون بصيغة pdf كما هو المسؤول عن التصميم الخاص بها و يكون مرتبط مع المكتبة mpdf عبر المسار vendor/autoload.php
<!DOCTYPE html>
<html>
<head>

<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">

<link rel="icon" href="http://www.dzworkers.com/files/logo/icon.png" >

<title>طبع الملف</title>
</head>

<body>
<?php

if(isset($_POST["dawnload"]) OR isset($_POST["showpage"])){

require_once __DIR__ . '/vendor/autoload.php';

// حجم الصفحة الحالي هو A4
$mpdf = new \Mpdf\Mpdf(['mode' => 'utf-8', 'format' => 'A4-L']);

$mpdf->autoScriptToLang = true;
$mpdf->autoLangToFont = true;

$mpdf->AddPage("P");

// تصميم الملف بلغة css
$style = "

.pdf{
float: right;
text-align: right;
width: 90%;
padding: 5%;
background-color: darkkhaki;

}.pdf h3{
float: right;
width: 90%;
padding: 0px 5%;
color: #333333;
font-weight: bold;

}.pdf p {
float: right;
width: 100%;
color: #333333;
}
";

$mpdf->WriteHTML($style,\Mpdf\HTMLParserMode::HEADER_CSS);

$title = strip_tags(trim($_POST["title"]));
$topic = strip_tags(trim($_POST["topic"]));


// تصميم الملف بلغة html
$html = "
<div class='pdf' >

<h3>".$title."</h3>

<p>".$topic."</p>

</div>
";

$mpdf->WriteHTML($html,\Mpdf\HTMLParserMode::HTML_BODY);

if(isset($_POST["dawnload"])){

// كود تحميل الملف و يمكن تغيير إسم الملف myPdf
$mpdf->Output("myPdf.pdf","D");

}

if(isset($_POST["showpage"])){

// كود عرض الملف و يمكن تغيير إسم الملف myPdf
$mpdf->Output("myPdf.pdf","I");

}

}else{

echo "Error !";

}//---- ?>

</body>

</html>