PHP Printer() function with custom font styling using CSS
I had a task for a potential project where I required PHP to print to a network printer.
Problem was that with the general PHP printer function I was struggling to
1. handle large amounts of text and
2. add styling (although using printer_draw_text() did help, but the text would not wordwrap).
Anyway, whilst searching the net, there was not much around on how to solve this problem so I came up with a way using HTML2PDF. Now I was able to prepare the text needed (adding my styling, etc), export it out as a PDF document and have that ready to print but using the windows command "print" (should work fine for *nix environment too).
Below is the outline of the code used (p.s. its not the cleanest)
<?php $filename = 'html-template.html'; //basically contains the html code including the styling if nessesary which will be converted into the PDF $pdf_filename = date("YmdHis").'.pdf'; $print_command = "print /D:NETWORK-NAMEPRINTER-NAME "".$_SERVER['DOCUMENT_ROOT'].$pdf_filename."""; //send print command to printer with the pdf document path to print //load in the template to convert to PDF $handle = fopen($filename, "r"); $contents = fread($handle, filesize($filename)); fclose($handle); //load in the text you need here. $comment = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries"; //replace the ##COMMENT## within the contents variable $contents = str_replace("##COMMENT##", $comment, $contents); // conversion HTML =--> PDF require(PDFHTML_URL."html2pdf.class.php"); try { $html2pdf = new HTML2PDF('L','A4','en', true, 'UTF-8', 'ISO-8859-15'); $html2pdf->pdf->SetDisplayMode('fullpage'); $html2pdf->writeHTML($contents); $html2pdf->Output($pdf_filename, 'f'); } catch(HTML2PDF_exception $e) { echo $e; } echo $contents; //debug if($_GET['do'] == "print") { system($print_command, $output); echo "".$output."
"; echo "".$print_command."
"; } exit; ?>
The contents within my html-template.html is (which follows the HTML2PDF example):
<page> <table> <tr> <td> <h1>##COMMENT##</h1> </td> </tr> </table> </page>