Skip to content

Instantly share code, notes, and snippets.

@ajitbohra
Last active March 6, 2024 09:07
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 10 You must be signed in to fork a gist
  • Save ajitbohra/3eb0296265931ddb4e84 to your computer and use it in GitHub Desktop.
Save ajitbohra/3eb0296265931ddb4e84 to your computer and use it in GitHub Desktop.
mpdf: HTML/CSS to PDF & send pdf via email
<?php
/*
mPDF: Generate PDF from HTML/CSS (Complete Code)
*/
require_once( 'mpdf/mpdf.php'); // Include mdpf
$stylesheet = file_get_contents('assets/css/pdf.css'); // Get css content
$html = '<div id="pdf-content">
Your PDF Content goes here (Text/HTML)
</div>';
// Setup PDF
$mpdf = new mPDF('utf-8', 'A4-L'); // New PDF object with encoding & page size
$mpdf->setAutoTopMargin = 'stretch'; // Set pdf top margin to stretch to avoid content overlapping
$mpdf->setAutoBottomMargin = 'stretch'; // Set pdf bottom margin to stretch to avoid content overlapping
// PDF header content
$mpdf->SetHTMLHeader('<div class="pdf-header">
<img class="left" src="assets/img/pdf_header.png"/>
</div>');
// PDF footer content
$mpdf->SetHTMLFooter('<div class="pdf-footer">
<a href="http://www.lubus.in">www.lubus.in</a>
</div>');
$mpdf->WriteHTML($stylesheet,1); // Writing style to pdf
$mpdf->WriteHTML($html); // Writing html to pdf
// FOR EMAIL
$content = $mpdf->Output('', 'S'); // Saving pdf to attach to email
$content = chunk_split(base64_encode($content));
// Email settings
$mailto = $email;
$from_name = 'LUBUS PDF Test';
$from_mail = 'email@domain.com';
$replyto = 'email@domain.com';
$uid = md5(uniqid(time()));
$subject = 'mdpf email with PDF';
$message = 'Download the attached pdf';
$filename = 'lubus_mpdf_demo.pdf';
$header = "From: ".$from_name." <".$from_mail.">\r\n";
$header .= "Reply-To: ".$replyto."\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
$header .= "This is a multi-part message in MIME format.\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$header .= $message."\r\n\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-Type: application/pdf; name=\"".$filename."\"\r\n";
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
$header .= $content."\r\n\r\n";
$header .= "--".$uid."--";
$is_sent = @mail($mailto, $subject, "", $header);
//$mpdf->Output(); // For sending Output to browser
$mpdf->Output('lubus_mdpf_demo.pdf','D'); // For Download
exit;
?>
// Coming Soon
Copy link

ghost commented May 11, 2018

Hi,
How to setup send pdf or html Reports on Daily Basics from librenms server.Pls Help Me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment