【问题标题】:How to export multiple html tables and multiple d3 generated graphs into a single pdf如何将多个 html 表和多个 d3 生成的图形导出到单个 pdf 中
【发布时间】:2015-10-27 08:02:24
【问题描述】:

基本上我有多个在 html 中生成的表(数据可能会有所不同取决于数据库中有多少数据,所以我希望 pdf 上的表也可以扩展,这意味着没有固定的大小。)此外,我在同一页面上也有一个 d3 生成的图表。

我想知道的是..有没有办法将页面上显示的所有内容都转换为 pdf 像截图一样?我知道有 phantomJS,但它需要您在本地环境中安装和部署,而我们的项目不允许这样做.. 那么是否有任何第三方库可以导入并用于将它们导出为单个 PDF?

请帮忙

【问题讨论】:

  • 是的,我也在研究它,但是我没有可以遵循的工作示例,所以我仍在尝试进行配置以使其适用于表格部分。但是,我还没有看到任何来自 jspdf 的图形解决方案,如果有 1,请告诉我。再次感谢您的快速回复:)

标签: javascript html pdf d3.js jstl


【解决方案1】:
Using SaveSvg.js

https://gist.github.com/enjoylife/0ae74717a29862c5d8c5

and using jspdf was able to make it work

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;
    image.onload = function() {
      context.drawImage(image, 0, 0);

      //save and serve it as an actual filename
    binaryblob();

      var a = document.createElement("a");
      a.download = "sample.png";
      a.href = canvas.toDataURL("image/png");

    /* Added as png to jspdf */

         var doc = new jsPDF();
   doc.addImage(  a.href, "png", 0,0); 
   doc.save("test.pdf");

       var pngimg = '<img src="'+a.href+'">'; 
       d3.select("#pngdataurl").html(pngimg);

      a.click();
    };

});

jspdf对齐和css很好

http://plnkr.co/edit/nNSvHL8MZcT6nNKg9CG9?p=preview

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    • 2015-07-21
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2010-11-26
    • 2017-06-12
    相关资源
    最近更新 更多