• Stars
    star
    245
  • Rank 165,304 (Top 4 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 10 years ago
  • Updated almost 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A leaflet plugin which adds an icon to print the map - Demo @ http://rowanwins.github.io/leaflet-easyPrint/

leaflet-easyPrint

A simple leaflet plugin which adds an icon to print or export a map.

Features

  • Supports resizing to predefined sizes (A4 Landscape & Portrait) as well as custom sizes
  • Supports saving to png, as well as printing
  • Compatible with both Leaflet v1+ and 0.7
  • Tested on Chrome, Firefox
    • Incompatible with IE & Edge due to dom-to-image dependency

Check out the demo.

Download

You can either download this repo directly or install via NPM.

npm install leaflet-easyprint

Options

You can pass a number of options to the plugin to control various settings.

Option Type Default Description
title string 'Print map' Sets the text which appears as the tooltip of the print/export button
position Leaflet control position 'topleft' Positions the print button
sizeModes array Current Options available include Current, A4Portrait, A4Landscape or a custom size object
defaultSizeTitles object {Current: 'Current Size', A4Landscape: 'A4 Landscape', A4Portrait: 'A4 Portrait'} button tooltips for the default page sizes
exportOnly Boolean false If set to true the map is exported to a png file
tileLayer Leaflet tile layer null A tile layer that you can wait for to draw (helpful when resizing)
tileWait Integer 500 How long to wait for the tiles to draw (helpful when resizing)
filename string 'map' Name of the file if export only option set to true
hidden Boolean false Set to true if you don't want to display the toolbar. Instead you can create your own buttons or fire print events programmatically. You still need to call addTo(map) to set the leaflet map context.
hideControlContainer Boolean true Hides the leaflet controls like the zoom buttons and the attribution on the print out.
hideClasses array [] Hides classes on the print out. Use an array of strings as follow : ['div1', 'div2']
customWindowTitle string Defaults to title of map window. A title for the print window which will get added the printed paper.
spinnerBgColor string '#0DC5C1' A valid css colour for the spinner background color.
customSpinnerClass string 'epLoader' A class for a custom css spinner to use while waiting for the print.

Example

L.easyPrint({
	title: 'My awesome print button',
	position: 'bottomright',
	sizeModes: ['A4Portrait', 'A4Landscape']
}).addTo(map);

Methods / Using programmatically

Method Options Description
printMap(size, filename) Print size name, either 'CurrentSize', 'A4Portrait', 'A4Landscape', or the className of a custom size. And a filename Manually trigger a print operation
var printPlugin = L.easyPrint({
	hidden: true,
	sizeModes: ['A4Portrait']
}).addTo(map); 
printPlugin.printMap('A4Portrait', 'MyFileName');

Custom Print Sizes

You can create additional print sizes by passing in some options. Width & Height are defined in pixels at 90DPI. THe css class ought to contain a background base64 encoded svg image.

var a3Size = {
	width: 2339,
	height: 3308,
	className: 'a3CssClass',
	tooltip: 'A custom A3 size'
}

// in css 
.easyPrintHolder .a3CssClass { 
  background-image: url(data:image/svg+xml;utf8;base64,PD9...go=);
}

Acknowledgements

Huge hats off go to mourner and all the contributors to the leaflet.js project, it's an amazing piece of open source software!

Also uses dom-to-image and FileSaver under the hood.

More Repositories

1

vue-dropzone

A Vue.js component for Dropzone.js - a drag’n’drop file uploads utility with image previews
Vue
2,017
star
2

point-in-polygon-hao

A point in polygon library based on the paper "Optimal Reliable Point-in-Polygon Test and Differential Coding Boolean Operations on Polygons" by Hao
JavaScript
119
star
3

sweepline-intersections

A small module using a sweepline algorithm to detect intersections (& self-intersections) in polygons or polylines.
JavaScript
64
star
4

Leaflet.SvgShapeMarkers

Additional SVG shape marker types for leaflet.js
JavaScript
51
star
5

visibility-graph

Visibility graph implementation to support shortest path calculations such as dijkstra or a-star
JavaScript
50
star
6

polygon-splitter

A small (<10kb minified) javascript library for splitting polygons by a polyline.
JavaScript
47
star
7

mapbox-gl-arcgis-featureserver

A library for retrieving features from an ArcGIS FeatureServer or MapServer. This library makes tiled requests rather than simply requesting every feature.
JavaScript
45
star
8

geojson-editor

A simple online editor for geojson
Vue
39
star
9

shamos-hoey

A module to check if a polygon self-intersects
JavaScript
29
star
10

maplibregl-mapbox-request-transformer

Transform mapbox:// urls in MapboxGL Styles for use in MapLibreGL.
JavaScript
26
star
11

arcgis-pbf-parser

A library for converting an arcgis-pbf into a geojson FeatureCollection.
JavaScript
21
star
12

mapbox-gl-flatgeobuf

A little library for mapbox-gl that provides a tiled approach to consuming flatgeobuf files.
JavaScript
21
star
13

turf-builder

A simple UI for generating custom browserify builds of Turf.js
HTML
20
star
14

geotiff-server

WIP
JavaScript
19
star
15

mbtiles-extractor

Take tiles from an mbtiles file locally (eg vector tiles) and extracts them to ZXY structure in an S3 bucket or locally.
JavaScript
11
star
16

kwc-lineclip

Line clipping based on the algorithm by Kodituwakka, Wijeweera & Chamikara
JavaScript
11
star
17

geojson-buffer

WIP progress for buffering (aka offset) geojson
JavaScript
10
star
18

smallest-enclosing-circle

An implementation of Welzl's algorithm for calculating the smallest enclosing circle of a set of points
JavaScript
10
star
19

leaflet-simplestyle

Extends L.geoJSON to support the simplestyle spec with 1kb
JavaScript
9
star
20

bentley-ottmann-intersections

A module to check if a polygon self-intersects using the bentley-ottmann algorithm
JavaScript
7
star
21

vue-file-picker

A fairly minimal file picker & drop area which aims to stay out of the way of your application.
Vue
6
star
22

esri-leaflet-stream

A plugin for Esri Leaflet that enables consuming Stream Services published by ArcGIS for Server.
JavaScript
6
star
23

supercluster-server

A node.js server to publish super-cluster services from databases or shapefiles
JavaScript
5
star
24

sweepline-simplify

A module for creating simple polygons out of self-intersecting polygons
JavaScript
4
star
25

vector-to-grid

Convert geojson to a grid/raster
JavaScript
4
star
26

po-box

This simple tool for checking for the presence of, and extracting PO Box details from an address string.
JavaScript
4
star
27

date-fns-startOf

Equivalent of the startOf method in moment.js
JavaScript
3
star
28

tippecanoe-ui

A UI wrapper for tippecanoe using electron
JavaScript
3
star
29

geometry-js-links

A bunch of links related to computational geometry and javascript
3
star
30

geotiff-pbf

Store geotiffs as protocol buffers
JavaScript
3
star
31

stac-helper

JavaScript
3
star
32

boolean-jsts

JavaScript
2
star
33

polyline-splitter

A small (<10kb minified) javascript library for splitting geojson polylines by other polylines.
TypeScript
2
star
34

shp-to-geojson

WIP
JavaScript
2
star
35

convex-hull-wp

A convex hull implementation based on the paper by Wijeweera & Pinidiyaarachchi
JavaScript
2
star
36

generate-point-in-polygon

A small module to generate a point in a polygon in O(n) time.
JavaScript
2
star
37

triangulation-wk

A basic triangulation implementation based on work by Wijeweera & Kodituwakku
JavaScript
1
star
38

vue3-vite-antd-pinia-ts-starter

Less
1
star
39

leaflet-pinnacle-marker

A plugin for leafletjs to create a pinnacle style marker.
JavaScript
1
star
40

proj4-on-demand

proj4-on-demand is a JavaScript library to transform point coordinates from one coordinate system to another, including datum transformations. This library is based on proj but aims to be more light-weight while incoporating extra functionality.
JavaScript
1
star