1575
|
1 function beforePrint(event) {
|
|
2 var body = $('body');
|
|
3 body.addClass('print');
|
1562
|
4
|
|
5 // because firefox does not support/executes codes after the cloned document as been rendered
|
|
6 // https://bugzilla.mozilla.org/show_bug.cgi?format=default&id=1048317
|
|
7 // we cannot calculate using the good body size for the clone document
|
|
8 // so we have to hardcode the body width (meaning we can only renders in A4 in firefox);
|
|
9 var uaParser = new UAParser();
|
|
10 var isFirefox = (uaParser.getBrowser().name === 'Firefox');
|
|
11 var isIE = (uaParser.getBrowser().name === 'IE');
|
|
12 var isEdge = (uaParser.getBrowser().name === 'Edge');
|
1575
|
13 //console.log('ua parser', uaParser.getBrowser());
|
|
14
|
|
15 if (isFirefox || isIE || isEdge) {
|
|
16 if (0) {
|
|
17 // This is Letter
|
|
18 body.css('width', '8.5in');
|
|
19 body.css('height', '11in');
|
|
20 } else {
|
|
21 // This is A4
|
|
22 body.css('width', '210mm');
|
|
23 body.css('height', '296mm'); // If using "297mm", Firefox creates a second blank page
|
|
24 }
|
1562
|
25 }
|
|
26
|
1575
|
27 $('#viewport canvas').each(function(key, canvas) {
|
|
28 if ($(canvas).is(':visible')) {
|
|
29 $(canvas).width($(canvas).parent().width());
|
|
30 $(canvas).height($(canvas).parent().height());
|
1563
|
31 }
|
|
32 });
|
1562
|
33
|
1575
|
34 stone.FitForPrint();
|
|
35 };
|
1563
|
36
|
|
37
|
1575
|
38 function afterPrint() {
|
|
39 var body = $('body');
|
|
40 body.removeClass('print');
|
|
41 body.css('width', '100%');
|
|
42 body.css('height', '100%');
|
1563
|
43 $('#viewport canvas').css('width', '100%');
|
|
44 $('#viewport canvas').css('height', '100%');
|
1575
|
45
|
|
46 stone.FitForPrint();
|
1562
|
47 }
|
|
48
|
1575
|
49
|
|
50 window.addEventListener('beforeprint', function(event) {
|
|
51 beforePrint(event);
|
1563
|
52 });
|
|
53
|
1575
|
54
|
1562
|
55 var printMedia = window.matchMedia('print');
|
|
56 printMedia.addListener(function(mql) {
|
1575
|
57 if (mql.matches) {
|
|
58 // webkit equivalent of onbeforeprint
|
1562
|
59 beforePrint();
|
|
60 }
|
|
61 });
|
|
62
|
1575
|
63
|
|
64 window.addEventListener('afterprint', function() {
|
1562
|
65 afterPrint();
|
1575
|
66 });
|
1562
|
67
|
1575
|
68
|
|
69 /*vm.cancelPrintMode = function() {
|
1562
|
70 afterPrint();
|
|
71 }
|
|
72 */
|