I would like to generate a PDF from my HTML script.Now the script is
<?php
require_once __DIR__ . '/vendor/autoload.php';
$mpdf = new \Mpdf\Mpdf();
$mpdf->WriteHTML('<div class="pageContatiner noSelect ui-droppable slctCon"><div onmousedown="objSelection(this)" ontouchstart="objSelection(this)" id="pmObj-1" class="shape obj" style="width: 136.217px; height: 136.217px; position: absolute; transform: matrix(-0.491017, -0.87115, 0.87115, -0.491017, 0, 0); margin-left: 312px; margin-top: 99px;" x="330" y="117" angle="240.59253473738065" scalex="1" scaley="1"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" height="136.2166748046875" width="136.2166748046875"><polygon class="svgObj" fill="rgba(51,122,183,1)" stroke="rgba(51,122,183,0.99)" stroke-width="1" points="96,100 50,5 4,100" width="136.2166748046875" height="136.2166748046875"></polygon></svg></div></div>');
$mpdf->Output();
?>
But the problem is here the triangle icon is showing without rotation.
Save your SVG to a file and link it through an img
element which supports CSS transform: rotate
property:
<img src="triangle.svg" id="pmObj-1" class="shape obj" style="transform: rotate(45deg);">
See more on supported CSS in the documentation.
You may want to try PrinceXML - it is a Linux command-line tool specifically designed to convert HTML + CSS into print-ready PDF. There is a PHP wrapper class and I usually use it like this
include_once("./inc/prince.php");
if($template = @file_get_contents($tmpdir.'/temp/deal/custom/show/pr_offer3.htm'))
{
// populate/fill placeholders in your template with the real values
// e.g. $template = str_replace('{PLACE_HOLDER}', $real_value, $template);
// finally generate the PDF and send it to browser - the class offers
// also possibility to save as file locally on server
$prince = new Prince('/usr/bin/prince');
header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename="offer_'.$_REQUEST['id'].'.pdf"');
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
ob_end_flush();
$prince->setHTML(true);
$prince->setBaseURL('http://my.domain.com'); // to resolve relative URLs in the HTML
$prince->convert_string_to_passthru($template);
}