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.
152 righe
3.7 KiB
152 righe
3.7 KiB
/** |
|
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); |
|
};
|
|
|