Non puoi selezionare più di 25 argomenti
Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
153 righe
3.7 KiB
153 righe
3.7 KiB
2 anni fa
|
/**
|
||
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
||
|
Author Igor Vladyka <igor.vladyka@gmail.com> (https://github.com/Igor-Vladyka/leaflet.browser.print)
|
||
|
**/
|
||
|
|
||
|
/* Portrait mode sizes in mm for 0 lvl*/
|
||
|
L.Control.BrowserPrint.Size = {
|
||
|
A: {
|
||
|
Width: 840,
|
||
|
Height: 1188
|
||
|
},
|
||
|
B: {
|
||
|
Width: 1000,
|
||
|
Height: 1414
|
||
|
},
|
||
|
C: {
|
||
|
Width: 916,
|
||
|
Height: 1296
|
||
|
},
|
||
|
D: {
|
||
|
Width: 770,
|
||
|
Height: 1090
|
||
|
},
|
||
|
LETTER: {
|
||
|
Width: 216,
|
||
|
Height: 279
|
||
|
},
|
||
|
HALFLETTER: {
|
||
|
Width: 140,
|
||
|
Height: 216
|
||
|
},
|
||
|
LEGAL: {
|
||
|
Width: 216,
|
||
|
Height: 356
|
||
|
},
|
||
|
JUNIORLEGAL: {
|
||
|
Width: 127,
|
||
|
Height: 203
|
||
|
},
|
||
|
TABLOID: {
|
||
|
Width: 279,
|
||
|
Height: 432
|
||
|
},
|
||
|
LEDGER: {
|
||
|
Width: 432,
|
||
|
Height: 279
|
||
|
}
|
||
|
};
|
||
|
|
||
|
L.Control.BrowserPrint.Mode = function(mode, title, pageSize, action, invalidateBounds) {
|
||
|
if (!mode) {
|
||
|
throw 'Print mode should be specified.';
|
||
|
}
|
||
|
|
||
|
this.Mode = mode;
|
||
|
this.Title = title || mode;
|
||
|
this.PageSize = (pageSize || 'A4').toUpperCase();
|
||
|
this.PageSeries = ["A", "B", "C", "D"].indexOf(this.PageSize[0]) != -1 ? this.PageSize[0] : "";
|
||
|
this.PageSeriesSize = this.PageSize.substring(this.PageSeries.length);
|
||
|
this.Action = action || function(context, element) {
|
||
|
return function() {
|
||
|
context['_print' + element.Mode](element);
|
||
|
};
|
||
|
};
|
||
|
this.InvalidateBounds = invalidateBounds;
|
||
|
};
|
||
|
|
||
|
L.Control.BrowserPrint.Mode.Landscape = "Landscape";
|
||
|
L.Control.BrowserPrint.Mode.Portrait = "Portrait";
|
||
|
L.Control.BrowserPrint.Mode.Auto = "Auto";
|
||
|
L.Control.BrowserPrint.Mode.Custom = "Custom";
|
||
|
|
||
|
L.Control.BrowserPrint.Mode.prototype.getPageMargin = function(type) {
|
||
|
var size = this.getPaperSize();
|
||
|
var marginInMm = ((size.Width + size.Height) / 39.9);
|
||
|
var result;
|
||
|
|
||
|
switch (type) {
|
||
|
case "mm":
|
||
|
result = marginInMm.toFixed(2) + "mm";
|
||
|
break;
|
||
|
case "in":
|
||
|
result = (marginInMm / 25.4).toFixed(2) + "in";
|
||
|
break;
|
||
|
default:
|
||
|
result = marginInMm;
|
||
|
break;
|
||
|
|
||
|
}
|
||
|
return result;
|
||
|
};
|
||
|
|
||
|
L.Control.BrowserPrint.Mode.prototype.getPaperSize = function(){
|
||
|
if (this.PageSeries) {
|
||
|
var series = L.Control.BrowserPrint.Size[this.PageSeries];
|
||
|
var w = series.Width;
|
||
|
var h = series.Height;
|
||
|
var switchSides = false;
|
||
|
if (this.PageSeriesSize) {
|
||
|
this.PageSeriesSize = +this.PageSeriesSize;
|
||
|
switchSides = this.PageSeriesSize % 2 === 1;
|
||
|
if (switchSides) {
|
||
|
w = w / (this.PageSeriesSize - 1 || 1);
|
||
|
h = h / (this.PageSeriesSize + 1);
|
||
|
} else {
|
||
|
w = w / this.PageSeriesSize;
|
||
|
h = h / this.PageSeriesSize;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
Width: switchSides ? h : w,
|
||
|
Height: switchSides ? w : h
|
||
|
};
|
||
|
} else {
|
||
|
var size = L.Control.BrowserPrint.Size[this.PageSeriesSize];
|
||
|
return {
|
||
|
Width: size.Width,
|
||
|
Height: size.Height
|
||
|
};
|
||
|
}
|
||
|
};
|
||
|
|
||
|
L.Control.BrowserPrint.Mode.prototype.getSize = function(){
|
||
|
var size = this.getPaperSize();
|
||
|
var margin = this.getPageMargin() * 2 * (window.devicePixelRatio || 1);
|
||
|
|
||
|
size.Width = Math.floor(size.Width - margin) + 'mm';
|
||
|
size.Height = Math.floor(size.Height - margin) + 'mm';
|
||
|
|
||
|
return size;
|
||
|
};
|
||
|
|
||
|
L.control.browserPrint.mode = function(mode, title, type, action, invalidateBounds){
|
||
|
return new L.Control.BrowserPrint.Mode(mode, title, type, action, invalidateBounds);
|
||
|
}
|
||
|
|
||
|
L.control.browserPrint.mode.portrait = function(title, pageSize, action) {
|
||
|
return L.control.browserPrint.mode(L.Control.BrowserPrint.Mode.Portrait, title, pageSize, action, false);
|
||
|
};
|
||
|
|
||
|
L.control.browserPrint.mode.landscape = function(title, pageSize, action) {
|
||
|
return L.control.browserPrint.mode(L.Control.BrowserPrint.Mode.Landscape, title, pageSize, action, false);
|
||
|
};
|
||
|
|
||
|
L.control.browserPrint.mode.auto = function(title, pageSize, action) {
|
||
|
return L.control.browserPrint.mode(L.Control.BrowserPrint.Mode.Auto, title, pageSize, action, true);
|
||
|
};
|
||
|
|
||
|
L.control.browserPrint.mode.custom = function(title, pageSize, action) {
|
||
|
return L.control.browserPrint.mode(L.Control.BrowserPrint.Mode.Custom, title, pageSize, action, true);
|
||
|
};
|