From 852ac3cd550f3173556c168e81677e8d8d7b262c Mon Sep 17 00:00:00 2001 From: David Hudson Date: Wed, 31 Aug 2016 23:03:48 +0900 Subject: [PATCH] [Enhancement] Quick prototype of PDF export --- bower.json | 4 +++- main.js | 19 +++++++++++++++++++ platform/features/plot/src/GLChart.js | 2 +- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/bower.json b/bower.json index 7c913754cf..670cbd4b70 100644 --- a/bower.json +++ b/bower.json @@ -18,6 +18,8 @@ "node-uuid": "^1.4.7", "comma-separated-values": "^3.6.4", "FileSaver.js": "^0.0.2", - "zepto": "^1.1.6" + "zepto": "^1.1.6", + "html2canvas": "^0.4.1", + "jspdf": "^1.2.61" } } diff --git a/main.js b/main.js index 268c70060d..668f3409e2 100644 --- a/main.js +++ b/main.js @@ -28,6 +28,8 @@ requirejs.config({ "angular-route": "bower_components/angular-route/angular-route.min", "csv": "bower_components/comma-separated-values/csv.min", "es6-promise": "bower_components/es6-promise/promise.min", + "html2canvas": "bower_components/html2canvas/build/html2canvas.min", + "jspdf": "bower_components/jspdf/dist/jspdf.min", "moment": "bower_components/moment/moment", "moment-duration-format": "bower_components/moment-duration-format/lib/moment-duration-format", "saveAs": "bower_components/FileSaver.js/FileSaver.min", @@ -43,6 +45,9 @@ requirejs.config({ "angular-route": { "deps": ["angular"] }, + "html2canvas": { + "exports": "html2canvas" + }, "moment-duration-format": { "deps": ["moment"] }, @@ -59,6 +64,8 @@ define([ './platform/framework/src/Main', 'legacyRegistry', + 'html2canvas', + 'jspdf', './platform/framework/bundle', './platform/core/bundle', './platform/representation/bundle', @@ -95,6 +102,18 @@ define([ './platform/status/bundle', './platform/commonUI/regions/bundle' ], function (Main, legacyRegistry) { + setTimeout(function() { + var plotEl = document.getElementsByClassName('gl-plot')[0]; + + html2canvas(plotEl, { + onrendered: function(htmlCanvas) { + var pdf = new jsPDF('l', 'px', [plotEl.offsetHeight, plotEl.offsetWidth]); + pdf.addImage(htmlCanvas.toDataURL('image/jpeg', 2.0), 'JPEG', 0, 0, plotEl.offsetWidth, plotEl.offsetHeight); + pdf.save("plot.pdf"); + } + }); + }, 5000); + return { legacyRegistry: legacyRegistry, run: function () { diff --git a/platform/features/plot/src/GLChart.js b/platform/features/plot/src/GLChart.js index 56ca29bb3e..348a64f923 100644 --- a/platform/features/plot/src/GLChart.js +++ b/platform/features/plot/src/GLChart.js @@ -54,7 +54,7 @@ define( * @throws {Error} an error is thrown if WebGL is unavailable. */ function GLChart(canvas) { - var gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl"), + var gl = canvas.getContext("webgl", { preserveDrawingBuffer: true }) || canvas.getContext("experimental-webgl", { preserveDrawingBuffer: true }), vertexShader, fragmentShader, program,