PHPology.co.uk Collective of freelance web developers and designers

  • 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 "<p>".$output."</p>";
        echo "<p>".$print_command."</p>";
    }
    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>

  • Comments

    0 comment(s)

    Be the first to comment!

    Add your comment
    Name*:
    Email*:
    Website URL (including full path e.g. http://www.yourwebsite.com/):
    Comment* (html/script tags will be removed):
    What do you see below?: