Printing contents of another page

An alternative is to link to the page with a get variable and then call the print function.

For your link -

<a href="print-page.php?print=1">Print other page</a>

Then on your print page (or all pages)

<script type="text/javascript">
<? if(isset($_GET['print'])) { ?>
window.print();
<? } ?>
</script>

If you already have an external page( letterprint.php ), put that page in a hidden iframe and print the content of iframe by using onclick attribute in a button.

<iframe src="letterprint.php" style="display:none;" name="frame"></iframe>

<input type="button" onclick="frames['frame'].print()" value="printletter">

I know it´s an old question, but you can do it like this:

function printExternal(url) {
    var printWindow = window.open( url, 'Print', 'left=200, top=200, width=950, height=500, toolbar=0, resizable=0');
    printWindow.addEventListener('load', function(){
        printWindow.print();
        printWindow.close();
    }, true);
}

Tested in Firefox and Chrome. IE9 doesn´t work.


Edit 2020-04-03

No longer work on Chrome, code adapted from Coder answer here:

function printExternal(url) {
    var printWindow = window.open( url, 'Print', 'left=200, top=200, width=950, height=500, toolbar=0, resizable=0');

    printWindow.addEventListener('load', function() {
        if (Boolean(printWindow.chrome)) {
            printWindow.print();
            setTimeout(function(){
                printWindow.close();
            }, 500);
        } else {
            printWindow.print();
            printWindow.close();
        }
    }, true);
}