|
@@ -3,6 +3,7 @@ window.pdfjsLib.GlobalWorkerOptions.workerSrc = '/printer_bridge/static/lib/js/p
|
|
|
// Tools
|
|
|
openerp.pdfJs = window.pdfjsLib || _.noop();
|
|
|
openerp.printJs = window.printJS || _.noop();
|
|
|
+openerp.html2canvas = window.html2canvas || _.noop();
|
|
|
|
|
|
/**
|
|
|
*
|
|
@@ -140,6 +141,7 @@ openerp.printer_bridge = function (instance, local) {
|
|
|
},
|
|
|
get_from_server: function (url) {
|
|
|
instance.web.blockUI();
|
|
|
+
|
|
|
return $.Deferred(function (d) {
|
|
|
instance.web.jsonRpc(url, 'call').done(function () {
|
|
|
instance.web.unblockUI();
|
|
@@ -170,7 +172,26 @@ openerp.printer_bridge = function (instance, local) {
|
|
|
var mime_type = 'data:application/pdf;base64,';
|
|
|
|
|
|
if (data instanceof Uint8Array) {
|
|
|
- data = mime_type + btoa(String.fromCharCode.apply(null, data));
|
|
|
+ var Uint8ArrayToStr = function (u8a) {
|
|
|
+ var CHUNK_SZ = 0x8000;
|
|
|
+ var c = [];
|
|
|
+ for (var i = 0; i < u8a.length; i += CHUNK_SZ) {
|
|
|
+ c.push(String.fromCharCode.apply(null, u8a.subarray(i, i + CHUNK_SZ)));
|
|
|
+ }
|
|
|
+
|
|
|
+ return c.join('');
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ data = Uint8ArrayToStr(data);
|
|
|
+ data = btoa(data);
|
|
|
+ data = mime_type + data;
|
|
|
+ } catch (error) {
|
|
|
+ instance.web.unblockUI();
|
|
|
+ instance.webclient.crashmanager.show_message(error);
|
|
|
+
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (!data.startsWith(mime_type)) {
|
|
@@ -184,9 +205,9 @@ openerp.printer_bridge = function (instance, local) {
|
|
|
print_directly: print_directly || this.config.print_directly,
|
|
|
data: data
|
|
|
});
|
|
|
- } catch (e) {
|
|
|
+ } catch (error) {
|
|
|
instance.web.unblockUI();
|
|
|
- instance.webclient.crashmanager.show_message(e);
|
|
|
+ instance.webclient.crashmanager.show_message(error);
|
|
|
}
|
|
|
}
|
|
|
});
|
|
@@ -614,9 +635,6 @@ openerp.printer_bridge = function (instance, local) {
|
|
|
template: 'TicketTestPage',
|
|
|
events: {
|
|
|
'click .ticket-test-btn': 'print_test'
|
|
|
- },
|
|
|
- start: function () {
|
|
|
-
|
|
|
},
|
|
|
print_test: function (e) {
|
|
|
e.preventDefault();
|
|
@@ -627,29 +645,30 @@ openerp.printer_bridge = function (instance, local) {
|
|
|
|
|
|
$('body').append(wrapper);
|
|
|
|
|
|
- // var ticket_el = $('body').find('.eiru_pos_ticket').get(0);
|
|
|
var ticket_el = document.querySelector('.eiru_pos_ticket');
|
|
|
-
|
|
|
- console.log(ticket_el);
|
|
|
-
|
|
|
- var pdf = new jsPDF({
|
|
|
- unit: 'mm',
|
|
|
- format: [290, 70]
|
|
|
- });
|
|
|
+ var factor = 3.779;
|
|
|
|
|
|
instance.html2canvas(ticket_el, {
|
|
|
- canvas: pdf.canvas,
|
|
|
logging: false,
|
|
|
- removeContainer: true,
|
|
|
- width: 264.5,
|
|
|
- height: 1016.6
|
|
|
+ width: 70 * factor
|
|
|
}).then(function (canvas) {
|
|
|
- console.log(canvas);
|
|
|
- });
|
|
|
+ $(wrapper).remove();
|
|
|
|
|
|
- // var data = pdf.output('datauristring');
|
|
|
- // console.log(data);
|
|
|
- // local.print(data);
|
|
|
+ var dataURL = canvas.toDataURL('image/png');
|
|
|
+
|
|
|
+ var width = canvas.width / factor;
|
|
|
+ var height = canvas.height / factor;
|
|
|
+
|
|
|
+ var doc = new jsPDF({
|
|
|
+ unit: 'mm',
|
|
|
+ format: [height, 70]
|
|
|
+ });
|
|
|
+
|
|
|
+ doc.addImage(dataURL, 'PNG', 0, 0, width, height);
|
|
|
+ var data = doc.output('datauristring');
|
|
|
+
|
|
|
+ local.print(data);
|
|
|
+ });
|
|
|
}
|
|
|
});
|
|
|
|