Tres:
The attached image file illustrates problems that are showing up in the HTML print feature of the QZ-Tray 2.0.0-alpha3 version.
On the left is the output we were able to obtain in the QZ-Tray 1.9.5 version, and on the right is the corresponding result for the 2.0.0-alpha3 version. As you can see, the receipt fails to show the image, the date/time stamp, and the barcode. The Label fails to show everything except the barcode (part of this may be a problem in how the label is aligned for printing).
In addition to the problems mentioned above, upon attempting to print on my HP Deskjet Pro 8600 printer an 8.5x11 page that contained an invoice the following error was reported:
Error: Image or Density is too large for HTML printing
When we saw the improvements made in rendering PDF outputs (e.g. our test PDF documents were showing misaligned outputs in the 1.9.5 version, but were OK in the 2.0.0-alpha3 version) we considered abandoning our HTML capability. Part of this was driven by the following problems with the HTML approach:
1. Proper pagination of a document that spans multiple pages is quite a challenge.
2. The HTML must be scaled up behind the scenes in order to ultimately get a readable barcode.
The PDF approach solves both of these problems. The problem with the PDF approach is that we need to use a PHP program on the server to convert the HTML already generated for use in the web application. This extra time spent on the server may or may not become an issue as we support more and more customers.
So, the problems with the HTML printing are not deal breakers for us, but I thought you might want to be aware of these issues.
Dave
P.S.
The information below shows the HTML that was being rendered.
The receipt is a fabricated example that contains text, an image, and a barcode. The label is an actual excerpt of HTML generated in our web application.
In both examples, the HTML content in the "htmlContent" <div> is what was passed to the HTML print rendering process.
receipt_1.html
--------------
<!DOCTYPE HTML>
<html>
<head>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery-barcode-2.0.2.min.js"></script>
<style>
.print-block
{
display: block !important;
}
.center
{
margin: auto;
text-align: center;
}
.pull-left
{
float: left;
}
.pull-right
{
float: right;
}
#receiptDiv
{
width: 3.0in;
padding-left: 0.0in;
padding-right: 0.0in;
fontSize: 12pt;
}
#company
{
font-size: 20pt;
font-weight: bold;
}
#total
{
font-size: 14pt;
font-weight: bold;
}
</style>
<script type="text/javascript">
function setDateTime()
{
var now,day,month,year,date,hour,min,sec,time;
now = new Date();
day = ("0" + now.getDate()).slice(-2);
month = ("0" + (now.getMonth() + 1)).slice(-2);
year = now.getFullYear();
date = month + "/" + day + "/" + year;
$("#date").html(date);
hour = ("0" + now.getHours()).slice(-2);
min = ("0" + now.getMinutes()).slice(-2);
sec = ("0" + now.getSeconds()).slice(-2);
time = hour + ":" + min + ":" + sec;
$("#time").html(time);
} // setDateTime
function loadBarcode()
{
$("#barcodeDiv").barcode
(
"123456",
"code39", // code39,code128,datamatrix
{
barWidth: 1,
barHeight: 30,
showHRI: true,
fontSize: 12,
output: "css" // css,svg,bmp,canvas(does not work)
}
);
} // loadBarcode
function initialize()
{
setDateTime();
loadBarcode();
} // initialize
</script>
</head>
<body onload="initialize()">
<div class="htmlContent">
<div id="receiptDiv" class="center print-block">
<div>
<img src="img/image_sample_bw.png" width="70" height="35" />
</div>
<br>
<div id="company">
ABC Company
</div>
<br>
<div>
<span id="date" class="pull-left"></span>
<span id="time" class="pull-right"></span>
</div>
<br><br>
<div>
<span class="pull-left">ABC widget</span>
<span class="pull-right">$95.00</span>
</div>
<br>
<div>
<span class="pull-left">Tax</span>
<span class="pull-right">$7.60</span>
</div>
<br><br>
<div id="total">
<span class="pull-left">TOTAL</span>
<span class="pull-right">$102.60</span>
</div>
<br><br>
<div id="barcodeDiv" style="margin:auto"></div>
</div>
<div> <!-- htmlContent -->
</body>
</html>
label_1.html
------------
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="language" content="en">
<link rel="stylesheet" media="all" type="text/css" href="css/print.css">
<link rel="stylesheet" media="all" type="text/css" href="css/print-label.css">
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery-barcode-2.0.2.min.js"></script>
<title></title>
</head>
<body>
<div class="htmlContent">
<!-- <div class="label-row" style="font-size: 10pt;"> -->
<div class="label-row" style="font-size:10pt; width:4.3in">
<div class="name">iPad Audio Flex Cable</div>
<div class="price">$0.00</div>
<div class="barcode sku-barcode center">
<div class="bar-code" style="padding: 0px; overflow: auto; width: 162px; margin: auto;">
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 10px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 2px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 2px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 2px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 2px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 2px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 2px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 2px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 2px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 2px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 2px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 2px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 1px"></div>
<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 40px;"></div>
<div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 40px; width: 10px"></div>
</div>
</div>
<div class="sku small">SKU: MDAP01005</div>
</div>
<div> <!-- htmlContent -->
</body></html>