首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用d3从SVG JavaScript图导出PDF

使用d3从SVG JavaScript图导出PDF
EN

Stack Overflow用户
提问于 2019-06-25 06:25:55
回答 1查看 1.7K关注 0票数 0

我试图将SVG d3图表导出到pdf文件,使用jsPDF和JavaScript。

我正在使用jsPDF导出pdf文件。我可以导出文件,但只有较少的内容。

代码语言:javascript
复制
$("#exportPDF").click(() => {
      let svg = new XMLSerializer().serializeToString(document.getElementById("Employement_Source"));
      let canvas = document.createElement("canvas");
      let ctx = canvas.getContext("2d");
      let doc = new jsPDF({orientation: 'l', unit: 'px'});
      let img = document.createElement("img");
      img.setAttribute("src", "data:image/svg+xml;base64," + btoa(svg));
      img.onload = () => {
        ctx.drawImage(img, 0, 0);
        console.log(canvas.toDataURL("image/png"));
        doc.setFontSize(11);
        doc.text(5, 10, 'D3 Chart');
        doc.addImage(canvas.toDataURL("image/png"), 'PNG', 10, 10, 200, 100);
        doc.save('download.pdf');
      };
    });

期待一个完整的图表,在导出的pdf文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-27 08:03:26

下面是我最近面临的问题的解决方案。我有画布尺寸,这样我就能得到完整的图表。

代码语言:javascript
复制
$("#exportPDF").click(() => {
      let svg = new XMLSerializer().serializeToString(document.getElementById("Employement_Source"));
      let canvas = document.createElement("canvas");
      let svgSize = $(svg)[0];
      // let svgSize = $(svg)[0].getBoundingClientRect();
      canvas.width = svgSize.width.baseVal.value;
      canvas.height = svgSize.height.baseVal.value;

      let ctx = canvas.getContext("2d");
      let doc = new jsPDF({
        orientation: 'l',
        unit: 'px'
      });
      let img = document.createElement("img");
      img.onload = () => {
        ctx.drawImage(img, 0, 0);
        // console.log(canvas.toDataURL("image/png"));
        doc.setFontSize(11);
        doc.text(5, 10, 'D3 Chart');
        doc.addImage(canvas.toDataURL("image/png"), 'PNG', 10, 10);
        doc.save('download.pdf');
      };
      img.setAttribute("src", "data:image/svg+xml;base64," + btoa(svg));
    });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56747989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档