pdfkit svg

by brian20181109

HTML

<script src="https://github.com/devongovett/pdfkit/releases/download/v0.6.2/pdfkit.js"></script>
<script src="https://github.com/devongovett/blob-stream/releases/download/v0.1.2/blob-stream-v0.1.2.js">
    </script>

<script src="http://d3js.org/d3.v3.min.js"></script>


<div id="svg"></div>
	<button id="save">Save as Image</button>
	<div id="svgdataurl"></div>
	<canvas width="1920" height="1000" style="display:none"></canvas>

 <img>
 </img>

CSS

path {
  stroke: #000;
  fill-opacity: .8;
}

JavaScript

var width = 960,
    height = 500;

var m = 5, // number of series
    n = 90; // number of values

// Generate random data into five arrays.
var data = d3.range(m).map(function() {
  return d3.range(n).map(function() {
    return Math.random() * 100 | 0;
  });
});

var x = d3.scale.linear()
    .domain([0, n - 1])
    .range([0, width]);

var y = d3.scale.ordinal()
    .domain(d3.range(m))
    .rangePoints([0, height], 1);

var color = d3.scale.ordinal()
    .range(["#98abc5", "#8a89a6", "#7b6888", "#6b486b", "#a05d56"]);

var area = d3.svg.area()
    .interpolate("basis")
    .x(function(d, i) { return x(i); })
    .y0(function(d) { return -d / 2; })
    .y1(function(d) { return d / 2; });

var svg = d3.select("#svg").append("svg")
    .attr("width", width)
    .attr("height", height);
svg.append("text").text(" 中文").attr("font-size", "20px").attr("x",100).attr("y",100);

svg.selectAll("path")
    .data(data)
  .enter().append("path")
    .attr("transform", function(d, i) { return "translate(0," + y(i) + ")"; })
    .style("fill", function(d, i) { return color(i); })
    .attr("d", area);




/*d3.select("#save").on("click", function(){
  var html = d3.select("svg")
        .attr("version", 1.1)
        .attr("xmlns", "http://www.w3.org/2000/svg")
        .node().parentNode.innerHTML;

  //console.log(html);
  var imgsrc = 'data:image/svg+xml;base64,'+ btoa(html);
  console.log(imgsrc);
  var img = '<img src="'+imgsrc+'">'; 
  d3.select("#svgdataurl").html(img);

});*/


d3.select("#save").on("click", function(){
  var html = d3.select("svg")
        .attr("version", 1.1)
        .attr("xmlns", "http://www.w3.org/2000/svg")
        .node().parentNode.innerHTML;
 
  //console.log(html);
  var imgsrc = 'data:image/svg+xml;base64,'+ btoa(html);

  var img = '<img src="'+imgsrc+'">'; 
  d3.select("#svgdataurl").html(img);
 
 
  var canvas = document.querySelector("canvas"),
	  context = canvas.getContext("2d");
 
  var image = new Image;
  image.src = imgsrc;
 ...